The marketing intern that never sleeps.
Open-source framework that generates and publishes marketing content across 6 platforms from a single command.
Marketing was eating 2+ hours/day as a solo founder. So I built myself an intern. After one week: 14k+ impressions, 700+ website visits, ~5 min/day of my time. (results on Gradeasy)
Click to watch an AI-generated Instagram Reel
| Platform | Content | Generate | Publish | In-Context Learning |
|---|---|---|---|---|
| Reels, Carousels | ✅ | ✅ | ✅ | |
| X / Twitter | Replies, Threads | ✅ | ✅ | ✅ |
| Comments, Posts | ✅ | ✅ | - | |
| Posts, Images, Videos, Docs | ✅ | 🚧 WIP | - | |
| YouTube | Shorts | ✅ | ✅ | - |
| Bulk outreach | ✅ | ✅ | - |
In-Context LearningLearns from your top-performing posts. The more you post, the better it matches your voice. |
Brand TemplatesFigma MCP + YAML templates. Your fonts, colors, layout. AI fills the content. |
Engagement AutomationFinds relevant conversations, writes contextual replies, posts with human-like timing. |
Email BatchingCSV in, 100 personalized emails out. Picks up where it left off. |
Real-Time DashboardLive progress, streaming logs, approve/reject per item. One click to publish all. |
Modular AdaptersAdd a platform with zero changes to core. Ports-and-adapters architecture. |
git clone https://github.com/thearnavrustagi/marketmenow.git && cd marketmenow && bash setup.sh
Edit .env with your API keys, then:
uv run mmn-web # Dashboard at http://localhost:8000
Manual setupRequirements: Python 3.12+, uv (setup.sh installs it). Docker recommended for PostgreSQL. Node.js 18+ only if you want Instagram Reels.
git clone https://github.com/thearnavrustagi/marketmenow.git
cd marketmenow
uv sync
docker compose up -d
cp .env.example .env
uv run playwright install chromium
cd src/adapters/instagram/reels/remotion && npm install && cd -
uv run mmn-web
Platform credentials
You only need credentials for the platforms you use:
| Platform | What you need |
|---|---|
INSTAGRAM_ACCESS_TOKEN, INSTAGRAM_BUSINESS_ACCOUNT_ID |
|
| Twitter/X | TWITTER_AUTH_TOKEN, TWITTER_CT0 (or mmn auth twitter) |
REDDIT_SESSION cookie, REDDIT_USERNAME |
|
LINKEDIN_ACCESS_TOKEN (or LINKEDIN_LI_AT cookie) |
|
| YouTube | Google OAuth 2.0 (mmn auth youtube) |
SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_FROM |
|
| AI (all) | GOOGLE_APPLICATION_CREDENTIALS, VERTEX_AI_PROJECT |
# Workflows (primary interface)
mmn workflows # List all workflows
mmn run instagram-reel --template can_ai_grade_this --tts kokoro
mmn run instagram-carousel
mmn run twitter-thread --topic "AI in marketing"
mmn run twitter-engage --headless --max-replies 10
mmn run reddit-engage --max-comments 5
mmn run reddit-launch -c campaigns/my-campaign.yaml -b blog-draft.md --dry-run
mmn run linkedin-post --count 3 --dry-run
mmn run email-outreach -t template.html --to [email protected]
mmn run youtube-short --video video.mp4 --title "My Short"
# Authentication
mmn auth twitter --cookies
mmn auth linkedin --oauth
mmn auth youtube
# Info
mmn workflows # List available workflows
mmn run <workflow> --info # Detailed help for a workflow
mmn platforms # List supported platforms
mmn version # Show version
# Distribute pre-built content
mmn distribute -c content.json --only instagram,linkedin
Customizing for your brand
All brand identity lives in YAML files, not code. Repurpose the entire tool for your product in under an hour.
Prompts (text content: tweets, carousels, LinkedIn, Reddit, email):
prompts/ and replace Gradeasy with your brand name, URL, and audience keywords.prompts/<platform>/.MENTION STRATEGY section controlling how often your brand appears.Or use the meta-prompt in prompts/prompt.md to generate entire prompt YAML files with any AI chat.
Reels (video content):
The existing reels are purpose-built for Gradeasy's concept. For your product you'll want a completely different reel — different narrative, different scenes, different voice. The reel template meta-prompt in src/adapters/instagram/reels/templates/prompt.md lets you paste your brand details and reel concept into ChatGPT / Claude and get back both files you need:
Drop them into src/adapters/instagram/reels/templates/ and prompts/instagram/, then run mmn reel create --template your_id. Full schema reference, available scenes, transitions, and pipeline steps are all in that file.
Ports-and-adapters design. The core engine knows nothing about any specific platform. Each adapter implements PlatformAdapter, ContentRenderer, and Uploader protocols.
graph LR
subgraph core [Core]
direction TB
Scheduler --> Orchestrator
Orchestrator --> Pipeline
Pipeline --> Normaliser
end
subgraph ports [Protocols]
direction TB
Renderer["ContentRenderer"]
Uploader["Uploader"]
Adapter["PlatformAdapter"]
end
subgraph adapters [Adapters]
direction TB
IG["Instagram"]
TW["Twitter / X"]
RD["Reddit"]
LI["LinkedIn"]
YT["YouTube"]
EM["Email / SMTP"]
end
Pipeline --> Renderer
Pipeline --> Uploader
Pipeline --> Adapter
IG -.-> Adapter
TW -.-> Adapter
RD -.-> Adapter
LI -.-> Adapter
YT -.-> Adapter
EM -.-> Adapter
Pipeline: Normalise -> Render -> Upload -> Publish
Adding a platform: Create src/adapters/yourplatform/, implement the protocols, register with AdapterRegistry. Zero changes to core.
Checked items are shipped. Unchecked items are planned or in progress.
AdapterRegistry — add a platform with zero changes to coreSee CONTRIBUTING.md for development setup, code style, and the PR process.