Community编程与开发github.com

编辑风格短片(Fringe Lines)

制作 Fringe Lines 垂直短片,采用“编辑风格”(纸张背景、说话者在全幅/卡片/圆画中画之间切换、解说图形、逐词衬线字幕、吸睛开头 + 结尾卡片、音效)。当被要求从剧集制作、重新设计或修复短片时使用。

编辑风格短片(Fringe Lines) 是什么?

该技能用于为 Fringe Lines 播客生成具有“编辑风格”的垂直短片,其视觉风格受 Greg Isenberg 的短片启发。技能的核心是一套严格的规则手册,旨在保持高节奏和视觉多样性:每 6 秒切换说话者画面,每 3-5 秒更新一次图形或布局,字幕逐词出现,并穿插橙色斜体关键词强调。技能流程包括四个主要步骤:从剧集文字稿中选择一个约 30-50 秒的独立片段,使用内置脚本进行裁剪和清理,编写一个详细的 JSON 风格规范(定义开场钩子、结尾卡片、场景模式和图形类型),最后使用基于 Remotion 的渲染管道生成最终视频。该技能支持多种图形类型(如统计数字、人物比例、趋势线图、引语、新闻标题和列表),并能自动进行人脸追踪以保持画中画居中。它集成在命令行工作流中,要求先安装 Python 虚拟环境和 Remotion 依赖项,并假设剧集文字稿(words-quinn.json 和 words-doom.json)已存在于指定的工作目录中。

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/qdevery/fringe-lines-video/tree/main/.claude/skills/editorial-short

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

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

文档

编辑风格短片(Fringe Lines) 是做什么的?

该风格以 Greg Isenberg 的短片为蓝本。每一个短片都必须严格遵循:

  • 连续展示说话者画面不超过约 6 秒。
  • 每 3–5 秒就要有一个图形或布局变化。
  • 字幕逐词出现,部分关键词以橙色斜体显示。
  • 图形紧随讲述内容,因此当某个词被讲述时,相应的图形就会随之出现。

0. 前置条件(每台机器)

  • pipeline/setup.sh 会安装虚拟环境 ~/.shorts-skill 以及 ~/.cache/fringe-lines-video 中的 Remotion node_modules。
  • 剧集文字稿必须存在:work/<ep>/words-quinn.json 和 words-doom.json(由 pipeline/transcribe_verbatim.py 生成)。
  • Remotion 源码:pipeline/remotion/src/ShortV2.tsx(布局)和 Graphics.tsx(图形类型)。

1. 选取片段(30–50 秒)

  • 在文字稿文件中搜索一个自包含的段落,它应当具备:
    • 强有力的开场白(声明、数字或坦白);
    • 单一观点;
    • 靠近结尾的收尾或点睛之笔。
  • 好的信号包括:
    • 具体数字(百分比、金额、人数);
    • 提及的公司或产品名称;
    • 反主流观点;
    • 个人实验(例如“我让 Codex…”)。
  • 避免依赖前文语境的片段(如“就像我说的”、“那个东西”)。
  • 可以拼接多个 --range 参数。在句子结尾处剪辑,并检查拼接处是否有重复词语。

2. 裁剪片段

在 work/<ep>/shorts.sh 中添加一行并运行它:

b --name short-NN --range START:END [--range ...] --replace "27=>27%" --replace "claude=>Claude"
  • build_short.py 会执行以下操作:
    • 移除填充词、口吃和长时间停顿;
    • 选择活跃的摄像头;
    • 写入 work/<ep>/short-NN/clip.mp4 和 props.json;
    • 渲染原始 v1 短片。
  • --replace 用于修正字幕文本。右侧为空则隐藏该词。
    • 务必修正:数字(如“27”改为“27%”)、产品名称(如 Claude、Codex、Descript、GTM、SQL)以及 Whisper 的误听。
  • 要获取编写规格所需的精确输出时间,请运行: python3 -c "import json;p=json.load(open('work/<ep>/short-NN/props.json'));print(' '.join(f\"{w['text']}@{w['startMs']/1000:.1f}\" for w in p['words']))"

3. 编写风格规格文件:work/<ep>/short-NN/style.json

{
  "hook":  {"text": "Microsoft wants *27%* of its staff to quit", "end": 2.8},
  "outro": {"text": "Grow *without* growing *headcount*", "hold": 2.0},
  "emphasis": ["microsoft", "27%", "leave"],
  "scenes": [
    {"at": 0.0,  "mode": "full"},
    {"at": 3.0,  "mode": "graphic", "graphic": {"type": "stat", "kicker": "Microsoft buyout offer", "value": 27, "suffix": "%", "label": "of employees offered a payout to *leave*"}},
    {"at": 6.2,  "mode": "card"}
  ]
}

时间以裁剪后片段的秒为单位,取自步骤 2 中的词语时间标注。

保持风格一致的规则:

  • 结构:
    • 场景 0 始终为 full,hook 为 4–8 个词,约在 2.5–3 秒结束。
    • 陈述观点;不要总结整个片段。
  • 节奏:
    • 按 full → graphic → card → graphic → card … 的模式交替,在 40 秒的短片中应有 3–6 个图形。
    • 在后半段再次使用 full 来呈现一次有力的反应或笑声。
  • 时机:
    • 每个图形应在其对应的词语被讲述之前 0.1–0.3 秒 开始显示,并保持 2.5–5 秒。
    • 两个图形可以连续出现,例如一张 20 美元的卡片随后紧接一张 100 美元的卡片。
  • 强调词: 选取 10–18 个关键词:数字、名称以及点睛之笔的词语。匹配时忽略大小写和标点符号。
  • 强调格式: 在任何文本字段中,*word* 将渲染为橙色斜体。每个字符串使用一到两个。
  • 结尾卡片: 显示 2 秒的结束卡片,上面有一行短文本,重申核心观点或向观众提问。
  • 诚实原则:
    • 屏幕上显示的数字必须与节目中所述一致。
    • 图表是示意性的:使用带形状的 lines,绝不使用虚构的坐标轴或数值。
    • 当讲述者使用了模糊措辞时,也要添加“大约”或“~”等修饰。

图形类型(Graphics.tsx):

类型字段用途
statkicker, prefix, value (number, counts up), decimals, suffix, label一个重点数字
peoplekicker, value (string), label, filled (0–1)人数 / 人员比例
lineskicker, series: [{label, shape: up|flat|down}], caption趋势对比
quotetext, by?将点睛之笔展示在屏幕上
headlinesource, title, highlight新闻、公告、“定论”
listtitle, items[]步骤、产品、问题所在

如果需要新增图形类型,请将其添加到 Graphics.tsx 及其联合类型中。保持卡片风格:白色或墨水色卡片,36px 圆角,弹簧入场动画,且动画基于其本地帧 f 运行。

4. 渲染

~/.shorts-skill/bin/python pipeline/style_short.py --ep <ep> --name short-NN --spec work/<ep>/short-NN/style.json
  • 人脸追踪(pipeline/face_track.py,使用 YuNet)仅计算一次,并缓存在 short-NN/faces.json 中。它确保圆形画中画和卡片始终以人脸为中心;如果重新裁剪片段,请删除该文件。
  • 音效为合成音:每次场景切换时有“嗖”声,图形出现时有“砰”声。它们以 --sfx-db -20 的音量混入。
  • 响度:−14 LUFS。
  • 输出:out/shorts/<ep>-short-NN-v2.mp4。

5. 质量检查(始终在报告前执行)

提取若干帧并检查:

for t in 1.5 5 10 15 20 25 30 35 40; do ffmpeg -v error -y -ss $t -i out/shorts/<ep>-short-NN-v2.mp4 -frames:v 1 -vf scale=270:-1 /tmp/q_$t.png; done

逐一检查以下项目:

  • 开头钩子: 清晰可读,且不遮挡人脸。
  • 图形: 不与字幕块重叠(字幕块位于 y≈1340–1600 区域)。文本不溢出卡片边界。较长的统计值(如“+$500K”)会自动缩小。
  • 画中画: 人脸居于圆形中心。
  • 字幕: 没有多余的 *;关键词正确显示为橙色。
  • 响度: ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:" 的结果约为 −14。

向用户报告:

  • 短片内容概述及其时长。
  • 需要验证的数字。
  • 是否保留了露骨语言。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

carousel

Make a Fringe Lines image carousel (Instagram/LinkedIn, 1080x1350 PNG slides + PDF) — photo slides with big condensed caps headlines and accent words, large-type text-only slides, chart/screenshot slides, explainer-graphic slides and a follow CTA. Use when asked for a carousel, slide post, or "swipe" post from an episode or a topic.

engaging-monologue

Make a 16:9 FringeLines "engaging monologue" video from a solo talking-head take — jump cuts with punch-ins, the speaker shrinking into a portrait picture-in-picture while serif kinetic text, diagrams (pyramid stack, compare, roadmap, steps, big stat) and b-roll cards build on a paper canvas, plus callout cards, lower thirds, chips, a CTA pill and a green end card, all synced word by word to the speech. Use for YouTube explainers, solo commentary, newsletter-to-video and "one idea, told well" pieces.

infographic

Make a single-image editorial infographic (1080x1350) that explains one idea at a glance — two-tone headline, one-sentence dek, a hero visual with 2–4 numbered callouts and leader lines, an optional side note, a three-column "why it matters" row with icons, byline and sources. Use for "explain X in one graphic" posts about a company move, a framework, an architecture or a trend; the PNG can also be a carousel slide.

podcast-intro

Build the cold open for a long-form Fringe Lines episode — a 35–60 s highlight reel of the episode's best lines with explainer-graphic cutaways, keyword captions, whip transitions + SFX, ending on a title card with the topic list. Use when making or revising the intro of a full episode.

相关技能