Automated social media content from development activity
Project description
Social Hook
The marketing engine built for devs.
Social Hook watches your development, drafts what matters, and publishes where your audience lives. It evaluates every commit, decides what's post-worthy, drafts platform-native content in your voice, and routes it for approval — or runs fully autonomous.
Try It Out
pip install social-hook
social-hook quickstart /path/to/repo
Quickstart auto-detects your LLM provider, registers your project, imports commit history, analyzes your repo, and generates your first draft. To evaluate your last few commits through the full pipeline:
social-hook quickstart /path/to/repo --evaluate-last 3
To activate automatic triggers on every future commit:
social-hook project install-hook /path/to/repo
Then open the dashboard to see your drafts:
social-hook web
For Humans
Web Dashboard
The web dashboard is the primary interface for managing your content pipeline:
social-hook web
- Draft review — approve, reject, schedule, edit content and media
- Setup wizard and quick preview mode for onboarding
- Project management with commit history import
- Real-time notifications via WebSocket
- Media generation and preview
- Settings across 14 configuration sections
- Chat interface for bot commands
CLI Setup Wizard
For terminal-based configuration:
social-hook setup # Guided setup (strategy, identity, platforms, voice, audience, keys)
social-hook setup --advanced # Include scheduling, media, rate limits
social-hook setup --only voice # Configure a single section
Messaging Channels
Social Hook separates notification channels (where you review drafts) from publishing platforms (where content gets posted). A platform-agnostic messaging adapter layer means channels are pluggable:
- Web — built-in. Notifications appear in the dashboard via WebSocket. Always available.
- Telegram — review and approve drafts from your phone.
social-hook bot start
The adapter abstraction (MessagingAdapter) makes adding new channels (Slack, Discord, etc.) straightforward — each adapter handles send, edit, and callback independently.
For Agents
Social Hook is agent-first. Every capability is accessible programmatically:
social-hook help --json # Full command tree as structured JSON
social-hook help draft approve --json # Drill into any subcommand
social-hook quickstart /path/to/repo --json # Structured output from quickstart
- Every CLI command has a corresponding web API endpoint (and vice versa)
- All commands work non-interactively with
--jsonoutput and--yes/--forceflags - Exit codes: 0 = success, 1 = user error, 2 = system error
How It Works
- Detect — A git post-commit hook fires on every commit (installed per-project, works with any editor or agent)
- Evaluate — An AI evaluator decides if the commit is post-worthy, assigns narrative arcs and episode types
- Draft — Platform-native content is drafted in your voice, with per-platform identity and optional media
- Publish — Drafts are scheduled, approved, or posted autonomously via platform adapters
Features
- Narrative Arcs — groups commits into storylines so posts tell a coherent story over time
- Media Generation — diagrams, code screenshots, diff images — generated and attached automatically
- Smart Scheduling — rate limits, optimal timing, posting cadence
- Multi-Platform — X, LinkedIn, Bluesky, Mastodon, custom platforms with per-platform identity
- Content Strategies — bundled templates (Build in Public, Release Updates, Curated Technical, Custom)
- Brand Discovery — AI analyzes your repo to understand what you're building and generate context
- Plugin System — custom evaluators, drafters, media tools, platform adapters
- Decision Rewind — undo a pipeline decision and all its downstream artifacts
- Batch Evaluate — evaluate multiple commits holistically in one pass
Free for Claude Code Users
If you have a Claude Code subscription, set your LLM provider to claude-cli/sonnet — zero additional API cost. Social Hook uses the Claude CLI as a backend, so your existing subscription covers all LLM calls.
Multi-Provider LLM
Social Hook supports multiple LLM providers via a provider/model-id format:
anthropic/claude-sonnet-4-5— Anthropic API (default)claude-cli/sonnet— Claude Code subprocess (free for subscribers)openrouter/anthropic/claude-sonnet-4.5— OpenRouterollama/llama3.3— Local Ollama
Documentation
Full documentation: nj-io.github.io/social-hook/docs
Configuration
Social Hook uses a two-level config system:
- Global config (
~/.social-hook/config.yaml) — API keys, platform credentials, LLM provider settings - Project config (
.social-hook/in your repo) —social-context.md(project voice/context),content-config.yaml(content rules)
Contributing
See CONTRIBUTING.md for development setup, running checks, and PR guidelines.
Versioning
Social Hook uses Semantic Versioning. Releases are automated via Release Please — conventional commits on main trigger version bumps, changelog generation, and PyPI publishing.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file
social_hook-0.9.0-py3-none-any.whl.File metadata
File hashes
284462c2965f7f297a8d530a1bfb149fa7b078a844a5656d75ce5d28d8e0fed0f4d77f45966e444c083649339447a567bb5d0b5686bfe6f61c62dd9a58abde27a44671702fed96aa4096eebb54cff531See more details on using hashes here.