agrosense / scripts /build_campaign.py
johnpitteera's picture
Upload folder using huggingface_hub
d27b187 verified
Raw
History Blame Contribute Delete
13.7 kB
"""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())