"""Generate the AgroSense 30-Day Content Calendar (post-launch) as Word + PDF. pip install python-docx fpdf2 python scripts/build_calendar30.py """ from __future__ import annotations import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent)) from docgen import build_both # noqa: E402 DOCS_DIR = Path(__file__).resolve().parent.parent / "docs" TITLE = "AgroSense - 30-Day Content Calendar" SUBTITLE = "Post-launch monthly plan that extends the #GrowWithAgroSense sprint" SECTIONS = [ ("1. Overview and Cadence", [ ("p", "This 30-day plan continues after the 14-day launch sprint. It sustains a " "predictable rhythm, rotates the five content pillars (empathy, features, " "education, proof, community/CTA), and builds recurring series so followers " "know what to expect."), ("ul", ["Cadence: 1 post/day on average - about 12 reels, 6 carousels, 6 single " "posts, 1 live, plus daily stories and 2 user-generated (UGC) reposts.", "Every post ends with a clear CTA (try free / apply as a doctor / save " "and share). Keep the link sticker on stories.", "Best posting windows in India: roughly 7-9 AM and 7-9 PM IST; test and " "adjust to your audience insights.", "Always burn in captions/subtitles; design for muted autoplay."]), ]), ("2. Recurring Weekly Series", [ ("ul", ["Market Monday (Reel) - this week's mandi/commodity prices + a sell-smart tip.", "Tip Tuesday (Reel) - one quick, cited agronomy tip (60 seconds).", "Doctor Friday (Reel) - meet/learn from a verified plant doctor.", "Weekend Wins (Story/UGC) - testimonials and farmer results.", "Mid-week (Carousel or single post) - education, features, or community."]), ]), ("3. Week 1 - Feature Deep-Dives", [ ("ul", ["Day 1 (Reel, Market Monday): top-crop mandi prices this week; 'sell at " "the right mandi'.", "Day 2 (Reel, Tip Tuesday): 'Right fertilizer for your soil' - cited mini-tip.", "Day 3 (Carousel): how AgroSense weather + satellite time your irrigation " "and spraying.", "Day 4 (Single post): Myth vs fact - 'More fertilizer = more yield?'.", "Day 5 (Reel, Doctor Friday): meet a verified plant doctor (intro + rating).", "Day 6 (Story): poll + week recap; repost a UGC result.", "Day 7 (Carousel): 'Ask in your language' - demo across 7 Indian languages."]), ]), ("4. Week 2 - Education and Seasonal Agronomy", [ ("ul", ["Day 8 (Reel, Market Monday): price trend + 'when to sell'.", "Day 9 (Reel, Tip Tuesday): scout pests in 60 seconds (IPM basics).", "Day 10 (Single post): seasonal checklist for the current crop stage.", "Day 11 (Carousel): 'Snap-a-leaf' plant-clinic walkthrough, step by step.", "Day 12 (Reel, Doctor Friday): mini-AMA clip / live Q&A teaser.", "Day 13 (Story): quiz - identify the pest, then reveal the cited answer.", "Day 14 (Single post): impact stat + a short farmer testimonial."]), ]), ("5. Week 3 - Trust and Community", [ ("ul", ["Day 15 (Reel, Market Monday): 'why prices vary across mandis'.", "Day 16 (Reel, Tip Tuesday): water-smart irrigation tip.", "Day 17 (Carousel): farmer success story (before/after).", "Day 18 (Single post): expert spotlight - a verified doctor and their ratings.", "Day 19 (Reel, Doctor Friday): how verification works (credentials + ICAR " "registration) and why it builds trust.", "Day 20 (LIVE): live consultation demo / expert AMA; save as a reel after.", "Day 21 (Story, UGC takeover): a farmer shares their week with AgroSense."]), ]), ("6. Week 4 - Growth and Partnerships", [ ("ul", ["Day 22 (Reel, Market Monday): commodity outlook + sell-smart tip.", "Day 23 (Reel, Tip Tuesday): post-harvest handling tip.", "Day 24 (Carousel): 'For FPOs and cooperatives' - onboard your members.", "Day 25 (Single post): referral - 'invite a fellow farmer, help them grow'.", "Day 26 (Reel, Doctor Friday): 'Become a verified plant doctor' - recruit " "experts.", "Day 27 (Carousel): 'For agri-input partners' (B2B value).", "Day 28 (Story): poll - which feature should we build next?"]), ]), ("7. Days 29-30 - Monthly Wrap", [ ("ul", ["Day 29 (Reel): monthly recap - best tips and community wins.", "Day 30 (Carousel + Story): 'This month at AgroSense' highlights, a strong " "CTA, and a teaser for next month."]), ]), ("8. Content Mix and Notes", [ ("ul", ["Pillar balance per week: 2 feature, 2 education, 1 proof, 1 community/CTA, " "1 empathy.", "Repurpose: turn each reel into a carousel and 2-3 story frames; clip the " "live into reels.", "Localize top performers into Hindi/Kannada/Telugu/Tamil/Marathi/Bengali/" "Malayalam.", "Boost the best 2-3 reels as ads to look-alike audiences.", "Keep compliance: 'decision support, not a substitute for an expert' on " "treatment content; never guarantee yields.", "Review weekly: double down on the top hooks (first 2 seconds) and CTAs."]), ]), ] def main() -> int: build_both(TITLE, SUBTITLE, SECTIONS, DOCS_DIR, "AgroSense_30Day_Calendar") return 0 if __name__ == "__main__": raise SystemExit(main())