Generate the content
You've chosen a starter. Now decide what goes into it. Every starter declares a set of variables — the text and colors a user can change. Your job is to produce a value for each one based on the user's prompt.
Steps
- Open the chosen composition's
manifest.json. Thevariablesarray lists every variable: itsid,type,label, anddefault. (The authoritative declaration also lives inindex.html'sdata-composition-variables, but the manifest mirror is easier to read.) - For each variable, write a value that reflects the user's prompt:
- string variables (headlines, taglines, feature lines, CTAs): write
real copy. Keep it tight — respect any
maxLength. These render as on-screen text, so punchy beats wordy. A headline is a few words, not a sentence. - color variables: choose hex colors (
#rrggbb) that match the mood the user described. If they said "calm pastel", pick soft, low-saturation tones. If they said "bold" or "dark", go high-contrast. Make sure text color reads clearly against the background color. - enum variables: pick one of the declared
optionsvalues. - number / boolean: stay within any declared
min/max.
- string variables (headlines, taglines, feature lines, CTAs): write
real copy. Keep it tight — respect any
- If the user didn't give you something for a particular variable, make a sensible choice that fits the overall brief rather than leaving the default — the default is generic placeholder content.
Writing good on-screen copy
- Lead with the benefit, not the feature name.
- One idea per line. The feature lines in
app-trailerand the steps inexplainereach get a single short phrase. - Match the user's tone. A playful app and an enterprise tool should not sound the same.
- Don't invent claims the user didn't make (no fake stats, no "#1" superlatives unless they asked).
Output of this step
A plain JSON object mapping each variable id to your chosen value, e.g.:
{
"app_name": "Strand",
"tagline": "Notes that think with you.",
"feature_1": "Capture ideas in a tap",
"accent_color": "#7c9cff"
}
Write this to /.agents/workspace/output/proposed.json.
Also write the narration script
Every video gets a spoken voiceover by default. Alongside the on-screen
variables, write a short narration script — what the voice says — sized to
the starter's duration_seconds (roughly 2–3 spoken words per second, so a 6s
starter is ~12–18 words). It should complement the on-screen copy, not just
read it verbatim — set the scene, land the benefit, end on the CTA. Keep it
tight; the voiceover step will trim it further if the synthesized audio runs
long.
Save it to /.agents/workspace/output/voiceover_script.txt. (Skip only if the
user explicitly asked for no narration.)
Then move to generate-voiceover, which synthesizes the narration, and then customize-composition, which validates everything against the composition's real schema before rendering.