Script Writing
Generate a naturalistic, multi-character radio show script directly via the LLM. The script features host Paul taking calls from people around the world, with advanced audio tags.
Embedded Script
python3 skills/script-writing/scripts/generate_script.py --workspace ./workspace --style debate
Arguments
| Argument |
Default |
Description |
--workspace |
workspace |
Root workspace directory |
--style |
default |
Show format (see styles below) |
--context |
"" |
Additional tone/style notes inferred from user prompts (e.g., "emphasize the technical details", "make it sound like a late night show"). Applies to ALL styles. Keep brief. Do NOT use to specify stories/topics. |
Styles
| Style |
Callers |
Format |
Use when user says... |
debate |
2 per topic, opposing views |
Structured back-and-forth, Paul moderates |
"opposing views", "debate", "both sides" |
roundtable |
3-4, different angles |
Collaborative discussion, callers build on each other |
"roundtable", "panel", "discussion" |
interview |
1-2 with direct experience |
Q&A format, Paul asks probing questions |
"interview", "deep dive", "expert" |
explainer |
2-3, each explains an aspect |
Teach the audience, Paul asks clarifying questions |
"explain", "break it down", "what is" |
default |
Same as debate |
Default when no style specified |
(anything else) |
Examples
# HN discussion with opposing views, applying context
python3 skills/script-writing/scripts/generate_script.py \
--workspace ./workspace --style debate --context "make it sound like a late night show"
# Panel discussion about a GitHub repo with context notes
python3 skills/script-writing/scripts/generate_script.py \
--workspace ./workspace --style roundtable --context "emphasize the performance improvements"
# Interview with an expert about a paper
python3 skills/script-writing/scripts/generate_script.py \
--workspace ./workspace --style interview
# Explain a new technology
python3 skills/script-writing/scripts/generate_script.py \
--workspace ./workspace --style explainer
What it does
- Reads all research from
{workspace}/data/research/*.md.
- Builds a system prompt with the base format rules + style-specific caller/structure instructions.
- Calls Gemini via the Interactions API (
client.interactions.create()).
- Saves the script to
{workspace}/data/script.md.
Dependencies
Output
- Script File:
{workspace}/data/script.md
- Format: Plain text, each line starting with
Speaker: dialogue
Cast
| Speaker |
Role |
Personality |
| Paul |
Host |
Professional but relatable British moderator |
| Callers |
Call-ins |
Amateur, rough, natural — from various cities around the world |
Script Format Rules
- Every line:
SpeakerName: [audio tag] Dialogue text
- Must include audio tags in square brackets (e.g.,
[sighs], [excitedly]).
- Callers should sound amateurish (include "uh", "like", natural pauses).
- Short punchy sentences — spoken word, not prose.
- ~450-500 words total (~3 minutes when spoken).