Promotion as Code - Automate your app promotion across social media platforms
Project description
AetherPost - Promotion as Code
🚀 AI-powered social media automation for developers
AetherPost automates your app promotion across social media platforms using AI-generated content and Infrastructure-as-Code principles.
✨ Features
OSS Edition (Free)
- 🎯 Declarative configuration - Define campaigns in YAML
- 🤖 AI-generated content - OpenAI GPT-powered posts
- 📱 Multi-platform support - Twitter, Reddit, YouTube, Bluesky, Instagram (5 platforms)
- 🆕 Universal profile management - Sync profiles across all platforms automatically
- 🔒 Secure - Encrypted credential storage with .env.aetherpost
- ⚡ Auto-setup mode - Zero-prompt initialization for AI tools
- 📊 Smart notifications - Slack/LINE preview notifications
- 🎨 Style options - Casual, professional, technical, humorous
- 🌍 Multi-language - 20+ languages supported
- 📝 Usage limits - 50 posts/day, 5 campaigns
Key Capabilities
- 🚀 Two setup modes - Auto-setup (Claude Code) vs Interactive prompts
- 🔄 Terraform-style workflow - init, plan, apply commands
- 📱 Notification modes - Preview confirmations or auto-posting
- 🎯 API tier system - Starter, Recommended, Advanced, Complete
- ⚡ Production ready - 100% tested with real API validation
🚀 Quick Start
AetherPost supports two setup modes based on file detection:
🤖 Auto Setup Mode
For automated workflows with pre-configured files
# 1. Install AetherPost
pip install aetherpost
# 2. Pre-create configuration files:
# - campaign.yaml (project settings)
# - .env.aetherpost (API keys)
# 3. Auto-initialize (zero prompts)
aetherpost init
# 4. Preview and deploy
aetherpost plan && aetherpost apply
📝 Interactive Setup Mode (Manual Configuration)
For step-by-step guided setup
# 1. Install AetherPost
pip install aetherpost
# 2. Interactive setup with prompts
aetherpost init
# 3. Preview and deploy
aetherpost plan && aetherpost apply
Auto-Detection: If
campaign.yamlexists → Auto Setup Mode, otherwise → Interactive Setup Mode
📋 Configuration Examples
Complete campaign.yaml
name: "my-awesome-app"
concept: "AI-powered task manager that learns your habits"
url: "https://github.com/user/my-awesome-app"
platforms:
- twitter
- reddit
- youtube
content:
style: professional # casual, professional, technical, humorous
action: "Try it free!"
language: en # en, ja, es, fr, de, ko, zh, pt, ru, ar, etc.
hashtags:
- "#AI"
- "#ProductivityTool"
- "#OpenSource"
limits:
free_tier: true
max_posts_per_day: 50
notifications:
enabled: true # Send preview notifications
auto_apply: false # Require confirmation (set true for auto-posting)
# Optional: Template hint for advanced features
template: "production" # starter, production, enterprise
API Configuration (.env.aetherpost)
# AI Services (Required)
OPENAI_API_KEY=sk-proj-your_openai_key_here
# Twitter (Required for Twitter platform)
TWITTER_API_KEY=your_twitter_api_key_here
TWITTER_API_SECRET=your_twitter_api_secret_here
TWITTER_ACCESS_TOKEN=your_twitter_access_token_here
TWITTER_ACCESS_TOKEN_SECRET=your_twitter_access_token_secret_here
# Reddit (Required for Reddit platform)
REDDIT_CLIENT_ID=your_reddit_client_id_here
REDDIT_CLIENT_SECRET=your_reddit_client_secret_here
REDDIT_USERNAME=your_reddit_username_here
REDDIT_PASSWORD=your_reddit_password_here
# YouTube (Required for YouTube platform)
YOUTUBE_CLIENT_ID=your_youtube_client_id_here
YOUTUBE_CLIENT_SECRET=your_youtube_client_secret_here
# Notifications (Optional)
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/your/webhook/url
Multi-Language Examples
# Japanese Campaign
content:
style: casual
action: "今すぐ試してみてください!"
language: ja
hashtags: ["#AI", "#生産性", "#ツール"]
# Spanish Campaign
content:
style: professional
action: "Pruébalo ahora"
language: es
hashtags: ["#IA", "#Productividad"]
Supported Languages: English (en), Japanese (ja), Spanish (es), French (fr), German (de), Korean (ko), Chinese (zh), Portuguese (pt), Russian (ru), Arabic (ar), and more.
🔧 Commands (Terraform-style)
| Command | Description | Mode |
|---|---|---|
aetherpost init |
Initialize workspace (auto-detects existing config) | Auto/Interactive |
aetherpost plan |
Preview AI-generated content for all platforms | Both |
aetherpost apply |
Execute campaign (respects notification settings) | Both |
aetherpost status |
Check campaign status and analytics | Both |
aetherpost auth |
Manage API authentication | Both |
Notification Modes
- Preview Mode (
notifications.enabled: true) - Sends preview notification before posting - Auto Mode (
notifications.auto_apply: true) - Posts immediately without confirmation
🔑 API Requirements
Quick Reference
| Level | APIs Required | Monthly Cost | Setup Time |
|---|---|---|---|
| Starter | OpenAI + Twitter | $5-15 | ~10 min |
| Recommended | $5-15 | ~20 min | |
| Advanced | + YouTube | $10-25 | ~30 min |
| Complete | + Bluesky + Instagram | $15-35 | ~45 min |
💡 Auto Setup: The
aetherpost initcommand guides you through API collection with direct setup links and validation.
📖 Documentation
For AI Tools & Claude Code
| Document | Purpose | Use Case |
|---|---|---|
| AUTO_SETUP_README.md | Auto-setup guide | Zero-prompt automation |
| sample-campaign.yaml | Configuration template | File generation |
| sample.env.aetherpost | API keys template | Environment setup |
For Manual Setup
| Document | Purpose |
|---|---|
| Getting Started | Step-by-step guide |
| API Requirements | API setup levels |
| Platform Setup | Platform integration |
🤝 Contributing
AetherPost welcomes all contributors! We're an AI-friendly OSS project that supports modern development workflows.
🤖 AI-Assisted Development Welcome
- ✅ Claude Code, GitHub Copilot, and other AI tools fully supported
- ✅ AI-generated code accepted (with proper review and testing)
- ✅ Co-author credit for AI contributions encouraged
🔰 Beginner-Friendly
- 📖 GUI Setup Guide - No command line required!
- 📋 Code Guidelines - Comprehensive standards
- 🛠️ Contributing Guide - Step-by-step process
🎯 Contribution Opportunities
- New platform connectors (Instagram, LinkedIn, TikTok)
- AI provider integrations (Google Gemini, local models)
- Analytics and visualization
- Documentation and tutorials
- Bug fixes and improvements
Get started: CONTRIBUTING.md | Need help? GitHub Discussions
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
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 Distribution
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 aetherpost-1.11.1.tar.gz.
File metadata
- Download URL: aetherpost-1.11.1.tar.gz
- Upload date:
- Size: 275.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bed04401acdd9fdf571c2580f9976b3c29131e8618c442ebad6ea4d474af0735
|
|
| MD5 |
d1889910feee312b47b1dd3a81a3e4d8
|
|
| BLAKE2b-256 |
8825620918fa59abf091bacb2a299730f716174b8ed07a7f843b5bfa497bd9c2
|
File details
Details for the file aetherpost-1.11.1-py3-none-any.whl.
File metadata
- Download URL: aetherpost-1.11.1-py3-none-any.whl
- Upload date:
- Size: 344.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f352582cb7b646f62916b38d81cf0588ff972be7dbdf9e6a948969e312da767
|
|
| MD5 |
353e33f4f7fcd6ca9a713fc9c8fe48c1
|
|
| BLAKE2b-256 |
65f9a278ddf7952061a8df85a5dcefe67dfc304905c90ad913f7a1c197194fa9
|