|
|
@@ -14,6 +14,7 @@ The output JSON must follow this exact schema:
|
|
|
"id": "scene-N",
|
|
|
"index": 0,
|
|
|
"narration": "string — the voiceover text for this scene (Chinese, natural and conversational)",
|
|
|
+ "displayText": "string — optional, the text to display on screen (omit if same as narration; use when narration includes a greeting that should not appear visually)",
|
|
|
"keyframes": [
|
|
|
{ "type": "text|highlight|image|icon|transition", "content": "string" }
|
|
|
],
|
|
|
@@ -22,6 +23,11 @@ The output JSON must follow this exact schema:
|
|
|
"layoutHint": "full-text|split|centered|bullet-list"
|
|
|
}
|
|
|
],
|
|
|
+ "outro": {
|
|
|
+ "text": "string — closing message (e.g. 感谢观看, 今天的内容就到这里)",
|
|
|
+ "narration": "string — voiceover for outro (optional, defaults to text)",
|
|
|
+ "cta": "string — call-to-action (e.g. 点赞关注, 订阅获取更多)"
|
|
|
+ },
|
|
|
"globalStyle": {
|
|
|
"tone": "formal|casual|energetic|calm",
|
|
|
"pace": "slow|normal|fast",
|
|
|
@@ -35,15 +41,18 @@ Rules:
|
|
|
- narration should be natural spoken Chinese, suitable for TTS
|
|
|
- Split the content into 3-8 scenes depending on length
|
|
|
- keyframes should highlight the main visual points
|
|
|
-- The first scene should be an introduction, the last should be a conclusion/call-to-action`;
|
|
|
+- The first scene's narration may include a brief greeting (e.g. "大家好,"), but set displayText to the content without the greeting — the greeting should only be heard, not shown as main text
|
|
|
+- The last content scene should NOT include a conclusion or closing — outro handles that
|
|
|
+- outro.text should be a short, natural closing (10-30 characters)
|
|
|
+- outro.cta should encourage audience engagement`;
|
|
|
|
|
|
const templateSpecific: Record<TemplateType, string> = {
|
|
|
news: `
|
|
|
Template: News Report (资讯报道)
|
|
|
- Use a formal, authoritative tone
|
|
|
-- First scene: headline + breaking news intro
|
|
|
+- First scene: headline + key fact intro
|
|
|
- Middle scenes: key facts, data points, quotes from sources
|
|
|
-- Last scene: summary + implications
|
|
|
+- Last scene: implications or future outlook (do NOT summarize or conclude — outro handles closing)
|
|
|
- layoutHint preference: "split" for data, "full-text" for quotes`,
|
|
|
|
|
|
knowledge: `
|
|
|
@@ -51,7 +60,7 @@ Template: Knowledge Explanation (知识讲解)
|
|
|
- Use a calm, educational tone
|
|
|
- First scene: topic introduction + why it matters
|
|
|
- Middle scenes: step-by-step explanation with clear logic
|
|
|
-- Last scene: key takeaways + further reading suggestion
|
|
|
+- Last scene: final insight or extension (do NOT summarize — outro handles closing)
|
|
|
- layoutHint preference: "centered" for key concepts, "bullet-list" for steps`,
|
|
|
|
|
|
opinion: `
|
|
|
@@ -59,7 +68,7 @@ Template: Opinion Sharing (观点分享)
|
|
|
- Use a casual, conversational tone
|
|
|
- First scene: hook + personal stance
|
|
|
- Middle scenes: arguments, examples, counterpoints
|
|
|
-- Last scene: conclusion + call for discussion
|
|
|
+- Last scene: final thought or reflection (do NOT conclude — outro handles closing)
|
|
|
- layoutHint preference: "centered" for quotes, "full-text" for arguments`,
|
|
|
|
|
|
marketing: `
|
|
|
@@ -67,8 +76,8 @@ Template: Product Marketing (产品营销)
|
|
|
- Use an energetic, persuasive tone
|
|
|
- First scene: pain point / hook
|
|
|
- Middle scenes: product features, benefits, social proof
|
|
|
-- Last scene: CTA (call-to-action) + pricing/offer
|
|
|
-- layoutHint preference: "split" for features, "centered" for CTA`,
|
|
|
+- Last scene: strongest benefit or proof (do NOT add CTA — outro handles CTA)
|
|
|
+- layoutHint preference: "split" for features, "centered" for highlights`,
|
|
|
};
|
|
|
|
|
|
return base + "\n\n" + templateSpecific[template];
|