|
@@ -11,6 +11,7 @@ The output JSON must follow this exact schema:
|
|
|
"title": "string — video title, concise and catchy",
|
|
"title": "string — video title, concise and catchy",
|
|
|
"summary": "string — one-sentence summary",
|
|
"summary": "string — one-sentence summary",
|
|
|
"trendSummary": "string — OPTIONAL, github-trending only. One short sentence (≤30 chars) synthesizing the day's overall trend. Omit for other templates.",
|
|
"trendSummary": "string — OPTIONAL, github-trending only. One short sentence (≤30 chars) synthesizing the day's overall trend. Omit for other templates.",
|
|
|
|
|
+ "publish": "object — OPTIONAL, github-trending only. Posting metadata for the video page: { title, description, tags[] }. See template-specific rules. Omit for other templates.",
|
|
|
"scenes": [
|
|
"scenes": [
|
|
|
{
|
|
{
|
|
|
"id": "scene-N",
|
|
"id": "scene-N",
|
|
@@ -97,6 +98,11 @@ Template: GitHub Trending Showcase (GitHub 每日热榜)
|
|
|
COVER METADATA (github-trending only — emit this TOP-LEVEL field alongside title/summary; omit it for every other template):
|
|
COVER METADATA (github-trending only — emit this TOP-LEVEL field alongside title/summary; omit it for every other template):
|
|
|
- trendSummary: one short sentence (≤30 chars) synthesizing the overall trend across today's repos — what theme is hot or emerging. Must read as an editorial insight, NOT a restatement of the repo list or a generic filler. Example: "AI Agent 与代码智能工具持续升温". Plain CJK/ASCII only.
|
|
- trendSummary: one short sentence (≤30 chars) synthesizing the overall trend across today's repos — what theme is hot or emerging. Must read as an editorial insight, NOT a restatement of the repo list or a generic filler. Example: "AI Agent 与代码智能工具持续升温". Plain CJK/ASCII only.
|
|
|
|
|
|
|
|
|
|
+PUBLISH METADATA (github-trending only — emit this TOP-LEVEL \`publish\` object alongside title/summary; omit it for every other template). These fields become the video's posting metadata on the target platform (Bilibili/Douyin 简介与标签), NOT anything shown in the video itself:
|
|
|
|
|
+- publish.title: a catchy POSTING title for the video page. It MUST be distinct from the fixed cover masthead "GitHub 每日热榜" — weave in the day's overall trend or the single most notable repo. ≤ 40 chars. Example: "GitHub 今日热榜:AI Agent 与代码工具持续升温". Plain CJK/ASCII only.
|
|
|
|
|
+- publish.description: a 1–3 sentence video 简介 summarizing which repos/themes today's video covers and why a developer should watch. ≤ 200 chars. Plain CJK/ASCII only.
|
|
|
|
|
+- publish.tags: 3–8 话题 tags as an array of short strings, each ≤ 12 chars (e.g. ["GitHub","开源","AI Agent","编程","前端"]). Plain CJK/ASCII only.
|
|
|
|
|
+
|
|
|
PER-REPO SCENE STRUCTURE (mandatory for every repo scene):
|
|
PER-REPO SCENE STRUCTURE (mandatory for every repo scene):
|
|
|
|
|
|
|
|
displayText: the repo's fullName (e.g. "facebook/react"). Nothing else.
|
|
displayText: the repo's fullName (e.g. "facebook/react"). Nothing else.
|
|
@@ -116,10 +122,12 @@ github.review (点评推荐): one short recommendation, ≤ 30 Chinese character
|
|
|
|
|
|
|
|
narration (口播): ≤ 200 characters. Cover what the project does (deeper than intro), why it is notable today (timing / trend / adoption), and one distinctive characteristic a developer cares about. Pack specifics — numbers, comparisons, concrete use cases. Do NOT include a language bullet unless language is core to the value; do NOT read out the GitHub URL.
|
|
narration (口播): ≤ 200 characters. Cover what the project does (deeper than intro), why it is notable today (timing / trend / adoption), and one distinctive characteristic a developer cares about. Pack specifics — numbers, comparisons, concrete use cases. Do NOT include a language bullet unless language is core to the value; do NOT read out the GitHub URL.
|
|
|
|
|
|
|
|
-GREETING RULE (overrides the base prompt's first-scene greeting rule): the cover scene for this template already opens with a short factual masthead line ("…,今日精选 N 个热榜项目。") that frames the day. Therefore EVERY content scene's narration — including the first repo scene — MUST NOT begin with any of the following:
|
|
|
|
|
|
|
+GREETING RULE (overrides the base prompt's first-scene greeting rule): the cover scene for this template already opens with a greeting ("大家好,…"), so EVERY content scene's narration — including the first repo scene — MUST NOT begin with any of the following:
|
|
|
- A greeting: "大家好", "各位", "哈喽", "嗨", time-of-day greetings.
|
|
- A greeting: "大家好", "各位", "哈喽", "嗨", time-of-day greetings.
|
|
|
- A show-opener that references the day, show, or format: "今天是GitHub热榜速览", "今天为大家带来...", "今天给大家介绍...", "本期节目...", "本周热榜...", "欢迎收看...".
|
|
- A show-opener that references the day, show, or format: "今天是GitHub热榜速览", "今天为大家带来...", "今天给大家介绍...", "本期节目...", "本周热榜...", "欢迎收看...".
|
|
|
-- Any meta lead-in. The narration must start DIRECTLY with project content (e.g. "首先要聊的是 React...", "接下来这个项目...", "React 是 Facebook 出品的声明式 UI 库...").
|
|
|
|
|
|
|
+- Any meta lead-in. The narration must start DIRECTLY with project content (e.g. "首先要聊的是 React...", "接下来这个项目...", "React 是一款声明式 UI 库...").
|
|
|
|
|
+
|
|
|
|
|
+PROJECT NAME RULE: in narration, refer to each project by its SHORT repo name only (e.g. "React", "next.js", "bun"). NEVER read the owner/author prefix ("Facebook", "openai", "facebook/react") — the owner already appears on the GitHub 地址 card, and reading it aloud in a brief intro adds no information and can cause ambiguity (it is unclear whether you mean the person/org or the project). This applies to narration only; displayText and keyframe cards keep the owner/name form.
|
|
|
|
|
|
|
|
CHARACTER LIMITS ARE STRICT — exceeding them breaks the layout. If content does not fit, drop the least important detail rather than compressing into a longer sentence.
|
|
CHARACTER LIMITS ARE STRICT — exceeding them breaks the layout. If content does not fit, drop the least important detail rather than compressing into a longer sentence.
|
|
|
|
|
|
|
@@ -161,7 +169,7 @@ B. Keyframe cards (4 cards ideally, 3-4 acceptable). Pick content that ADDS valu
|
|
|
Number formatting rule (STRICT): whenever a count >= 1000 appears (stars, forks, contributors, today's growth, etc.), display it with a lowercase k suffix, NOT the raw integer. Examples: 1234 → "1.2k", 12345 → "12.3k", 123456 → "123k", 1234567 → "1235k", 999 → "999" (unchanged). NEVER use the m suffix — counts stay in k even past one million. The input text from the collector is already in this format — preserve it; if you ever compute or restate a count yourself, apply the same formatting before writing it into a card.
|
|
Number formatting rule (STRICT): whenever a count >= 1000 appears (stars, forks, contributors, today's growth, etc.), display it with a lowercase k suffix, NOT the raw integer. Examples: 1234 → "1.2k", 12345 → "12.3k", 123456 → "123k", 1234567 → "1235k", 999 → "999" (unchanged). NEVER use the m suffix — counts stay in k even past one million. The input text from the collector is already in this format — preserve it; if you ever compute or restate a count yourself, apply the same formatting before writing it into a card.
|
|
|
|
|
|
|
|
C. 详细描述 → narration (口播)
|
|
C. 详细描述 → narration (口播)
|
|
|
- Must be information-dense within the 200-char limit. Cover: what the project does (deeper than the headline), why it is notable, and 1-2 distinctive characteristics a developer would care about. Pack specifics — numbers, comparisons, concrete use cases — instead of filler phrases. Do NOT include a language bullet; mention the language only in passing if it is core to the value (e.g. "用 Rust 实现,启动速度比 Node 同类快数倍").
|
|
|
|
|
|
|
+ Must be information-dense within the 200-char limit. Cover: what the project does (deeper than the headline), why it is notable, and 1-2 distinctive characteristics a developer would care about. Pack specifics — numbers, comparisons, concrete use cases — instead of filler phrases. Refer to the project by its SHORT repo name only — do NOT read the owner/author in narration (e.g. say "React", not "Facebook 的 React" or "facebook/react"); the owner is already shown on the GitHub 地址 card, and reading it aloud can cause ambiguity. Do NOT include a language bullet; mention the language only in passing if it is core to the value (e.g. "用 Rust 实现,启动速度比 Node 同类快数倍").
|
|
|
If the content does not fit in 200 chars, split the project across 2 scenes — first scene uses the structure above with concise narration; second scene expands with deeper detail on features, comparisons, or ecosystem.
|
|
If the content does not fit in 200 chars, split the project across 2 scenes — first scene uses the structure above with concise narration; second scene expands with deeper detail on features, comparisons, or ecosystem.
|
|
|
|
|
|
|
|
A typical single-project scene therefore looks like: short displayText (项目名 [+ 极简类别]) + 3 mandatory keyframe cards (功能简介 / GitHub 地址 / 使用场景) + 1-2 value-add cards + dense narration (口播详细描述).
|
|
A typical single-project scene therefore looks like: short displayText (项目名 [+ 极简类别]) + 3 mandatory keyframe cards (功能简介 / GitHub 地址 / 使用场景) + 1-2 value-add cards + dense narration (口播详细描述).
|