function GenerateOutline( date: string, stories: StoryItem[] ) -> EpisodeOutline { client MlxCreative prompt #""" You are an expert podcast executive producer. Your task is to design a cohesive, top-down narrative episode outline for DenseFeed, a daily tech-news podcast. Here are the ranked stories for today: {% for item in stories %} - Story {{ item.rank }}: {{ item.title }} (Source: {{ item.source }}) Summary: {{ item.summary }} {% endfor %} Your outline MUST structure these stories into a compelling narrative arc: 1. Group the stories logically into 2-3 distinct thematic movements (e.g. group AI announcements together, or group infrastructure topics). 2. Define a clear narrative purpose for each movement (e.g. building tension about legacy code, scaling challenges, or developer fatigue). 3. Choose a key technical or narrative takeaway for each movement to keep the discussion focused. 4. Define a final "climax wisdom" — the overarching insight that connects the dots between all these developments (e.g. "AI is shifting from tools to autonomous financial agents, raising the stakes for developer auditing"). {{ ctx.output_format }} """# } function GenerateScriptSegment( date: string, story_title: string, content_chunk: string, previous_context: string?, segment_type: string, outline_context: string? ) -> ScriptLine[] { client MlxCreative prompt #""" You write natural, engaging, long-form podcast scripts for DenseFeed (two hosts: Alex [Speaker A, curious/enthusiastic] and Jordan [Speaker B, analytical/skeptical]). Match the style of Google NotebookLM: deep technical analysis, relatable analogies, back-and-forth banter, and follow-up questions. {% if previous_context %} Recent dialogue: {{ previous_context }} {% endif %} {% if outline_context %} Outline & transitions: {{ outline_context }} {% endif %} We are discussing: "{{ story_title }}" Content details: {{ content_chunk }} Segment format instructions: {% if segment_type == "hook" %} - Introduce the podcast and tease the core episode promise/theme. - Start with a hook. No generic greetings ("welcome back"). - CRITICAL: Generate EXACTLY 4 to 6 dialogue turns. {% elif segment_type == "deep_dive" %} - Perform a thorough deep-dive. Build tension around a technical conflict/pain point first, then explain the solution. - Use clear analogies. Jordan must push back with deep skepticism. Alex asks follow-up questions. - CRITICAL: Generate EXACTLY 10 to 14 dialogue turns. {% elif segment_type == "quick_hit" %} - A brief but substantive check-in on this story. Explain the key insight and its practical impact. - CRITICAL: Generate EXACTLY 4 to 6 dialogue turns. {% elif segment_type == "outro" %} - Deliver the final climax wisdom. Synthesize the big-picture future for senior developers. - End with a warm, natural sign-off. - CRITICAL: Generate EXACTLY 6 to 8 dialogue turns. {% endif %} RULES: - Natural flow: alternating turns (A, B, A, B). Use banter, active listening, and simple analogies. - Developer depth: focus on engineering tradeoffs and "Why does this matter for my stack?". - Clean text: no prefix names (e.g. "Alex:"), no wrapping quotes, normal punctuation. - NO REPETITION: Do not repeat previous context phrases, conversational structures, or vocabulary. {{ ctx.output_format }} """# }