Spaces:
Sleeping
Sleeping
| """Generate the AgroSense Instagram Launch Campaign as Word (.docx) and PDF. | |
| pip install python-docx fpdf2 | |
| python scripts/build_campaign.py | |
| Content is ASCII so the PDF renders with built-in core fonts. | |
| """ | |
| 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 - Instagram Launch Campaign" | |
| SUBTITLE = "Content, reel scripts, voiceover and audio direction - 2-week launch sprint" | |
| SECTIONS = [ | |
| ("1. Campaign Overview", [ | |
| ("ul", ["Campaign name: #GrowWithAgroSense ('Smart farming, local wisdom').", | |
| "Goal: awareness + sign-ups (farmers, FPOs/cooperatives, agri-doctors).", | |
| "Audience: smallholder farmers, FPOs, agri-experts, agri-students, " | |
| "agri-input partners (India-first; multilingual).", | |
| "Duration: 14-day launch sprint, then 3-4 posts/week ongoing.", | |
| "Primary CTA: 'Try free at the link in bio.' Secondary: 'Are you an " | |
| "agri-expert? Apply to become a verified Plant Doctor.'", | |
| "KPIs: reach, saves, shares, profile visits, link clicks, reel plays, " | |
| "sign-ups, doctor applications.", | |
| "Tone: empowering, practical, trustworthy, hopeful, local.", | |
| "Look: green/earth palette, the sprout (leaf) logo, real farm footage, " | |
| "clean data overlays, large readable captions."]), | |
| ]), | |
| ("2. Content Pillars", [ | |
| ("ol", ["Empathy - real farmer pain points (wrong inputs, pests, price shocks).", | |
| "Features - advisor, weather/satellite, plant clinic + live doctor, " | |
| "prices & farmer trading, clubs, traditional/Panchang advisor, finance " | |
| "(loans + schemes), land records, multilingual.", | |
| "Education - quick, useful agronomy tips ('Did you know').", | |
| "Proof and impact - outcomes, numbers, testimonials.", | |
| "Community and CTA - sign up, refer, become a verified plant doctor."]), | |
| ]), | |
| ("3. Two-Week Content Calendar", [ | |
| ("ul", ["Day 1 (Reel): Launch - 'Meet AgroSense'. CTA: link in bio.", | |
| "Day 2 (Carousel): '5 ways AgroSense helps your farm'.", | |
| "Day 3 (Story): Poll - 'Biggest farm worry? Pests / Weather / Prices'.", | |
| "Day 4 (Reel): 'Snap a sick leaf -> get a prescription' (Plant clinic).", | |
| "Day 5 (Single post): Weather + satellite advisory screenshot + tip.", | |
| "Day 6 (Carousel): 'Ask in your language' (multilingual demo).", | |
| "Day 7 (Reel): 'Talk to a real plant doctor' (live consult).", | |
| "Day 8 (Story): Quiz - 'Which fertilizer for sandy-soil maize?'.", | |
| "Day 9 (Single post): Live mandi prices + commodities, 'Sell smarter'.", | |
| "Day 10 (Reel): 'From question to cited answer in 1 second' (advisor).", | |
| "Day 11 (Carousel): 'For agri-experts: become a verified Plant Doctor'.", | |
| "Day 12 (Story): Behind the scenes / founder note + countdown.", | |
| "Day 13 (Single post): Impact stats (yield +15%, fertilizer -20%).", | |
| "Day 14 (Reel): Recap + strong CTA + testimonial clip."]), | |
| ]), | |
| ("4. Reel 1 - 'Meet AgroSense' (30s, launch)", [ | |
| ("p", "Format: 9:16 vertical. Pace: fast cuts, captions burned-in. Hook in 2s."), | |
| ("ul", ["0-3s | Worried farmer looking at a spotted leaf | Text: 'Wrong advice " | |
| "costs your crop.' | VO: 'Every season, a wrong guess costs the harvest.'", | |
| "3-8s | Phone shows the AgroSense app/chat | Text: 'Ask anything.' | VO: " | |
| "'AgroSense gives evidence-backed answers - with sources you can trust.'", | |
| "8-14s | Quick montage: weather, satellite map, leaf scan, price ticker | " | |
| "Text: 'Weather - Satellite - Plant clinic - Prices' | VO: 'Local weather, " | |
| "satellite view, plant diagnosis, and live market prices.'", | |
| "14-20s | Chat answer in Hindi/Kannada | Text: 'In your language.' | VO: " | |
| "'Ask in your own language.'", | |
| "20-26s | Video call with a 'Plant Doctor' | Text: 'Talk to a real " | |
| "expert.' | VO: 'And when you need a human, consult a verified plant " | |
| "doctor - live.'", | |
| "26-30s | Logo + CTA card | Text: 'Try free. Link in bio.' | VO: " | |
| "'AgroSense. Smart farming, local wisdom.'"]), | |
| ("p", "Audio: upbeat, hopeful acoustic/folk-fusion bed (90-110 BPM); soft " | |
| "whoosh on each cut; VO ducks the music by ~8 dB."), | |
| ]), | |
| ("5. Reel 2 - 'Snap a sick leaf' (20s, Plant clinic)", [ | |
| ("ul", ["0-3s | Close-up: yellowing/spotted tomato leaf | Text: 'Sick crop?' | " | |
| "VO: 'Not sure what is wrong with your crop?'", | |
| "3-9s | Farmer photographs the leaf in the app | Text: 'Just take a " | |
| "photo.' | VO: 'Just snap a photo.'", | |
| "9-15s | Screen: diagnosis + prescription card appears | Text: 'Get a " | |
| "diagnosis + treatment.' | VO: 'Get a likely diagnosis and a step-by-step " | |
| "treatment - with safe dosages.'", | |
| "15-20s | Healthy field + logo | Text: 'AgroSense Plant Clinic. Link in " | |
| "bio.' | VO: 'Heal your crop early. AgroSense.'"]), | |
| ("p", "Audio: light curiosity motif, camera-shutter SFX at 6s, positive resolve " | |
| "chord at 15s. Disclaimer caption: 'Decision support, not a substitute for " | |
| "an expert.'"), | |
| ]), | |
| ("6. Reel 3 - 'Talk to a real plant doctor' (25s)", [ | |
| ("ul", ["0-3s | Farmer with a tough problem | Text: 'Need a real expert?' | VO: " | |
| "'Some problems need a human expert.'", | |
| "3-9s | App: choose specialization/language, tap Request | Text: 'Request " | |
| "a live consult.' | VO: 'Request a live consultation in seconds.'", | |
| "9-16s | Routed to a verified doctor; star rating + ICAR reg shown | " | |
| "Text: 'Matched to a VERIFIED doctor.' | VO: 'You are matched to a " | |
| "verified plant doctor - ratings and registration shown.'", | |
| "16-22s | Video call + chat | Text: 'Video + chat. Your language.' | VO: " | |
| "'Talk by video or chat, in your language.'", | |
| "22-25s | Logo + CTA | Text: 'AgroSense. Link in bio.' | VO: 'Expert help, " | |
| "wherever you farm.'"]), | |
| ("p", "Audio: warm, reassuring piano/strings bed; gentle notification chime when " | |
| "matched (14s)."), | |
| ]), | |
| ("7. Carousel Posts (copy)", [ | |
| ("h2", "Carousel A - '5 ways AgroSense helps your farm'"), | |
| ("ol", ["Cited crop, fertilizer and pest advice - no more guesswork.", | |
| "Local weather + satellite view to time irrigation and spraying.", | |
| "Snap-a-leaf plant clinic: diagnosis + treatment.", | |
| "Live mandi prices - sell at the right place and time.", | |
| "Ask in your language; consult a verified plant doctor."]), | |
| ("h2", "Carousel B - 'Become a verified Plant Doctor'"), | |
| ("ol", ["Reach farmers who need your expertise.", | |
| "Get verified (credentials + ICAR/registration number).", | |
| "Take live video/chat consults; build your rating and reviews.", | |
| "Apply in the app - Plant clinic tab -> 'Apply as a plant doctor'."]), | |
| ]), | |
| ("8. Sample Captions", [ | |
| ("p", "Launch (Reel 1): One wrong input can cost a whole season. AgroSense puts " | |
| "evidence-backed, cited farming advice in your pocket - plus weather, " | |
| "satellite, plant diagnosis, live prices, and verified plant doctors. In " | |
| "your language. Try it free - link in bio. #GrowWithAgroSense"), | |
| ("p", "Plant clinic (Reel 2): Spotted leaves? Do not guess. Snap a photo and get " | |
| "a likely diagnosis with a safe, step-by-step treatment. Catch problems " | |
| "early, protect your yield. Link in bio. (Decision support, not a " | |
| "substitute for an expert.)"), | |
| ("p", "Plant doctor (Reel 3): When you need a human, AgroSense connects you to a " | |
| "VERIFIED plant doctor - by video or chat, in your language, with ratings " | |
| "you can see. Real expertise, wherever you farm. Link in bio."), | |
| ("p", "Experts: Are you an agronomist, pathologist or entomologist? Get verified " | |
| "on AgroSense and help farmers across India. Apply in the app today."), | |
| ]), | |
| ("9. Stories and Interactive", [ | |
| ("ul", ["Poll: 'Biggest worry this season? Pests / Weather / Prices'.", | |
| "Quiz: 'Which fertilizer for sandy-soil maize?' (reveal the cited answer).", | |
| "Slider: 'How confident are you about pest control?'.", | |
| "Countdown sticker to launch / a live Q&A.", | |
| "'Ask me anything' box -> answer using AgroSense on screen.", | |
| "Behind-the-scenes: how answers are grounded and cited.", | |
| "Repost user results/testimonials; add captions and the link sticker."]), | |
| ]), | |
| ("10. Voiceover Scripts (Audio)", [ | |
| ("h2", "Master VO - 30s launch (English)"), | |
| ("p", "'Every season, a wrong guess costs the harvest. AgroSense gives " | |
| "evidence-backed answers - with sources you can trust. Local weather, " | |
| "satellite view, plant diagnosis, and live market prices. Ask in your own " | |
| "language. And when you need a human, consult a verified plant doctor, " | |
| "live. AgroSense - smart farming, local wisdom. Try it free.'"), | |
| ("h2", "Localization"), | |
| ("p", "Record the same VO in Hindi, Kannada, Telugu, Tamil, Marathi, Bengali and " | |
| "Malayalam. Keep sentences short; match the on-screen captions. Use a warm, " | |
| "trusted regional voice (ideally a real farmer/agronomist for authenticity). " | |
| "Always burn in subtitles - most feed views are muted."), | |
| ("h2", "Tagline (all reels)"), | |
| ("p", "'AgroSense - smart farming, local wisdom.'"), | |
| ]), | |
| ("11. Audio and Music Direction", [ | |
| ("ul", ["Bed: upbeat acoustic / folk-fusion, 90-110 BPM, hopeful and warm; use " | |
| "Instagram-licensed/trending audio where possible for reach, plus a " | |
| "royalty-free original for ads.", | |
| "Doctor/telemedicine reels: softer piano/strings for trust.", | |
| "SFX: subtle whoosh on cuts, camera shutter on photo capture, gentle " | |
| "chime on 'doctor matched'.", | |
| "Mix: duck music under VO by 6-8 dB; normalize to about -14 LUFS; keep " | |
| "peaks below -1 dBFS.", | |
| "Accessibility: always include burned-in captions/subtitles."]), | |
| ]), | |
| ("12. Hashtag Sets", [ | |
| ("p", "Core: #GrowWithAgroSense #AgroSense #SmartFarming #DigitalAgriculture " | |
| "#AgriTech #FarmingAdvisor"), | |
| ("p", "Reach (India): #KisanTech #Kheti #IndianAgriculture #AgriIndia #FarmerFirst " | |
| "#CropCare #PlantDoctor #SustainableFarming #AIforAgriculture #FarmSmart"), | |
| ("p", "Use 8-12 relevant tags per post; mix high- and niche-volume; rotate to " | |
| "avoid repetition; add 1-2 regional/language tags per localized post."), | |
| ]), | |
| ("13. Profile and Link-in-bio", [ | |
| ("ul", ["Handle: @agrosense (or @agrosense.app).", | |
| "Bio: 'AI farming advisor | Cited crop, weather & market advice | Plant " | |
| "clinic + verified doctors | In your language | Try free ->'.", | |
| "Link-in-bio: app/sign-up, 'Become a plant doctor', and the user manual.", | |
| "Highlights: How it works, Plant clinic, Live doctor, Prices & Trading, " | |
| "Clubs, Traditional, Finance, Land records, Languages, FAQs."]), | |
| ]), | |
| ("14. Production Notes and Tools", [ | |
| ("p", "These are production-ready scripts. To produce the actual media:"), | |
| ("ul", ["Video editing: CapCut, InShot, Canva, or Premiere/After Effects for " | |
| "motion graphics. Shoot real farm B-roll; screen-record the app.", | |
| "Voiceover: record a real regional voice, or use a quality TTS (e.g. " | |
| "ElevenLabs/Murf) then human-review for pronunciation.", | |
| "Music: Instagram's in-app licensed audio for organic reach; royalty-free " | |
| "libraries (e.g. Epidemic, Artlist) for ads.", | |
| "Captions: auto-caption then proofread; keep text in the safe zone.", | |
| "Specs: 1080x1920, 9:16, MP4 (H.264), 30 fps, under 60s for reels.", | |
| "Compliance: keep the 'decision support, not a substitute for an expert' " | |
| "line on medical/treatment content; avoid guaranteeing yields."]), | |
| ]), | |
| ("15. Measurement", [ | |
| ("ul", ["Track per post: reach, plays, average watch time, saves, shares, " | |
| "profile visits, link clicks.", | |
| "Track funnel: link clicks -> sign-ups -> active users; doctor applications.", | |
| "Double down on the top 2 reels (boost as ads to look-alike audiences).", | |
| "Review weekly; iterate hooks (first 2 seconds) and CTAs."]), | |
| ]), | |
| ] | |
| def main() -> int: | |
| build_both(TITLE, SUBTITLE, SECTIONS, DOCS_DIR, "AgroSense_Instagram_Campaign") | |
| return 0 | |
| if __name__ == "__main__": | |
| raise SystemExit(main()) | |