PostStack
Self-hosted social media management for Facebook, Instagram, YouTube, Telegram & Gmail -- publish & schedule posts, auto-reply to DMs, comments and emails, and run drip sequences, all from one place.
API Docs | Issues | Contributing
[!TIP]
✅ No verified / approved Meta app required
To run PostStack on your own Facebook & Instagram accounts you do not need to pass Meta
App Review or Business Verification. Every feature — inbox, auto-reply, comment→DM, drip
sequences — works under Meta's default Standard Access. App Review is only needed if you
operate other people's accounts (an agency / reseller setup).
👉 Meta Access Levels — what needs App Review (and what doesn't)
Why PostStack?
- Self-hosted -- your data stays on your server, not on someone else's SaaS
- No per-contact fees -- ManyChat charges $15-65/mo and scales with your audience. PostStack is a flat self-hosted cost, free to run yourself
- No vendor lock-in -- export your data, switch providers, fork the code
- API-first operations -- publishing, inbox, CRM, rules, and automation are available via REST for custom frontends and n8n/Zapier; interactive account connection stays in the logged-in dashboard
- Extensible -- add new platforms (Telegram, TikTok) by implementing one TypeScript class
Alternative to: ManyChat, Chatfuel, ZernFlow
For: solopreneurs, agencies, and developers who want full control over their social media automation.
Features
Messaging
- Auto-reply rules -- triggers for keywords (exact, contains, starts with), comment keywords, postbacks, welcome messages, story replies/mentions, emoji reactions, and fallback/default
- Comment automation -- reply publicly under the comment, send a private DM (Meta
private_replies), or both -- scoped to a specific post or all posts, on Facebook and Instagram
- AI rephrasing -- optionally rewrite any reply (including a random pool) through an OpenAI-compatible endpoint before sending
- AI-drafted replies (PRO) -- when no auto-reply rule matches an incoming comment/DM and the channel has AI-draft enabled, an LLM prepares a draft reply for human approval; plus an on-demand "Generate reply" button in the inbox. Drafts are reviewed/edited/accepted/rejected in the inbox thread (and the Approvals tab) -- never auto-sent by default; optional per-channel auto-send toggles (DM / public, default off, consent-gated). Uses the same
AI_* config (BYOK); daily budget via AI_DRAFT_DAILY_LIMIT (default 0 = unlimited)
- Live inbox -- manage all conversations, reply manually, assign to team members
- Drip sequences -- timed message series with configurable delays between steps
CRM
- Contact management -- full-text search, tag filtering, subscription management
- Tags -- organize contacts with color-coded tags
- Conversation history -- full message thread with sent/failed status tracking
Platform
- Multi-platform -- Facebook, Instagram, YouTube, Telegram, and Gmail (two-way reply/inbox channel) live today, extensible to WhatsApp, SMS, generic email and more by implementing one TypeScript provider class
- One-command startup --
docker compose up
- NocoDB integration -- optional spreadsheet view of all your data (rules, contacts, messages)
- API-first operations -- scoped Bearer-key access with interactive Scalar docs
Security
- AES-256-GCM encryption for OAuth tokens at rest
- Rate limiting on auth endpoints (Postgres-backed)
- JWT session invalidation on logout (Postgres denylist)
- HMAC-SHA256 webhook signature verification
- Per-channel webhook secrets
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗