Skip to main content

Social Hook — The marketing engine built for devs

Social Hook

The marketing engine built for devs.

CI codecov PyPI Python 3.10+ License: MIT

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 --json output and --yes/--force flags
  • Exit codes: 0 = success, 1 = user error, 2 = system error

How It Works

  1. Detect — A git post-commit hook fires on every commit (installed per-project, works with any editor or agent)
  2. Evaluate — An AI evaluator decides if the commit is post-worthy, assigns narrative arcs and episode types
  3. Draft — Platform-native content is drafted in your voice, with per-platform identity and optional media
  4. 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 — OpenRouter
  • ollama/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

MIT

Metadata

Release files for social-hook 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for social-hook 0.9.0
File Interpreter ABI Platform Actions
social_hook-0.9.0-py3-none-any.whl Python 3 none any Details for social_hook-0.9.0-py3-none-any.whl

Release files / social_hook-0.9.0-py3-none-any.whl

Download URL social_hook-0.9.0-py3-none-any.whl
Size 323.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
284462c2965f7f297a8d530a1bfb149fa7b078a844a5656d75ce5d28d8e0fed0
BLAKE2b-256 checksum
How to use checksums
bb5d0b5686bfe6f61c62dd9a58abde27a44671702fed96aa4096eebb54cff531
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Security for social-hook 0.9.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.0 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page