Generate a full month of social content in minutes. Paste in your niche and audience — get back a structured, ready-to-schedule calendar with varied hooks, body copy, CTAs, and hashtags.
Free tier (no API key needed):
--demo — generates a complete 7-day real estate sample calendar, zero API calls--version — print skill version--compliance-only — check any copy for forbidden words before postingFree tier (API key required):
Premium features (same API key, no upgrade needed):
--days=30 — full 30-day calendars--platforms=all — LinkedIn + X + Facebook + Instagram in one run--ab-variants — 2 hook variants per post for A/B testing--csv — export to CSV for Buffer, Hootsuite, Notion, or any scheduler--theme — weekly theme override (e.g., "Week 2: objection busting only")Generates structured content calendars for any niche with:
NicheExample brand voiceReal estateMarket urgency, local expertise, lifestyleMortgage / lendingEducation-first, trust-building, compliance-safeCrypto / DeFiData-driven, opportunity framing, risk-awareSaaS / techProblem-solution, feature → benefit, ROI focusE-commerceProduct-led, social proof heavy, seasonal hooksCoaching / consultingAuthority positioning, transformation storiesHealthcare / wellnessEmpathy-first, outcome-focused, evidence-backedAny nichePass --niche="your niche" and --audience="your audience"
bash
# Minimum — niche and audience
python3 generate_calendar.py --niche="DFW real estate" --audience="first-time buyers"
# Full options
python3 generate_calendar.py \
--niche="DFW mortgage broker" \
--audience="move-up buyers" \
--platform=linkedin \
--days=30 \
--tone=educational \
--ab-variants \
--csv \
--output=my_calendar.json
Options:
FlagDefaultDescription--nicherequiredYour brand/industry (e.g. "DFW real estate agent")--audience"general"Target reader (e.g. "first-time homebuyers")--platformlinkedinlinkedin / x / facebook / instagram / all--days77 or 30--toneconversationalconversational / educational / urgent / luxury / bold--ab-variantsoffGenerate 2 hook options per post--csvoffExport calendar as CSV--themeautoWeekly theme override--demooffRun on built-in sample, zero API calls--versionoffPrint version--formathumanhuman / json
Human-readable output:
text
=== 30-Day LinkedIn Calendar: DFW Mortgage Broker → Move-Up Buyers ===
Week 1 Theme: Market Reality
--- Day 1 (Mon) | LinkedIn | Market Education ---
HOOK: Most DFW move-up buyers don't realize they already have the equity to do this.
BODY: If you bought your home 3-5 years ago, you're sitting on an average of $87,000 in
equity. That's your down payment for the next place — without touching savings.
The math most people don't run: sell at today's prices, buy at today's prices,
and the equity gap covers the difference more than you think.
CTA: Drop your zip code below — I'll run the numbers for your neighborhood.
HASHTAGS: #DFWRealEstate #HomeEquity #MovingUp #DFWHomes
CHARS: 487
JSON output ( --format=json):
json
{
"metadata": {
"niche": "DFW Mortgage Broker",
"audience": "Move-up buyers",
"platform": "linkedin",
"days": 30,
"generated_at": "2026-03-27T17:00:00Z"
},
"weeks": [
{
"week": 1,
"theme": "Market Reality",
"posts": [
{
"day": 1,
"weekday": "Mon",
"platform": "linkedin",
"content_type": "market_education",
"hook": "Most DFW move-up buyers don't realize they already have the equity to do this.",
"body": "...",
"cta": "Drop your zip code below — I'll run the numbers for your neighborhood.",
"hashtags": ["#DFWRealEstate", "#HomeEquity", "#MovingUp", "#DFWHomes"],
"char_count": 487,
"hook_b": null
}
]
}
]
}
CSV output ( --csv, compatible with Buffer/Hootsuite/Notion):
text
day,weekday,platform,hook,body,cta,hashtags,char_count
1,Mon,linkedin,"Most DFW move-up buyers...","If you bought your home...","Drop your zip code...","#DFWRealEstate #HomeEquity",487
Uses generate_calendar.py in this directory. Local MLX first (free, unlimited), Haiku fallback.
python
CONTENT_MIX = {
"market_education": 0.25, # Stats, trends, myth-busting
"social_proof": 0.20, # Client outcomes, testimonials
"objection_bust": 0.20, # Handle common objections
"community": 0.15, # Local spotlight, brand building
"direct_cta": 0.20, # Urgency-driven asks
}
WEEK_THEMES = [
"Market Reality", # Week 1 — establish authority with facts
"Social Proof", # Week 2 — build trust with outcomes
"Education", # Week 3 — deepen value with expertise
"Urgency & Action", # Week 4 — close with timing
]
PLATFORM_LIMITS = {
"linkedin": {"chars": 3000, "hashtags": 5, "tone": "professional"},
"x": {"chars": 280, "hashtags": 2, "tone": "punchy"},
"facebook": {"chars": 500, "hashtags": 3, "tone": "community"},
"instagram": {"chars": 300, "hashtags": 10, "tone": "visual-first"},
}
Core generation prompt:
python
CALENDAR_SYSTEM = """You are a social media strategist and direct-response copywriter.
Generate {days} days of {platform} content for: {niche} targeting {audience}.
Rules:
- Hook first: every post opens with a pattern interrupt — a question, stat, or bold claim
- No topic repeats within 7 days
- Match platform tone: {platform_tone}
- Content mix: 25% education, 20% social proof, 20% objection handling, 15% community, 20% CTA
- Week themes: {week_themes}
- Keep under {char_limit} characters per post
- {tone_instruction}
- Never use: [forbidden words for niche]
Output ONLY valid JSON matching the schema provided."""
Patrick's 2-hour content schedule method:
bash
# Step 1: Generate 30-day calendar
python3 generate_calendar.py --niche="DFW mortgage broker" --audience="move-up buyers" \
--platform=linkedin --days=30 --csv --output=calendar_march.csv
# Step 2: Review and approve in CSV (Buffer, Hootsuite, Notion)
# Step 3: Schedule — done in 10 minutes
Multi-platform week:
bash
# All 4 platforms, 7 days, A/B hooks
python3 generate_calendar.py --niche="DFW real estate" --audience="first-time buyers" \
--platform=all --days=7 --ab-variants
Crypto trading content:
bash
python3 generate_calendar.py --niche="crypto trader + DeFi analyst" \
--audience="retail investors" --platform=x --days=30 --tone=bold
Pipeline (JSON → scheduler automation):
bash
python3 generate_calendar.py --niche="SaaS startup" --audience="SMB owners" \
--format=json | jq '.weeks[0].posts[] | {day, hook, cta}'
bash
# Via Telegram
@openclaw content-calendar "30-day LinkedIn calendar for DFW mortgage broker targeting move-up buyers"
@openclaw content-calendar "7-day X calendar, crypto niche, bold tone"
# Via Claude Code
openclaw run content-calendar --niche="real estate" --days=30 --platform=linkedin
Pillar% of calendarWhat it doesExample hookMarket Education25%Build authority with facts"Most DFW buyers don't know this costs them $340/month"Social Proof20%Build trust with outcomes"Client bought in Frisco with $0 out of pocket. Here's how."Objection Busting20%Remove buying resistance"Waiting for rates to drop? Here's what that's actually costing you."Community15%Brand affinity, local presence"Best kept secret neighborhood in McKinney right now"Direct CTA20%Drive action"Drop your zip code — I'll pull what's moving in your area today."