Communitygithub.com

深度视角解说员

在 Windows 上的 Claude Code 中,从零开始制作一部 10 分钟的第二人称生物纪录片:频道品牌、事实、脚本、节拍、ElevenLabs v4 语音搭配音频标签、Pixabay 素材、Remotion 渲染和缩略图。

深度视角解说员 是什么?

深度视角解说员是一款专业级的 AI Agent 技能,专为在 Windows 系统上使用 Claude Code 的用户设计,用于自动化制作长约 10 分钟的“为什么你永远不想遇见 [动物]”系列纪录片。该技能遵循高度结构化的工作流程,从频道品牌塑造开始,然后通过网络研究收集事实,并按照严格的叙事框架(如开场悬念、五章节结构和双转折结尾)生成第二人称脚本。它利用 ElevenLabs 的 v4 模型生成带有情感音频标签的旁白,并使用 Remotion 创建动态矢量运动图形(非静态幻灯片),每句话对应一个视觉创意。该技能集成了 Pixabay、NOAA 和 Pexels 等来源的素材,通过脚本自动下载和处理它们。整体输出包括带有同步时间轴和音效的完整视频文件。”

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LexroAI/depth-pov-explainer/tree/main

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

深度视角解说员 是做什么的?

制作一部约 10 分钟的视频“为什么你永远不想遇见 [动物]”:使用 Remotion 制作扁平矢量动态图形(一切都在动,没有静态幻灯片),使用 ElevenLabs Eleven v4 进行旁白,每句话一个视觉创意。无论用户使用什么语言写作,始终用英语与用户交流;脚本、标签和提示也均使用美式英语。将所有 JSON/TXT/.env 文件保存为 UTF-8 格式,不带 BOM。

步骤 0 - D 盘的工作区(每次运行,缺失则创建)

根目录:D:\DepthPOV(如果 D 盘不存在,请询问用户其他驱动器)。

D:\DepthPOV\.env
D:\DepthPOV\studio\            Remotion 项目 (npx create-video@latest studio, Blank模板)
D:\DepthPOV\studio\src\lib\    共享视觉库 (core.tsx, sets.tsx, art.tsx, ui.tsx)
D:\DepthPOV\tools\             voice.py stock.py stock_pick.py sfx.py
D:\DepthPOV\videos\<slug>\     facts.json script.txt script_tagged.txt beats.json timing.json stock.json packaging.md voice.mp3 out.mp4 FINAL\
D:\DepthPOV\assets\stock\ music\ sfx\ thumbnails\
D:\DepthPOV\brand\brand.json

此技能附带的内容(缺失时复制到工作区,切勿覆盖本地较新版本):scripts/*.py -> D:\DepthPOV\tools\;remotion-lib/lib/*.tsx 和 brand.ts -> studio\src\lib\;remotion-lib/stills.mjs -> studio\;remotion-lib/example-blue-whale/ 是该技能作者完成的完整视频(13 个章节文件,约 66 个持久场景,Main.tsx,Thumb.tsx),用作参考实现,而不是逐场景复制。库从 studio\src\lib\brand.ts 获取频道名称、强调色和角色颜色,tools\sync_brand.py 从 brand.json 生成该文件;切勿在场景中硬编码频道名称或颜色。创建 studio 后,运行 npx remotion add @remotion/media @remotion/google-fonts。Python 需要 requests。 如果 .env 缺失,请创建它并为空值,然后停止,告知用户在记事本中打开并填写密钥:

ELEVENLABS_API_KEY=
ELEVENLABS_VOICE_ID=
ELEVENLABS_MODEL_ID=eleven_v4
PIXABAY_API_KEY=

PIXABAY_API_KEY 是免费的:登录 pixabay.com 并复制 https://pixabay.com/api/docs/ 上显示的密钥(一个密钥同时覆盖视频和照片)。忽略旧 .env 中包含的任何额外密钥。 切勿打印密钥值。检查 Node.js LTS 是否已安装;使用 npx skills add remotion-dev/skills 一次性安装 Remotion agent 技能,并在编写 Remotion 代码之前加载它们。如果用户提到“保留”,他们的意思是 Remotion。提醒一次,Remotion 仅对个人和非常小的公司免费(/remotion-license)。

步骤 1 - 品牌(仅在第一次运行时执行,保存到 brand.json;如果 brand.json 存在则跳过)

按顺序询问这些问题,每条消息一个,并始终附带建议:

  1. 频道名称。 询问用户是否已有名称。如果没有,以三种风格(神秘型,例如“深渊档案”;探索型,例如“深入深海”;直接型,例如“为什么你永远不会”)提出 8 个名称:1-3 个单词,容易念出声,不与现有大频道重名,不与“深度理论”相似,并且如果频道日后离开海洋主题也能适用。为每个名称提供一个匹配的 @ 账号。告诉用户在 YouTube 上搜索名称 + 账号以确认可用性(Claude 无法确认可用性)。保存 channel_name, handle, tagline。
  2. “你”角色,推荐一种:
    1. 水肺潜水员(橙色服,红色头灯)——海洋;最接近深度理论,最缺乏特色。
    2. 小型潜艇驾驶员——深海;整个视频以圆形舷窗 + HUD(深度,氧气)为框架。推荐用于海洋专属频道。
    3. 海难幸存者(筏上)——海洋表面;俯视木筏视角。
    4. 带头灯的探险家——丛林,洞穴,河流,冰川;黑暗中的光晕。推荐用于频道扩展到海洋以外的情况。
    5. 护林员 / 野外生物学家——陆地动物;双筒望远镜 + 野外笔记本。
    6. 时间旅行者——史前生物;年份计数器(-66,000,000)。
  3. 强调色 + 字体,以及频道自己的开场风格(展示 3 个示例冷开场,用户挑选)。 将 {channel_name, handle, tagline, character, look, signature_frame, accent {threat, safe, danger}, character_colors {suit, suit2, stripe, fins, fins_dark, lamp}(脚蹼使用高可见度颜色),font, opening_style} 保存到 brand.json,然后运行 python D:\DepthPOV\tools\sync_brand.py 以写入 studio\src\lib\brand.ts,并在每个视频中重复使用。捆绑的艺术库绘制的是水肺潜水员;对于任何其他角色(潜艇驾驶员、探险家、护林员、时间旅行者),在 art.tsx 中构建一个新组件,遵循相同的解剖规则(references/visual-style.md)。切勿使用深度理论的“Picture this.”开场、其精确调色板或潜水员设计。 在以下位置使用 channel_name:跨视频回调行(“如果您已经在 [channel_name] 频道看了一段时间...”),CTA/片尾屏幕行,描述,以及视频最后 10 秒的频道角标。

步骤 2 - 事实(在任何脚本之前)

通过网络搜索该动物。facts.json:25-35 个项目 {id, claim, number, unit, everyday_comparison, source_url, confidence}。除非获取的资料来源明确指出,否则不使用最高级(最大/最深/唯一/有史以来)。列出流行神话和事实真相。

步骤 3 - 脚本(固定结构;首先阅读 references/script-patterns.md)

使用 script-patterns.md 了解各章节预算、手法和原创性规则:从参考中学习节奏,但绝不照搬其措辞。每个脚本都根据该动物的事实全新编写;如果该动物已被参考覆盖(如抹香鲸),则避免其中列出的角度。

  1. 冷开场 0:00-0:25。第一行始终是品牌的标志性开场白,简短(3 秒以内),以便观众学习:“潜水日志,第 [n] 条。[深度]。气压:[PSI]。”第二行起是钩子,仍然在前 7 秒内:让观众立即身临险境——有东西触碰、抓住、盘旋或阻挡了光线,一个鲨鱼般的轮廓,一个阴影,一个看不见的东西——现在时态,不加解释,并立即在屏幕上展示(剪影,触手,阴影,眼睛)。只有在那之后才交代设定(夜潜,系绳,深度以下),一条观众信任的规则,以及一个打破规则并向你涌来的感官信号。切勿在前 7 秒内花费在平静的风景或后勤上。埋下一个感官细节,以便在视频中部得到呼应,并在稍后(真正的遭遇,近距离)与开场危险相呼应。没有介绍。
  2. 重构:列出人们通常害怕的动物,承认这一点,然后为 [动物] 提出三个主张;最后以“...为什么你永远不想遇见一个。”结束。
  3. 五个章节:体型,食物,捕猎/感知方式,大脑/行为,它是否曾攻击过人类。每个章节以一个问题结束,下一个章节以该问题开头。每个数字都附带一个日常比较。
  4. 大约 3:30 左右呼应埋下的细节。
  5. “你实际应该怎么做?”:四个选项被逐一否决,每个带有干幽默评论,最后给出裁决句。
  6. 转折 1:它几乎从不针对人类。转折 2:真正的危险其实来自相反方向。
  7. 生态系统角色。8. 结尾:以新的含义重复那条规则。9. CTA:询问接下来要介绍哪种生物,使用 brand.json 中频道的自有关键词(切勿照搬深度理论的“我确实会读它们”)。 语气:第二人称(35 个以上“你”),句子 20 个单词以内,5-7 个干幽默比喻笑话,1,600-1,800 词,语速约 170 wpm。没有“让我们开始吧”,没有表情符号。保存为 script.txt(无标签)。

步骤 4 - 场景和节拍(首先阅读 references/visual-style.md)

该视频包含约 60 个持久场景,而非每句话一张卡片。scenes.json:{scene_id, chapter, setting (deep|mid|surface-split|paper|radar|xray|black|stock), camera (drift|push-in|follow-dive|tilt|top-down|macro), cast (illustrated subjects), beats:[...]}。一个场景持续 6-20 秒,涵盖 2-6 句话;每句话为场景添加一个元素(主体进入,测量线绘制,计数器运行,标签出现,图章击中,特效触发),而不是替换它。 Beat = {id, scene_id, text, add (what appears/changes), label (0-5 words or empty; never repeats the narration), label_pos (top|under-subject|near:), accent, fact_ids, stock_query?}。 对于每种句子类型,使用参考工具包:数字 -> 场景内图表(测量线,米尺,计数器,图标阵列,网格,饼图);比较 -> 物体出现在主体旁边(公共汽车驶入,大象弹出);历史 -> 纸质/怀旧道具和表面布景;笑话 -> 道具或简笔画(收据,表格,白板,图章,UI 对话框);危险 -> 红色标签 + 冲击特效;感知 -> 雷达/X 射线模式切换。“你”角色出现在冷开场、呼应、选项章节和结尾,始终在动物旁边,体型很小。

步骤 5 - 事实门控(阻止)

表格:sentence | fact_id | source | OK/FIX,针对每条含有数字或最高级的句子。修复所有 FIX 行,并在投入 ElevenLabs 费用前向用户展示该表格。

步骤 6 - 语音(Eleven v4 + 音频标签)

  • 通过添加 ElevenLabs 自动标签功能的 v4 音频标签创建 script_tagged.txt:[thoughtful], [curious], [uneasy], [dry], [whispers], [short pause], [long pause]。每 2-3 句话最多一个标签;耳语/停顿用于揭示和呼应时刻;笑话前使用 [dry];包含统计数据的句子内不要添加标签。对于每个频道,向用户展示一次 10 行样本,以批准标签密度。
  • 调用 POST https://api.elevenlabs.io/v1/text-to-speech/{ELEVENLABS_VOICE_ID}/with-timestamps,使用 .env 中的 model_id (eleven_v4)。每次请求最多 10,000 个字符:在章节边界处拆分(通常 2 个请求),传递 previous_text/next_text 以保证连续性,使用 ffmpeg 连接。
  • 如果 with-timestamps 对于 v4 被拒绝,则使用普通端点,然后使用 ElevenLabs 强制对齐(POST /v1/forced-alignment),输入音频 + script.txt(去掉标签)。
  • 将单词时间映射到句子 -> timing.json {beat_id, start_s, end_s, start_frame, end_frame},帧率 30 fps。

步骤 6b - 音效(ElevenLabs 音效,无需 CapCut)

在 D:\DepthPOV\assets\sfx\ 中维护一个可重用的 SFX 库,使用 POST https://api.elevenlabs.io/v1/sound-generation {text, duration_seconds, prompt_influence 0.6} 生成,使用相同的 ELEVENLABS_API_KEY(tools/sfx.py;仅生成缺失的文件,因此费用只花一次)。核心集:whoosh_soft, whoosh_deep, pop_soft, tick_ui, counter_roll, stamp, paper_slide, impact_heavy, splash_big, bubbles, sonar_ping, low_hum, whale_moan, heartbeat_slow, riser_tension, scan_beep, warning_beep, strike_line, gulp, boat_motor;需要时添加特定生物的声效。将副本归一化到 -20 LUFS 并放入 studio/public/sfx/。将每个 SFX 放在其所属的动作上(元素进入,计数器,图章,冲击,场景变化),使用 <Sfx at=... vol=...> 格式,音量 0.3-0.6,每秒不超过一个;语音保持优先。

步骤 7 - 素材镜头(目标 6-10 个片段,每个 3-6 秒,位于情感高峰;最多占运行时长的 8%)

来源,按此顺序(仅限这些;绝不能用 YouTube/TikTok 翻录、纪录片镜头或任何标记为“仅限编辑用途”的内容):

  1. Pixabay(自动,API)。 一个 PIXABAY_API_KEY 即可服务视频 https://pixabay.com/api/videos/?key=...&q=... 和照片 https://pixabay.com/api/?key=...&q=...。每 60 秒最多 100 次请求;将每个响应缓存 24 小时到 assets/stock/_cache;不进行批量下载。工具:tools/stock.py, tools/stock_pick.py。
  2. NOAA(手动,最适合真实物种)。 NOAA 没有素材视频 API。Claude 查找片段(NOAA Fisheries 物种页面和视频画廊,NOAA Ocean Exploration,NOAA Photo Library,NOAA 自己在 Wikimedia Commons 上的上传)并向用户提供编号列表:直接页面链接,片段显示的内容,填充的插槽,确切的署名行,以及要选择的文件(最大的 MP4,理想为 1080p)。用户下载到 assets/stock//noaa/。由 NOAA 工作人员制作的镜头通常是公共领域,但请阅读每个页面:许多鲸鱼片段是在研究许可下或由承包商拍摄的,并且需要注明“NOAA Fisheries,许可 #XXXX”或摄影师姓名等署名行;如果页面限制重复使用,请跳过该片段。下载后,务必读取文件的开始画面和结束演职员表:NOAA Fisheries B-roll 开始画面显示“All footage courtesy of NOAA... Please credit NOAA Fisheries”以及任何许可号(安全);教育影片(例如 Ocean Today)通常在片尾列出外部贡献者,如制作公司或素材机构,因此他们的镜头不是公共领域,必须拒绝;同时拒绝带有硬编码字幕或徽标的文件。仅使用其开始画面指明目标物种的片段(B-roll 包包含多种物种),并在描述中说明“NOAA 不认可此频道”。切勿使用 NOAA 标志。
  3. Pexels(手动链接)。 上次检查时(2026 年 11 月),API 密钥发放已暂停,因此 Claude 搜索 pexels.com/videos(Claude 在 Chrome 中或网络搜索)并向用户提供直接剪辑页面链接,包含要下载的内容(Full HD 1920x1080),下载到 assets/stock//pexels/。为一个视频手动下载几个片段在 Pexels 许可下是可以接受的(允许商业使用);禁止批量或脚本化抓取。如果 PEXELS_API_KEY 后来出现在 .env 中,则改用 API(头信息 Authorization: <key>,GET https://api.pexels.com/v1/videos/search?query=...&orientation=landscape&size=medium&per_page=..,200 请求/小时)。
  4. Wikimedia Commons(手动,偶尔)。 仅包含具有明确 PD / CC BY / CC BY-SA 许可的文件;记录作者 + 许可。 将片段放置在参考实现所在的位置:紧接在冷开场之后(真实的动物或潜水员),在“现实世界”的主张上(跃身击浪,群体,船只,捕鲸,航拍),以及在转折/生态系统处;分散放置(永远不要连续 3 个)。对于每个插槽,搜索 3-5 个同义词,仅保留其标签/标题包含主体的结果,然后使用 ffmpeg 从每个候选中提取一帧并查看它;拒绝错误的物种(座头鲸不是蓝鲸)和离题镜头。不同物种的片段只能用于一般性陈述(“大型鲸类”),并附有屏幕注释“(图示:座头鲸)”。将片段调暗/调冷以匹配调色板,使用 8 帧模糊溶解进行淡入和淡出。 每个来源都必须注明出处。 每个片段在屏幕左下角显示一个小型屏幕署名,持续其显示时长的...

[已截断待翻译]

相关技能