Communitygithub.com

fltman/infofilm

制作配有旁白的信息图表解说片(通常5–15分钟),以1950年代教学卡片新闻片风格呈现真实主题——系统如何运作、发生了什么、接下来会怎样;包含哑剧吉祥物、热情过度的解说员、演唱式商业插曲以及代码绘制的信息图表。

infofilm 是什么?

infofilm 是一款用于制作信息图表解说片的 AI 技能,它能够将真实主题(如系统工作原理、历史事件或未来展望)转化为风格独特的1950年代教学卡片新闻片。该技能通过一个完整的多步骤管道工作:首先进行基于事实的研究并编写脚本,然后使用 ElevenLabs 生成带逐字符时间戳的解说音频,通过 Suno 创作主题曲、背景音乐和广告歌,利用 Gemini 绘制插图,并最终在 Remotion 中根据语音时间码编排场景。输出成品是符合 −14 LUFS 标准的母带文件及配套 SRT 字幕文件。该技能自带一个完整的 Leap Year 演示模板,用户可逐步替换其中的内容来构建自己的影片。它适用于 Claude Code、Cursor 等支持自定义技能的平台,特别适合需要制作高质量、风格化解说视频的用户,例如当用户提出“制作一个解说片”、“信息图表视频”或“像大选影片那样的新闻片”等要求时。技能内置了严格的规则,包括在付费操作前必须徵得用户同意、绝不猜测事实、所有文字和数字均由代码绘制而不得嵌入图片,以及确保讽刺的公正性等。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/fltman/infofilm/tree/HEAD/skills/infofilm

在你喜欢的 AI 中提问

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

文档

infofilm: 信息图表解说片

使用此技能制作的影片,是一副铺在深蓝色桌面上的教学卡片。每张卡片都有标题栏、图片窗和说明栏。AI 插画在窗口中播放,代码绘制的信息图表会在提到它们的那个确切词语上叠加出现。新闻片解说员传达含义,吉祥物则通过哑剧表演出来,从不说话。演唱式商业插曲和一首结尾叙事曲为影片赋予节奏。

每个数字、标题和标签都是根据事实库用代码绘制而成。图片从不包含文字。

template/ 中的模板是一个完整可用的影片:一个关于闰年的一分钟演示。先做脚手架搭建,然后逐步将演示内容替换成你自己的影片。影片可以在每个阶段渲染:没有组件的场景会显示其卡片,没有旁白的场景会获得预估时长。这样你总能在花钱之前看到整体效果。

固定规则(优先级高于便利性)

  1. 花钱:先问。 ElevenLabs、图片生成和 Suno 下载都需要实际费用或配额。每次付费批次前,说明是什么、多少项以及预估成本;--dry-run 会打印出来。等待用户说“是”。该“是”仅覆盖当前批次,除非用户已给出长期授权(“图片、语音和音乐你可以直接操作”)。在 notes/log.md 中记录每次授权和费用。
  2. 绝不猜测事实。
    • 每项声明和数字都来自 notes/research.md,它引用了主要来源。屏幕上的每个数字都来自 video/src/data.ts,它引用了研究部分的来源。
    • 时事必须根据主要来源核实。如果某件事无法核实,则将其排除在影片之外,或让该场景等待;参见 references/script.md 中的“等待的场景”。
  3. 文字和数字由代码绘制,而非图片模型。 图片提示词中禁止出现文字,且每张图片都会被检查。
  4. 用户听,Whisper 不听。 绝不要转录生成的语音来检查;Whisper 听到的错误比实际存在的多。应给用户提供一个试听页面。
  5. 公正的讽刺。 讽刺的对象是系统、机制和奇观本身,而非任何党派、群体或个人。在尺寸、颜色逻辑和动画上对待各方一视同仁。图片中不出现真实人物或商标。
  6. 所有变音符号必须正确(å ä ö é ü …),包括在给子代理的提示词中。明确告知每个子代理。
  7. 按用户字面意思理解。 “反乌托邦”、“复古”或“辐射风”是情绪基调,不是道具清单。当一个风格词可能有多种含义时,先展示提案并在确认后再进行构建(参见 references/style.md)。

流程

按顺序完成以下阶段。⛔ 步骤是门控:停下来,征求用户决策后再继续。

0 · 启动

  • 确认主题、受众、语言、时长(默认约 12 分钟)和目的。检查环境中的 ELEVENLABS_API_KEY 和 OPENROUTER_API_KEY、安装了 claude-in-chrome 扩展的 Chrome 浏览器、Suno 登录账号,以及 node、pnpm/npm、ffmpeg 和包含 numpy 与 elevenlabs 的 python3。
  • 搭建脚手架:
    <skill>/scripts/new_film.sh <dir> --slug my-film --title "My Film" --lang sv --locale sv-SE
    
    这会复制模板、安装 Remotion、合成音效、构建第一个时间线并进行类型检查。
  • 在 notes/log.md 中记录决策,包含日期和决策人。
  • 渲染需要磁盘空间。检查 df -h,当系统磁盘剩余空间低于约 20 GB 时,将 OUTDIR 指向一个大磁盘。

1 · 研究 → notes/research.md

  • 编写编号章节(## 2.3 · 阈值),每节一个事实或事实集群,每个事实附带其主要来源:立法文件、官方统计数据、权威机构官方页面。
  • 标记任何不确定的内容。对于近期事件,记录事实的有效日期。
  • 参见 references/script.md。

2 · 外观与选角 ⛔

  • 复用默认风格(奶油色、深蓝和金色;1957 年复古未来主义;Bowlby One SC + Jost + Lobster)或提出替代方案。用 3-7 种风格渲染同一张小信息图,让用户进行同项对比。
  • 选定吉祥物:一个沉默的普通人,带有标志性手势(默认吉祥物会脱帽致意)。避免使用属于著名吉祥物的手势,如眨眼加竖大拇指。
  • 首先生成参考肖像(kind: "ref"),然后是模型表,并在制作任何场景图片之前获得批准。
  • ⛔ 用户选择风格、吉祥物、手势和字体。详情参见 references/style.md 和 references/images.md。

3 · 脚本 → script/script.md ⛔

  • 结构:开场主题曲、2-4 个部分、部分之间的广告插曲、以及结尾叙事曲。每个场景是一张卡片,时长 15-40 秒。
  • 字数预算为分钟数 × 约每分钟 127 词(新闻片解说员速度)。
  • 解说词中数字拼写出来;卡片上显示精确数字。
  • 避免“在星期一”这类绑定日期的词语,影片会跨越数周。
  • 在任何人付费前进行审阅。 让一个独立的子代理对照主要来源检查脚本和研究内容,并将其发现分为 MUST、SHOULD 和 COULD 三类。修复所有 MUST 级别的问题。审阅曾发现研究材料本身的错误。
  • ⛔ 用户批准脚本。格式和技巧参见 references/script.md。

4 · 解说员 ⛔

  1. 使用 voice/design_voice.py preview <tag> 设计 3 种试听版本(先询问),让用户选择一种。使用 create 保存。
  2. 对 2 个代表性场景进行试读,让用户批准语速和发音。
  3. 读取所有内容:python3 voice/narrate.py --dry-run,然后询问用户意见,再运行。

之后若编辑某个场景,只需重新为该场景付费。详情和注意事项参见 references/voice.md。

5 · 音乐(Suno,官方 Web 界面,通过 Chrome)

你需要以下音乐提示:

  • 一段约 20 秒的主题曲,在 Speech 模式下作为无表情的紧密和声效果极佳
  • 每部分一段背景音乐,循环播放并在解说时压低音量
  • 每个广告插曲一段演唱版广告歌
  • 一段结尾叙事曲,通常是主题曲的翻唱

提示词使用美国 1950 年代习语;像 "schlager" 这样的音乐类型词会把音乐带到其他地方。除非用户已将选择权交给你,否则用户喜欢在 Suno 中试听。通过 Suno 自己的菜单下载 WAV,获取对齐的歌词以确定剪切点,并编写 music/cuts.json 和 video/src/lyrics.ts。详情参见 references/music.md。

6 · 插图

  • 每个场景一张 21:9 2K 图片,位于 art/shots.json 中的 film-Sxx,基于吉祥物参考绘制。费用:python3 art/gen.py --dry-run,然后询问。
  • 检查每张图片是否有文字、重复道具、多余肢体和错误服装,重新生成有问题的图片。
  • 运行 python3 tools/sync_art.py,然后运行 python3 tools/build_timeline.py。详情参见 references/images.md。

7 · 场景(Remotion)

  • 自行构建两个黄金场景:影片核心信息图表所在的场景。使其达到标准,并将其注册到 golden.ts 中,替换掉演示中的 TheYear/TheRule。
  • 然后使用 video/CONTRACT.md(填写其 {{…}} 行)将任务分发给 2-3 个并行构建子代理。每个构建器有自己的组注册表,并使用联系表进行验证。
  • 构建器可以在解说词存在之前开始工作,因为提示会先跟随预估词数,然后自动切换到实际词数。如果他们在工作时脚本发生变化(审阅结果下达),使用 SendMessage 将每个场景的精确更改发送给对应的构建器。
  • 自行审阅每个场景的脚本。
  • 详情参见 references/scenes.md。

8 · 渲染和交付

  • 运行 tools/render.sh。它会重建时间线、检查提示、进行类型检查、渲染、应用两遍 loudnorm 归一化至 −14 LUFS / −1 dBTP,并写入 SRT 字幕。
  • 验证每个片段的响度,抽查 mp4 中的帧,然后为用户打开影片。
  • 详情参见 references/render.md。

9 · 修订

  • 文字变更:只需重新解说该场景,然后重建时间线。提示会自动跟随词语。
  • 图片变更:重新生成图片,同步,重建。
  • 音乐变更:编辑 cuts.json。

视觉修复只需重新渲染,不产生额外费用;只有新的解说、图片或下载才会收费。

模板目录结构

路径说明
film.json标题、别名、语言、区域设置、部分开场白和背景音乐、场景前奏/结尾音乐、TTS 模型、输出目录
script/script.md稿件:## Sxx · 名称、<!-- title: -->、<!-- facts: -->、> visual:、解说词
notes/research.md, notes/log.md事实库;决策和费用
voice/design.json + design_voice.py(语音设计)、narrate.py(解说 + 时间戳)、listen.py(试听页面)、voice.json
music/suno/*.wav、cuts.json、tools/beats.py(节奏)、tools/suno_lines.py(对齐歌词 → 行)
art/style.json(外观、禁止列表)、shots.json、gen.py、img/
tools/build_timeline.py、cues.py、lint_cues.py、make_srt.py、sync_art.py、art_sheet.py、unframe.py、make_sfx.py、render.sh
video/src/theme.ts、fonts.ts、timing.tsx(useScene、cue)、data.ts、lyrics.ts、Music.tsx、primitives/(Card、Bits、Film、Jingle、Hemicycle)、scenes/
video/tools/stills.mjs(选定帧的联系表)、review.mjs(每个场景 N 帧,多个场景)

已知陷阱及解决方案: references/pitfalls.md。

相关技能