with one click
lark-knowledge-allin-transcript
// All In Podcast 逐字稿生成:说一句话全自动完成,含翻译+AI分析+排版美化。触发词:allin逐字稿、生成逐字稿、allin转写、allin建页。用法:allin逐字稿 <YouTube_URL> <record_id>
// All In Podcast 逐字稿生成:说一句话全自动完成,含翻译+AI分析+排版美化。触发词:allin逐字稿、生成逐字稿、allin转写、allin建页。用法:allin逐字稿 <YouTube_URL> <record_id>
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | lark-knowledge-allin-transcript |
| version | 2.3.0 |
| description | All In Podcast 逐字稿生成:说一句话全自动完成,含翻译+AI分析+排版美化。触发词:allin逐字稿、生成逐字稿、allin转写、allin建页。用法:allin逐字稿 <YouTube_URL> <record_id> |
| metadata | {"requires":{"bins":["lark-cli","yt-dlp","python3"],"pip":["openai","anthropic"],"scripts":["scripts/allin/vtt_clean.py","scripts/allin/translate_bilingual.py","scripts/allin/build_feishu_page.py","scripts/allin/run_episode.sh"],"env":["ARK_API_KEY"]}} |
用户只需说一句话,Claude Code 自动完成全部步骤:
allin逐字稿 https://youtube.com/watch?v=xxx recXXXXXX
触发后按以下顺序全部自动完成,无需用户手动干预:
CRITICAL — 开始前 MUST 先读取:
~/.agents/skills/lark-knowledge-config/config.json → 读 all_in_podcast 区块../lark-shared/SKILL.md — 认证、权限处理lark-cli base +record-get \
--base-token "<config.all_in_podcast.base_token>" \
--table-id "<config.all_in_podcast.table_id>" \
--record-id "<record_id>"
提取:期号、中文标题、发布日期、YouTube链接、主题分类、五维分析(AI摘要字段)。
export ARK_API_KEY=<从用户环境或 config 读取>
cd ~/lark-knowledge
bash scripts/allin/run_episode.sh <YouTube_URL> <record_id>
自动完成:
.en.vtt)segments.jsonbilingual.json输出路径:/tmp/allin_<VIDEO_ID>/bilingual.json
字幕下载失败时:告知用户,接受手动上传 .vtt/.srt/.txt,直接传给 vtt_clean.py
读取 bilingual.json,用 Claude Haiku 核查:
权力边界:只标 ❓,不改内容,只做机械比对。
输出中文报告展示给用户:
⚠️ 发现 N 处需确认:
① [时间] 问题描述 → 建议操作
用户确认后继续(默认全部接受可直接 Enter)。
基于完整中文译文,用 Claude Sonnet 生成:
精华金句(3-5条):
> **"英文原句"**
> 中文译文 — 说话人
注释(≤15条,全期 91 分钟约每 5 分钟 1 条):
{time_label: ["注释内容"]}五维分析终稿(150-250字):
① 议题背景
② 核心论点链
③ 市场与行业判断
④ 四人立场图谱(Chamath/Jason/Sacks/Friedberg)
⑤ 国内启示(必须出现中国公司/政策名词)
将中文译文 + 五维分析交给 Claude Opus 检测:
输出中文报告:⚠️ 需关注 或 ✅ 通过,用户确认后继续。
将 Step 3-5 的输出整合,保存到:
/tmp/allin_<record_id>_analysis.json
格式:
{
"quotes": "精华金句 Markdown 文本",
"annotations": {
"00:00:00–00:15:00": ["注释1", "注释2"],
"00:15:00–00:30:00": ["注释3"]
},
"five_dim": "① 议题背景...\n② 论点链...\n③ ...\n④ ...\n⑤ ..."
}
python3 ~/lark-knowledge/scripts/allin/build_feishu_page.py \
/tmp/allin_<VIDEO_ID>/bilingual.json \
--record-id "<record_id>"
自动完成:
analysis.json + 收件表元数据| 角色 | 模型 | 职责 |
|---|---|---|
| 翻译 Worker | Doubao-Seed-2.0-pro(火山引擎) | 字幕全文逐句翻译,成本约为 Claude 的 1/10 |
| 事实校对 | Claude Haiku | 核查数字/人名/归属,输出中文异常报告 |
| 内容生产 | Claude Sonnet | 注释生成 + 五维分析 + 精华金句 |
| 异常检测 | Claude Opus | 世界知识核验 + 内部一致性检查 |
Salesforce(赛富时))**[HH:MM:SS–HH:MM:SS]**
*Jason: English original text*
<callout background-color="light-gray">**Jason**:中文翻译</callout>
*Chamath: English original text*
<callout background-color="light-gray">**Chamath**:中文翻译</callout>
<callout background-color="light-blue">注释内容,1-2句,自然散文风格</callout>
设计原则:英文原文在前(斜体),中文翻译在后(light-gray callout 灰底),视觉上一眼区分原文与译文。 所有段落间用
\n\n双换行,确保 overwrite 模式重解析时飞书不合并段落。
| 规则 | 执行方式 |
|---|---|
| 章节标题 | ## <text color="blue">标题</text> |
| 英文原句 | *说话人: 原文*(斜体,每条发言首行) |
| 中文译文 | <callout background-color="light-gray">**说话人**:译文</callout> |
| 注释块 | <callout background-color="light-blue"> 无 emoji 无标题(与译文 gray 区分) |
| 概览块 | <callout background-color="light-yellow"> |
| 禁止 | 逐字稿区域不用 > 引用块前缀(会触发飞书引用合并) |
| 禁止 | 逐字稿区域不用 <text color="red/blue/..."> 着色词 |
| red 着色 | 仅限五维分析里的关键数字 |
{期号} · {日期} · {时长}分钟 · 播放量{播放量} · {主题}
📌 一句话核心亮点(≤30字)
<callout light-yellow>· 议题 · 关键判断 · 国内启示</callout>
## 手绘笔记速览
## 📥 下载资源
## 五维分析(一至五)
## 精华金句
## 中英对照逐字稿
引用 ../lark-knowledge-format/SKILL.md 模式 2,执行 Step 3.9 All In Podcast 专项排版规则。
⚠️ CRITICAL:overwrite 绝对不能覆盖逐字稿区域
飞书
--mode overwrite会全页重新解析 Markdown,若把逐字稿(数万字)一起 overwrite 进去:
- callout 标签会被重新解析,可能导致格式错乱
- 极大的 Markdown 正文容易触发飞书 API 超时或截断
正确做法:只 overwrite 页面头部到「精华金句」之间的内容(不含逐字稿), 逐字稿区域(
<!-- TRANSCRIPT_START -->之后)保持原样,一个字都不动。操作流程:
lark-cli docs +fetch --doc <wiki_url>读取全文- 找到
<!-- TRANSCRIPT_START -->分隔符,只排版其前面的部分- 用
--mode overwrite只更新头部 Markdown(不含逐字稿)- 如需修正个别逐字稿段,用
--mode replace_range精确替换单个段落
执行:
lark-cli docs +fetch --doc <wiki_url> # 读取页面
# 只对 <!-- TRANSCRIPT_START --> 之前的内容(头部+五维+金句)做排版
lark-cli docs +update --doc <wiki_url> --mode overwrite --markdown "<仅头部排版后内容(不含逐字稿)>"
排版完成后,生成「注释版」和「原稿版」两份 PDF,自动上传飞书云盘并更新页面下载链接:
python3 ~/lark-knowledge/scripts/allin/generate_pdf.py \
/tmp/allin_<VIDEO_ID>/bilingual.json \
--record-id "<record_id>"
完成后自动:
/tmp/allin_<期号>_annotated.pdf — 注释版(含内联注释)/tmp/allin_<期号>_original.pdf — 原稿版(干净双语稿)PDF状态 = 已完成前提:
build_feishu_page.py需先完成(收件表中有「飞书页面URL」字段),否则上传后无法写入页面链接
可选参数:
--skip-upload:只本地生成,不上传飞书--html-only:只生成 HTML,用于浏览器手动打印--annotated-only / --original-only:只生成其中一版使用 V2 模板(scripts/shared/poster_template.py 的 cover_v2 + inner_v2 双模板),生成 5 张图:1 张封面 + 4 张内页。提示词由 poster_template 统一渲染,配色使用同一组 V2 色彩体系,保证整期视觉一致。
优先方式:派 Codex 生成
Codex 内置 gpt-image-2 图片生成能力,不消耗用户 API 额度。先用 --prompts-only 拿到提示词,再逐张派 Codex:
# 先生成提示词
python3 ~/lark-knowledge/scripts/allin/generate_sketchnote.py \
--record-id "<record_id>" --prompts-only
拿到每张图的提示词后,通过 codex:codex-rescue 逐张派发:
目标:用 gpt-image-2 生成一张手绘笔记图片
提示词:<该张图的完整提示词>
尺寸:1024x1536
保存路径:/tmp/allin_<期号>_sketch_0N_<主题>.png
Fallback:Codex 失败时走 API
若 Codex 报错(额度不足 / 超时 / 生成失败),改用脚本直接调 API:
python3 ~/lark-knowledge/scripts/allin/generate_sketchnote.py \
--record-id "<record_id>"
输出:/tmp/allin_<期号>_sketch_01_封面.png … _sketch_0N_国内启示.png
固定结构(V2 手绘高级概念海报):
cover_v2,巨型核心词 + 视觉隐喻 + 嵌入式封面信息inner_v2,五维①②提炼的要点inner_v2,五维③的行业判断inner_v2,四位主播立场图谱inner_v2,五维⑤ + 精华金句样张验证(推荐姿势,节省token+时间)
历史期先从飞书 Wiki 回拉现有分析:
python3 ~/lark-knowledge/scripts/allin/utils.py extract-analysis \
--record-id "<record_id>" \
--out /tmp/allin_<record_id>_analysis.json
新期直接复用当前流程已有的 /tmp/allin_<record_id>_analysis.json。先只生成第 1 张样张确认风格和内容密度:
python3 ~/lark-knowledge/scripts/allin/generate_sketchnote.py \
--record-id "<record_id>" \
--analysis /tmp/allin_<record_id>_analysis.json \
--pages 1 \
--output-dir /tmp
耗时参考:单张约 3-5 分钟;全 5 张并发约 5-7 分钟。
--start-from N 继续,不用重头来bitable:record、docs:doc、wiki:node:readonly