Spaces:
Sleeping
Sleeping
| """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()) | |