Skip to content

About

Event-driven social media approval bot with Telegram

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

openadapt-crier

Important

Status: Internal tooling — not the product. Crier is release-announcement automation used by the OpenAdapt team. It is not part of the OpenAdapt product and is not required by any OpenAdapt package.

The OpenAdapt product is the demonstration compiler, openadapt-flow, installed via the OpenAdapt launcher (pip install openadapt): it compiles a demonstrated GUI workflow into a deterministic, locally executable program. Healthy runs make no model calls, and it halts instead of guessing when verification fails. Lifecycle labels for every repository are in the repository lifecycle registry.

Event-driven social media approval bot with Telegram.

How it works

Crier watches GitHub repositories for new commits, releases, and merged PRs. When activity is detected, it uses an LLM (Claude) to score how interesting the event is. Events that pass the interest threshold get platform-specific draft posts generated automatically. Drafts are sent to a Telegram bot for human review, where you can approve, edit, or reject them. On approval, posts are dispatched to Discord, Twitter/X, and LinkedIn via openadapt-herald.

GitHub Events ──> Watcher ──> Drafter (LLM) ──> Telegram Bot ──> Dispatcher ──> Herald ──> Social Platforms
  (commits,        (polls       (scores           (approve,       (posts to      (publish)   (Discord,
   releases,        GitHub       interest,          edit, or        selected                   Twitter,
   merged PRs)      API)         generates          reject)         platforms)                 LinkedIn)
                                 drafts)

Quick start

pip install .

# Required env vars
export CRIER_TELEGRAM_BOT_TOKEN="your-telegram-bot-token"
export CRIER_TELEGRAM_OWNER_ID="your-telegram-user-id"
export CRIER_REPOS="owner/repo1,owner/repo2"
export ANTHROPIC_API_KEY="your-anthropic-key"

# Optional: platform credentials for posting
export DISCORD_WEBHOOK_URL="..."
export TWITTER_CONSUMER_KEY="..."
export TWITTER_CONSUMER_SECRET="..."
export TWITTER_ACCESS_TOKEN="..."
export TWITTER_ACCESS_TOKEN_SECRET="..."
export LINKEDIN_ACCESS_TOKEN="..."

# Start the bot
crier run

CLI commands

Command Description
crier run Start the bot and watcher loop (runs forever)
crier status Show bot status and configuration summary
crier draft <owner/repo> Generate a one-shot draft for a repo (no Telegram, no posting)
crier drafts List recent drafts, with optional --status and --platform filters
crier history Show posting history

Configuration

All settings can be set via CRIER_-prefixed environment variables or a .env file:

Variable Description Default
CRIER_TELEGRAM_BOT_TOKEN Telegram bot token (required)
CRIER_TELEGRAM_OWNER_ID Telegram user ID for approvals (required)
CRIER_REPOS Comma-separated owner/repo list (required)
CRIER_GITHUB_TOKEN GitHub API token (higher rate limits) $GH_TOKEN
CRIER_ANTHROPIC_API_KEY Anthropic API key $ANTHROPIC_API_KEY
CRIER_POLL_INTERVAL Seconds between polls 60
CRIER_INTEREST_THRESHOLD Minimum score (0-10) to generate drafts 5.0
CRIER_DRY_RUN Skip actual posting false

Telegram bot commands

Once the bot is running, these commands are available in Telegram:

  • /start -- Show help
  • /status -- Bot status and pending draft count
  • /history -- Recent posting history
  • /draft <owner/repo> -- Manually trigger a draft

Draft messages include inline buttons to Approve, Edit, or Reject, plus per-platform toggles (Twitter, Discord, LinkedIn).

Tests

132 tests covering all modules:

pip install ".[dev]"
pytest

License

MIT -- see LICENSE.

About

Event-driven social media approval bot with Telegram

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages