name: postall version: 1.0.0 description: AI-powered multi-platform social media content generation and publishing automation. Generate, review, and publish content across Twitter, LinkedIn, Instagram, Pinterest, Threads, and Xiaohongshu. homepage: https://postall.live repository: https://github.com/qingxuantang/postall metadata: emoji: "๐ฎ" category: "content-automation" platforms: ["twitter", "linkedin", "instagram", "pinterest", "threads", "xiaohongshu", "wechat"] ai_providers: ["anthropic", "openai", "google"]
PostAll - AI Agent Integration
AI-powered multi-platform content automation. Generate, review, and publish across all social platforms from a single configuration.
Skill Files
| File | URL |
|---|---|
| SKILL.md (this file) | https://postall.live/skill.md |
| skill.json (metadata) | https://postall.live/skill.json |
Quick install for agents:
curl -s https://postall.live/skill.md > ~/.postall/SKILL.md
curl -s https://postall.live/skill.json > ~/.postall/skill.json
What PostAll Does
- Content Generation - AI creates platform-optimized posts from your brand guidelines
- Director Review - Second AI reviews for quality, brand alignment, factual accuracy
- Image Generation - Auto-generate matching visuals with correct dimensions per platform
- Multi-Platform Publishing - Publish to Twitter, LinkedIn, Instagram, Pinterest, Threads, Xiaohongshu
- RLHF Learning - System improves from feedback over time
- Scheduling - Optimal posting times per platform
Quick Start
Option 1: Docker (Recommended)
# Clone and setup
git clone https://github.com/qingxuantang/postall.git
cd postall
cp .env.example .env
# Configure API keys in .env
# ANTHROPIC_API_KEY=your_key (or OPENAI_API_KEY or GEMINI_API_KEY)
# Start
docker-compose up -d
Option 2: Local Installation
git clone https://github.com/qingxuantang/postall.git
cd postall
pip install -e .
cp .env.example .env
# Edit .env with your API keys
Core CLI Commands
All commands use the format: python -m postall.cli <command> --project <path/to/project.yaml>
Generate Content
# Generate content for all platforms
python -m postall.cli generate --project projects/example/project.yaml
# Generate for specific platform
python -m postall.cli generate --project projects/example/project.yaml --platform twitter
# Generate with specific AI model
python -m postall.cli generate --project projects/example/project.yaml --model claude
Publish Content
# Publish all pending content
python -m postall.cli publish --project projects/example/project.yaml
# Publish to specific platform
python -m postall.cli publish --project projects/example/project.yaml --platform linkedin
Run as Daemon
# Continuous operation - auto generate and publish
python -m postall.cli daemon --project projects/example/project.yaml
Check Status
# View system status
python -m postall.cli status --project projects/example/project.yaml
# Review generated content
python -m postall.cli review --project projects/example/project.yaml
Docker Commands
# Start PostAll
docker-compose up -d
# View logs
docker-compose logs -f postall
# Stop
docker-compose down
# Restart
docker-compose restart
# Execute CLI inside container
docker exec postall python -m postall.cli status --project /app/projects/example/project.yaml
Telegram Bot Integration
PostAll includes a Telegram bot for monitoring and control. Each project gets its own bot.
Bot Commands (in Telegram)
| Command | Description |
|---|---|
/start |
Initialize the bot |
/status |
View current system status |
/upcoming |
Posts scheduled for next 24 hours |
/schedule |
Today's posting schedule |
/stats |
Recent publishing statistics |
/generate |
Trigger content generation for next week |
/publish |
Manually trigger publishing |
/help |
Show all commands |
Bot Menu Buttons
- Upcoming - View posts in the next 24 hours
- Schedule - Today's scheduled posts
- Stats - Publishing statistics by platform
- Content Status - Next week's content status
- Generate - Start content generation
Setting Up Telegram Bot
- Create a bot via @BotFather
- Get your bot token
- Add to
.env:TELEGRAM_BOT_ENABLED=true TELEGRAM_BOT_TOKEN=your_bot_token TELEGRAM_CHAT_ID=your_chat_id
Project Configuration
Create a project.yaml file to define your brand and content strategy:
project_name: "My Brand"
brand:
name: "My Brand"
tagline: "Your Tagline"
website: "mybrand.com"
colors:
primary: "#3498DB"
secondary: "#2ECC71"
accent: "#E74C3C"
voice:
tone: "professional yet friendly"
characteristics:
- "clear and concise"
- "helpful and educational"
- "trustworthy and authentic"
avoid:
- "aggressive sales language"
- "overpromising or hype"
- "technical jargon"
content_strategy:
pillars:
product_education: 35
industry_insights: 25
tips_productivity: 20
customer_stories: 10
behind_scenes: 5
lead_magnet: 5
themes:
- "Getting Started"
- "Best Practices"
- "Common Mistakes"
- "Success Stories"
platforms:
twitter:
enabled: true
language: "en"
linkedin:
enabled: true
language: "en"
instagram:
enabled: false
pinterest:
enabled: false
timezone: "America/Los_Angeles"
generation_schedule:
day: "saturday"
time: "09:00"
posting_times:
twitter: ["08:00", "12:00", "18:00"]
linkedin: ["07:30", "12:00"]
Environment Variables
# AI Providers (at least one required)
ANTHROPIC_API_KEY= # Claude API
OPENAI_API_KEY= # GPT-4 API
GEMINI_API_KEY= # Gemini API
# Twitter/X
TWITTER_ENABLED=true
TWITTER_API_KEY=
TWITTER_API_SECRET=
TWITTER_ACCESS_TOKEN=
TWITTER_ACCESS_SECRET=
# LinkedIn
LINKEDIN_ENABLED=true
LINKEDIN_ACCESS_TOKEN=
LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=
LINKEDIN_PERSON_URN=
# Instagram (Meta)
INSTAGRAM_ENABLED=false
INSTAGRAM_ACCESS_TOKEN=
INSTAGRAM_BUSINESS_ACCOUNT_ID=
# Pinterest
PINTEREST_ENABLED=false
PINTEREST_ACCESS_TOKEN=
# Telegram Bot
TELEGRAM_BOT_ENABLED=false
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
Content Generation Flow
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Brand Config โโโโโโถโ AI Generation โโโโโโถโ Director Review โ
โ (project.yaml) โ โ (Claude/GPT/ โ โ (Quality Check) โ
โ โ โ Gemini) โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Publishing โโโโโโโ Human Review โโโโโโโ Content Ready โ
โ (Platforms) โ โ (Optional) โ โ (Approved) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ RLHF Learning โ
โ (Improvement) โ
โโโโโโโโโโโโโโโโโโโ
Director Review System
The Director is a second AI that reviews generated content for:
- Brand Alignment - Does it match your voice and tone?
- Quality Standards - Is it well-written and engaging?
- Platform Fit - Is it optimized for the target platform?
- Factual Accuracy - No fabricated statistics or claims
- Compliance - No problematic content
Posts receive a score. Low-scoring posts can be regenerated automatically.
Supported Platforms
| Platform | Publishing | Image Support | Notes |
|---|---|---|---|
| Twitter/X | โ | โ | Threads supported |
| โ | โ | Personal & Company pages | |
| โ | โ | Requires Meta Business | |
| โ | โ | Pin creation | |
| Threads | โ | โ | Meta Threads API |
| Xiaohongshu | โ | โ | Card generation + publishing |
| โ | โ | Article publishing |
Image Generation
PostAll automatically generates images optimized for each platform:
- Twitter: 1200x675 (16:9)
- LinkedIn: 1200x627 (1.91:1)
- Instagram: 1080x1080 (1:1)
- Pinterest: 1000x1500 (2:3)
Recommended: Use Gemini Pro for image generation (best quality).
RLHF Learning
The system learns from your feedback:
- Rate Content - Mark posts as good, bad, or needs improvement
- Custom Feedback - Provide specific notes on what to change
- Auto-Learning - System adjusts future generations based on patterns
Agent Integration Patterns
Pattern 1: Scheduled Generation
Set up weekly content generation with auto-publish:
# In your agent's scheduled tasks
import subprocess
def weekly_content_generation():
# Generate content
subprocess.run([
"python", "-m", "postall.cli", "generate",
"--project", "projects/mybrand/project.yaml"
])
# Publish approved content
subprocess.run([
"python", "-m", "postall.cli", "publish",
"--project", "projects/mybrand/project.yaml"
])
Pattern 2: On-Demand Generation
Generate content when triggered by your agent:
# Generate a single post for a specific topic
python -m postall.cli generate \
--project projects/mybrand/project.yaml \
--topic "New product feature announcement" \
--platform twitter
Pattern 3: Monitor via Telegram
Let your agent receive status updates via Telegram bot, then take action based on results.
File Structure
postall/
โโโ postall/ # Core library
โ โโโ cli.py # Command-line interface
โ โโโ config.py # Configuration management
โ โโโ cloud/ # Cloud services
โ โ โโโ daemon.py # Background daemon
โ โ โโโ generation_controller.py
โ โ โโโ telegram_bot.py
โ โโโ director/ # AI review system
โ โ โโโ director.py
โ โโโ executors/ # AI model executors
โ โ โโโ claude_api_executor.py
โ โ โโโ gemini_api_executor.py
โ โ โโโ gemini_image_executor.py
โ โโโ publishers/ # Platform publishers
โ โ โโโ twitter_publisher.py
โ โ โโโ linkedin_publisher.py
โ โ โโโ instagram_publisher.py
โ โ โโโ xhs_publisher.py
โ โโโ learning/ # RLHF system
โ โโโ feedback_collector.py
โ โโโ rlhf_manager.py
โโโ projects/
โ โโโ example/ # Example project
โ โโโ project.yaml
โ โโโ output/ # Generated content
โ โโโ database/ # Persistent data
โโโ docker-compose.yml
โโโ Dockerfile
โโโ .env.example
Critical Rules
When using PostAll, follow these rules to avoid common issues:
- NO parentheses in content - ๆฌๅทไผๅฏผ่ด LinkedIn ๅ ๅฎน่ขซๆชๆญ
- NO AI clichรฉs - ้ฟๅ ใไน ไน ไธ่ฝๅนณ้ใใ้ๆผไบๆใใ้ข ่ฆ่ฎค็ฅใ็ญ็ฉบๆด่กจ่พพ
- NO fabricated data - ๅชไฝฟ็จๅๅงๅ ๅฎนไธญ็็ๅฎไฟกๆฏ๏ผไธ่ฆ็ผ้ ็ป่ฎกๆฐๆฎ
- Image prompts in English - AI ๅพๅ็ๆๅจๆ ๆณๆธฒๆไธญๆๅญ็ฌฆ
- Image prompts must reference a concrete object or scene, not the abstract thesis - ้ ๅพๅฟ ้กปๅบไบไธไธชๅ ทไฝ็ฉไปถๆๅบๆฏ๏ผไธ่ฆ็จๆ็ซ ็ๆฝ่ฑก่ฎบ็นใ Models like Gemini produce generic geometric blocks or flowing color shapes when given abstract conceptual phrases like "components dissolving" or "intelligence augmentation." Read the post body, find one concrete thing it mentions โ a vintage radio with a TV camera pointed at it, a presentation slide with a score badge, a stack of old books, a key, a bridge โ and use that as the image hero element. The abstract thesis is conveyed through the literal scene, not through the prompt language. โ ๆจกๅๅฏนๆฝ่ฑกๆฆๅฟต่ฏ๏ผไพๅฆใ็ปไปถๆญฃๅจๆถ่งฃใใAI ้ๅกๅทฅ็จๅธ่ง่ฒใ๏ผๅบๅพ้ฝๆฏๅ ไฝ blocks ๆๆตๅจ่ฒๅ๏ผๆฒกๆ่ง่ง่ฎฐๅฟ็นใๅฟ ้กปไปๆ็ซ ้ๆพไธไธชๅ ทไฝ็็ฉไปถๆๅบๆฏ๏ผ็จ้ฃไธชไฝไธบ image ไธปไฝใๆฝ่ฑก่ฎบ็น้่ฟๅ ทไฝๅบๆฏ่ฎฉ่ฏป่ ่ชๅทฑๆๅบๆฅใ
- Handle rate limits gracefully - ้ๅฐๅนณๅฐ้ๅถๆถ็ญๅพ ๅ้่ฏ
- *WeChat: use _content.md files - Content parser ๅฏ่ฝ้่ฏฏๅๅฒๅ็ฏๆ็ซ ๏ผๅๅธๆถๆฐธ่ฟไฝฟ็จๅฎๆด็
*_content.mdๆไปถ๏ผๅฆwechat_content.md๏ผ๏ผไธ่ฆไฝฟ็จๅๅฒๅ็ๅฐๆไปถ๏ผๅฆ01_monday_morning_article.md๏ผ
Content File Structure
When content is generated, you'll see:
wechat-posts/
โโโ wechat_content.md # โ
ๅฎๆดๅ
ๅฎน - ๅๅธๆถ็จ่ฟไธช
โโโ 01_monday_morning_article.md # โ ๅฏ่ฝ่ขซๆชๆญ
โโโ 02_tuesday_morning_post.md # โ ๅฏ่ฝ่ขซๆชๆญ
โโโ ...
Always publish using the *_content.md file, not the numbered split files.
Troubleshooting
Common Issues
Content not publishing:
# Check platform credentials
python -m postall.cli status --project project.yaml
# View detailed logs
docker-compose logs -f postall | grep ERROR
Rate limits:
- Twitter: 1 post per platform per posting slot
- LinkedIn: Respect 100 posts/day limit
- Instagram: 25 posts/day limit
Image generation failing:
- Ensure
GEMINI_API_KEYis set - Check quota limits on Google AI Studio
Third-Party Integration Policy
PostAll's official docs do not recommend, endorse, or document third-party SaaS middlemen for any platform action โ content collection, posting, scheduling, scraping, authentication proxying, or anything that routes user credentials or content through an external service.
This includes but is not limited to: Twitter/X middleman APIs, "agent-friendly" social scrapers, hosted content-collection services, and any closed-source plugin that requires users to give a third party their platform credentials or session cookies.
Why this policy exists
- A doc that says "install package X" is read by users as a tacit endorsement from the maintainers, even when the README disclaims it.
- Third-party SaaS integrations introduce supply chain risk that PostAll cannot audit. Today's benign version is tomorrow's malicious release.
- "Optional integration" PRs are increasingly generated by AI coding agents at scale and submitted to many OSS repos as a free marketing channel. See the
codex/*PR pattern observed in 2026. - PostAll's value is in clean, auditable, first-party publisher implementations. Routing through a middleman defeats that.
What we accept instead
- Users are free to integrate anything they want in their own project fork or downstream automation.
- Third-party tool authors are free to publish their own README documenting how to use their package alongside PostAll. That belongs in the third-party's repo, not in PostAll's.
- PRs that add a first-party publisher for a platform PostAll doesn't yet support are welcome โ code and config, not links to a hosted service.
- PRs that add defensive controls against credential leakage, prompt injection, or supply-chain risk are welcome.
PRs we will close on sight
- PRs that add
install <third-party-package>/pip install <middleman>/npm install @vendor/xinstructions to any official doc. - PRs that propose docs changes from a branch prefixed
codex/,chatgpt-*,copilot-*, or other AI-agent autogeneration patterns when the substance is third-party promotion. - PRs whose validation checklist reads like a generic AI boilerplate (
markdown-link-check,git diff --check,python -m compileall) and whose substantive change is one ad block repeated across multiple files.
We close these without merging, regardless of how defensively-framed the proposed text is. Defensive framing is a known social-engineering pattern.
Resources
- Website: https://postall.live
- GitHub: https://github.com/qingxuantang/postall
- Demo Video: https://youtube.com/shorts/12EMDFuA8mc
- Platform Setup Guide: https://github.com/qingxuantang/postall/blob/master/docs/PLATFORM_SETUP.md
License
MIT License - Free to use and modify.
Last updated: 2026-03-04