Content rules
Rules for Step 2 (tool_synthesia_prepare_request) — how to distribute content across
slides, write voiceover scripts, and format every variable type correctly.
slide_0_script_intro
Every video begins with slide_0_script_intro — a spoken intro of 1–3 seconds.
Generated from the video title and/or the first key idea. No generic "Welcome!" unless
stated in the source text.
Choose one pattern from the library and fill it with topic keywords:
| # | Pattern |
|---|---|
| 1 | Direct topic: "[Topic], clearly." / "About [Topic]." |
| 2 | Transition cue: "Next, [Topic]." / "Moving on to [Topic]." |
| 3 | Benefit first: "How to [Outcome] with [Topic]." |
| 4 | Problem cue: "If you face [Problem], focus on [Topic]." |
| 5 | Scenario opener: "Imagine [Situation]." |
| 6 | Quick definition: "[Topic] means [Simple definition]." |
| 7 | Contrast: "Not [Myth], but [Truth] about [Topic]." |
| 8 | Checklist cue: "Three points about [Topic]." |
| 9 | Question hook: "What matters most in [Topic]?" |
| 10 | Micro promise: "In a moment, you will know [Result]." |
| 11 | Audience targeting: "For anyone dealing with [Context], here is [Topic]." |
| 12 | Action cue: "Start with [First step] for [Topic]." |
| 13 | Calm warning: "A common mistake in [Topic] is [Mistake]." |
| 14 | Reframe: "[Topic] is less about [X] and more about [Y]." |
| 15 | Time pressure: "When time matters, [Topic] matters." |
| 16 | Conversational: "Let's discuss [Topic]." / "In this video, we will cover [Topic]." / "Today, we focus on [Topic]." |
Content distribution
- Distribute content so each slide covers one aspect — no repetition between slides.
- Slide scripts must reflect only what is on that slide. Never mix slide content.
- If
video_length = short: combined word count across all script fields = 100–150 words. Keep text variables brief; rely on narration.
Variable type rules
| Variable | Rule |
|---|---|
slide_#_script | Conversational narration. \n\n to separate thoughts and control pacing. Basic punctuation only — no *, #, or markdown. Use "double quotes" for emphasis. |
slide_#_script_part_1 / _part_2 | Same as script, but split mid-sentence to enable a zoom change. The split must not change overall meaning. |
slide_0_script_intro | 1–3 seconds. One sentence from the intro pattern library above. |
slide_#_textblock | Unordered list or free text with \n line breaks. ONE emoji type per list (allowed: ➡️ 🔹 ⚠️ ▫️). Max 150 chars total. |
slide_#_textblock_for_listing | Numbered or plain list with \n. Each item 20–40 chars. Max 150 chars total. Can use 1. item \n 2. item or plain lines. |
slide_#_text / _text_max_N | Single-line statement only. No line breaks, no lists, no titles. |
slide_#_item_N | Short parallel point. No manual numbering — template adds it. |
slide_#_title / _*_title | Max 30 chars (or _max_N if smaller). |
| Q slides (no script) | Key question or framing statement. Max 30 chars. |
No HTML or Markdown anywhere. Exceptions, inside script variables only:
<break time="1s" />— pause between ideas<sub alias="Term">Term</sub>— special pronunciation of key terms
Variable completeness rules
- Script variables must never be empty. A slide with a missing script will fail validation.
- Text variables should not be empty — use a single space
" "if truly nothing fits. - Variables named
slide_3_*belong to slide 3. Never mix content between slide numbers. - Numbered list slides (codes
2–8) are already numbered in the template. All item slots must be filled with consistent, parallel content. Do not pad a 4-item list with 3 bullets and one example. _max_Nin a variable name = strict character limit._title= strict max 30 chars.
Address forms by language
Use consistently throughout all scripts and text variables in a video:
| Language | Form |
|---|---|
| English | you |
| German | Sie |
| French | vous |
| Spanish | tú |
| Italian | tu |
| Dutch | jij/je |
| Polish | ty |
Output format (Step 2)
templateData is an array of strings — each entry is "variable_name: value".
The validator converts this to a dict before the API call.
"""
{
"test": false,
"templateData": [
"course_title: ...",
"video_title: ...",
"avatar_id: ...",
"background_image: ...",
"slide_0_script_intro: ...",
"slide_1_title: ...",
"slide_1_script: ...",
"slide_2_item_1: ...",
"slide_2_item_2: ..."
],
"visibility": "public",
"templateId": "...",
"title": "1.1.2 Video Title (Template Name)"
}
"""
Field rules:
title="<sections_position> <video_title> (<template_title>)"test= value oftest_modeinputvisibility= always"public"templateId= UUID from Step 1 output- All template variables including
avatar_idandbackground_imagego insidetemplateData
Image generation
Vertical / horizontal (stock photo)
Used for slide_#_image_vertical and slide_#_image_horizontal variables.
- Professional stock-photo style, soft daylight, blue tones in clothing and objects
- No text or labels in the image
- No dramatic facial expressions
- For screens: one specific, cinematically plausible camera angle — focus on the human interaction, not the screen content
Conceptual diagram (flat vector)
Used for the conceptual_diagram variable in I-slide templates. Always horizontal.
- Flat vector illustration, no strokes or borders, soft pastel and blue tones
- Must be concept-specific — never generic icons or abstract shapes
- Brand colors:
#223F52#0A5BEA#EDEBF2#FFFFFF#D6EAFE - Brand font: Aeonik, Helvetica, sans-serif
- Neutral daylight color temperature, no sepia filter
- Arranged for horizontal (3:2) layout with generous margins