codeck-speech

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

codeck speech

codeck 演讲稿生成

Role activation

角色激活

Read
$DECK_DIR/diagnosis.md
. If a speech role is recommended, use it. Otherwise, pick a coach based on domain and audience:
Technical → Feynman: simplify the complex, bridge with analogy
Business → Jobs: build anticipation, one "one more thing"
Academic → Hans Rosling: let data tell the story
读取
$DECK_DIR/diagnosis.md
。如果推荐使用演讲稿角色,则直接启用。否则,根据领域和受众选择对应风格的导师:
技术类 → Feynman:简化复杂内容,用类比搭建认知桥梁
商业类 → Jobs:营造期待感,设置「one more thing」彩蛋
学术类 → Hans Rosling:让数据讲故事

Setup

环境配置

bash
DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")"
mkdir -p "$DECK_DIR"
bash "$HOME/.claude/skills/codeck/scripts/status.sh" "$DECK_DIR"
Read:
  • HTML (latest
    *-r*.html
    ) — actual slide content
  • outline.md — structure, arc, user intent
  • design-notes.md — visual intent (speech rhythm should match visual rhythm)
If no HTML and no outline, suggest
/codeck-design
or
/codeck-outline
first.
If only outline exists, write based on outline — note that the script is based on structure, not final visuals.
Smart skip: skip questions if user's instruction already specifies style and duration.
bash
DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")"
mkdir -p "$DECK_DIR"
bash "$HOME/.claude/skills/codeck/scripts/status.sh" "$DECK_DIR"
读取内容:
  • HTML(最新的
    *-r*.html
    文件)—— 实际的幻灯片内容
  • outline.md —— 结构、叙事弧、用户意图
  • design-notes.md —— 视觉设计意图(演讲节奏应匹配视觉节奏)
如果没有HTML也没有大纲,建议先使用
/codeck-design
/codeck-outline
命令。
如果只有大纲,则基于大纲撰写——需备注脚本是基于结构而非最终视觉内容生成。
智能跳过: 如果用户指令已经指定了风格和时长,跳过后续询问步骤。

Questions

询问信息

Q1: Style

Q1: 风格

  • A) TED — conversational, story-driven, breathing room
  • B) Formal — structured, precise language
  • C) Casual — natural, humor ok
  • A) TED —— 口语化、故事驱动、预留停顿空间
  • B) 正式 —— 结构化、用词精准
  • C) 轻松随意 —— 自然流畅,可使用幽默

Q2: Duration

Q2: 时长

  • A) 5 min — lightning, ~1000 words
  • B) 15 min — standard, ~3000 words
  • C) 30+ min — deep dive, ~6000 words
  • A) 5分钟 —— 闪电演讲,约1000字
  • B) 15分钟 —— 标准演讲,约3000字
  • C) 30分钟以上 —— 深度分享,约6000字

Generate

生成内容

Before writing, build a fragment map. For each slide in the HTML, list: slide number, title, fragment count (
data-f
elements). This map determines the speech structure — slides with fragments get
### [on enter]
+
### [fragment N]
sections, slides without get a single block. Do not skip this step.
Write a complete, readable-aloud transcript. Page by page.
撰写前先构建片段映射表。 针对HTML中的每一页幻灯片,列出:幻灯片编号、标题、片段数量(
data-f
元素)。该映射表决定演讲结构——带片段的幻灯片会生成
### [进入时]
+
### [片段N]
章节,无片段的幻灯片则生成单个内容块。请勿跳过该步骤。
逐页撰写完整、适合大声朗读的逐字稿。

Rules

规则

  1. One section per slide — matches the deck
  2. Transitions — natural bridges between pages
  3. Stage directions — write in the same language as the transcript. Chinese:
    [停顿 2秒]
    [放慢]
    [看观众]
    ; English:
    [pause 2s]
    [slow down]
    [look at audience]
    ; other languages: translate accordingly. The speaker must understand them without switching languages.
  4. Word count — ~200 words/min Chinese, ~130 words/min English
  5. Source-based — no fabricated data
  6. Strong opening — story, data, or question
  7. Strong close — callback to opening or call to action
  1. 每页幻灯片对应一个章节 —— 与演示文稿结构匹配
  2. 过渡衔接 —— 页面之间设置自然的过渡语
  3. 舞台提示 —— 与演讲稿使用相同语言编写。中文:
    [停顿 2秒]
    [放慢语速]
    [看向观众]
    ;英文:
    [pause 2s]
    [slow down]
    [look at audience]
    ;其他语言对应翻译即可。演讲者无需切换语言即可理解提示内容
  4. 字数控制 —— 中文约200字/分钟,英文约130字/分钟
  5. 基于原文 —— 不得编造数据
  6. 开场有力 —— 用故事、数据或问题开场
  7. 收尾有力 —— 呼应开场或给出行动号召

Style notes

风格说明

TED: use "you" / "we", mix short and long sentences, pause after key points, end by echoing the opening.
Formal: complete sentences, logical progression, summarize + outlook at the end.
Casual: colloquial, self-deprecating ok, casual transitions, end with a surprise.
TED风格: 使用「你」/「我们」称谓,长短句结合,关键点后停顿,结尾呼应开场。
正式风格: 句式完整,逻辑递进,结尾总结+展望。
轻松风格: 口语化,可使用自嘲表达,过渡随意,结尾设置惊喜。

Time budget

时间预算

SlideTitleWordsEstimate
1.........
  • A) Help me trim the ones over time
  • B) I'll manage it myself
幻灯片标题字数预计时长
1.........
  • A) 帮我删减超时的内容
  • B) 我会自行调整

Write back HTML data-notes (fragment-synced)

回写HTML data-notes(与片段同步)

The engine's
buildNotes()
concatenates the slide's
data-notes
with each visible fragment's
data-notes
as the presenter steps through. Use this to sync speech rhythm with fragment rhythm.
引擎的
buildNotes()
方法会在演讲者翻页时,将幻灯片的
data-notes
与每个可见片段的
data-notes
拼接展示。用该功能实现演讲节奏与片段播放节奏的同步。

How it works

工作原理

  1. Read the slide's fragments — find all elements with
    data-f="N"
    to know the stepping order
  2. Split the speech into segments — one segment per step (slide entry + each fragment)
  3. Assign notes to each step:
    • Slide's
      data-notes
      → what to say when the slide first appears (before any fragment)
    • data-f="1"
      element's
      data-notes
      → what to say when fragment 1 reveals
    • data-f="2"
      element's
      data-notes
      → what to say when fragment 2 reveals
    • ...and so on
  1. 读取幻灯片片段 —— 找到所有带
    data-f="N"
    的元素,明确播放顺序
  2. 拆分演讲稿为片段 —— 每个步骤对应一个片段(幻灯片进入 + 每个片段展示)
  3. 为每个步骤分配备注:
    • 幻灯片的
      data-notes
      → 幻灯片首次出现时(展示任何片段前)要说的内容
    • data-f="1"
      元素的
      data-notes
      → 片段1展示时要说的内容
    • data-f="2"
      元素的
      data-notes
      → 片段2展示时要说的内容
    • ...以此类推

Example

示例

Speech for slide 3:
"Let's talk about the three ideas behind codeck. [pause 2s] First, it recruits people, not rules. [pause] Second, isomorphic mapping. [pause] Third, no schema ceiling."
Slide 3 has
data-f="1"
,
data-f="2"
,
data-f="3"
:
html
<section class="slide" data-notes="Let's talk about the three ideas behind codeck. [pause 2s]">
  <h2 data-f="1" data-notes="First, it recruits people, not rules. [pause]">People, not rules</h2>
  <p data-f="2" data-notes="Second, isomorphic mapping. [pause]">Isomorphic mapping</p>
  <p data-f="3" data-notes="Third, no schema ceiling.">No schema ceiling</p>
</section>
Presenter presses → three times. Notes build up progressively:
  • Step 0: "Let's talk about the three ideas..."
  • Step 1: + "First, it recruits people..."
  • Step 2: + "Second, isomorphic mapping..."
  • Step 3: + "Third, no schema ceiling."
第3页幻灯片的演讲稿:
"我们来聊聊codeck背后的三个核心理念。[停顿 2s] 第一,以人为本,而非规则约束。[停顿] 第二,同构映射。[停顿] 第三,无schema上限。"
第3页幻灯片有
data-f="1"
data-f="2"
data-f="3"
html
<section class="slide" data-notes="Let's talk about the three ideas behind codeck. [pause 2s]">
  <h2 data-f="1" data-notes="First, it recruits people, not rules. [pause]">People, not rules</h2>
  <p data-f="2" data-notes="Second, isomorphic mapping. [pause]">Isomorphic mapping</p>
  <p data-f="3" data-notes="Third, no schema ceiling.">No schema ceiling</p>
</section>
演讲者按3次翻页键。备注会逐步拼接展示:
  • 步骤0: "我们来聊聊codeck背后的三个核心理念..."
  • 步骤1: + "第一,以人为本,而非规则约束..."
  • 步骤2: + "第二,同构映射..."
  • 步骤3: + "第三,无schema上限。"

Rules

规则

  • If a slide has no fragments, put the full speech in the slide's
    data-notes
  • HTML-escape quotes inside
    data-notes
    attribute values
  • Keep stage directions (
    [pause]
    ,
    [slow down]
    , etc.) in the notes
  • Each segment should be self-contained — the presenter reads what's new at each step
  • Match the number of speech segments to the number of steps (1 + fragment count)
  • 如果幻灯片没有片段,将完整演讲稿放入幻灯片的
    data-notes
  • data-notes
    属性值内的引号需要进行HTML转义
  • 保留备注中的舞台提示(
    [pause]
    [slow down]
    等)
  • 每个片段内容独立——演讲者只需阅读每个步骤新增的内容
  • 演讲片段数量与步骤数量(1 + 片段数)匹配

Output: $DECK_DIR/speech.md

输出路径:$DECK_DIR/speech.md

markdown
---
style: "{style}"
duration: "{target}"
totalEstimate: "{estimate}"
---
markdown
---
style: "{style}"
duration: "{target}"
totalEstimate: "{estimate}"
---

Speech: {topic}

演讲稿:{topic}



Slide 1: {title}

幻灯片1:{title}

<!-- estimate: {N}s | {M} words | fragments: 0 -->
{verbatim speech text}
[pause 2s]

<!-- 预计时长: {N}秒 | {M}字 | 片段数: 0 -->
{逐字演讲内容}
[停顿 2秒]

Slide 2: {title}

幻灯片2:{title}

<!-- estimate: {N}s | {M} words | fragments: 3 -->
<!-- 预计时长: {N}秒 | {M}字 | 片段数: 3 -->

[on enter]

[进入页面时]

{what to say when slide appears, before any fragment}
{幻灯片加载完成、任何片段展示前要说的内容}

[fragment 1]

[片段1]

{what to say when fragment 1 reveals}
{片段1展示时要说的内容}

[fragment 2]

[片段2]

{what to say when fragment 2 reveals}
{片段2展示时要说的内容}

[fragment 3]

[片段3]

{what to say when fragment 3 reveals}

undefined
{片段3展示时要说的内容}

undefined

Done

完成

Point to the single strongest moment in the script — the line or pause that will land hardest:
codeck speech done.
Strongest moment: {slide N — what happens and why it works. e.g., "Slide 4, the three-second pause after the question. That silence is where the audience decides you're worth listening to."}
{one line — readiness assessment}
Output:
$DECK_DIR/speech.md
+ HTML data-notes updated Press P in the deck for speaker mode to see the script.
All done. Need to export?
/codeck-export
. Check progress anytime with
/codeck
.
指出脚本中最有冲击力的一个瞬间——效果最好的台词或停顿:
codeck 演讲稿生成完成。
最有冲击力的瞬间:{第N页幻灯片 —— 具体内容及效果原因,例如:「第4页幻灯片,提问后的3秒停顿。这段沉默会让观众判断你是否值得倾听。」}
{一行内容——就绪状态评估}
输出:
$DECK_DIR/speech.md
+ HTML data-notes 已更新 在演示文稿中按P进入演讲者模式即可查看脚本。
全部完成。需要导出?使用
/codeck-export
命令。随时使用
/codeck
命令查看进度。