
    ԍi                         d Z ddddddZdZy)	z
Layer 4b: Script Generation Prompt (v1)

Engine: Opus
Input: #1 concept from 4a + Research report + Channel metadata
Output: Production-ready 225-300 word script
v14bopusz
2026-02-12zEGenerate production-ready 225-300 word script with on-screen callouts)versionlayermodelcreateddescriptiona  You are writing a script for a 90-120 second vertical video. This is the single most important output in the entire pipeline. Every word must earn its place.

## VOICE GUIDELINES

Write like a smart friend explaining something fascinating at a bar, not like a professor delivering a lecture.

- Confident, conversational, slightly irreverent
- Use "you" constantly - speak directly to the viewer
- Short sentences. Punchy. Rhythm matters.
- No filler, no throat-clearing, no setup paragraphs
- If it sounds like a news anchor or documentary narrator wrote it, rewrite it

## CHANNEL CONTEXT
Channel: {channel_name}
Voice: {channel_description}
Competitive Gap: {competitive_gap}

Lean into what makes this channel different from competitors covering similar topics.

## THE CONCEPT TO SCRIPT
Title: {concept_title}
Hook: {concept_hook}
Core Revelation: {concept_core_revelation}
Emotional Arc: {concept_emotional_arc}
Data Points to Include: {concept_data_points}
Share Trigger: {concept_share_trigger}

## RESEARCH FOR CONTEXT
{research_report_content}

## SCRIPT REQUIREMENTS

### LENGTH
225-300 words. At ~150 words per minute natural speaking pace, this yields 90-120 seconds. Count your words. This is non-negotiable.

### STRUCTURE

**Opening (0-3 seconds):**
Start with the hook. No intro. No "Hey guys." No "So." Jump straight into the most compelling statement. Create an open loop the viewer NEEDS to see closed.

**Build (3-30 seconds):**
Set up the revelation. Give context that makes the payoff land harder. Weave in data points naturally - spoken as revelations, not listed as facts.

**Pattern Interrupt (30-40 seconds):**
Change the pace. A surprising stat. A rhetorical question. A shift in direction. Something that re-grabs attention. Phrases that work: "But here's the part nobody talks about", "And that's where the data gets weird", "Here's where it gets interesting."

**Payoff (40-80 seconds):**
Deliver the core revelation. This is the moment the whole video builds to. Make it land.

**Close (80-120 seconds):**
End with the share trigger. NOT "like and subscribe." NOT "let me know in the comments." Something content-driven: "Send this to someone who needs to see it", a cliffhanger teasing Part 2, or a final provocative thought that lingers.

### ON-SCREEN TEXT

Include 4-7 on-screen text callouts inline in the script using this format:
[ON SCREEN: "exact text to display"]

Use these for:
- Key statistics (the number should be visible, not just spoken)
- The core revelation moment
- Any claim that benefits from visual reinforcement

### FORBIDDEN PHRASES

Do NOT use:
- "Have you ever wondered..."
- "In this video, we'll explore..."
- "What do you think? Let me know in the comments"
- "Like and subscribe"
- "Before we begin..." or "First, let's..."
- Any form of "Let's dive in" or "Let's get into it"

These signal generic content. The hook should be a specific, surprising claim.

## OUTPUT FORMAT

Return valid JSON only. No markdown code blocks.

{{
  "video_script": {{
    "full_script": "Your 225-300 word script with [ON SCREEN: \"text\"] callouts inline. Each paragraph is a natural breath/pause point.",
    "word_count": 275,
    "estimated_duration_seconds": 110,
    "on_screen_text_count": 5,
    "data_sources_referenced": ["Source 1 from research", "Source 2 from research"],
    "hook_text": "The exact first 1-2 sentences (the 0-3 second hook)",
    "pattern_interrupt_at": "Description of what the pattern interrupt is and roughly when it hits",
    "share_trigger_at_close": "The specific share trigger used in the closing"
  }}
}}
N)__doc__METADATAPROMPT     J/home/sietch6/trending-topics-pipeline/prompts/prompt_v1/layer4b_script.py<module>r      s*    ZZ
r   