首页 / 全部技能 / 内容创作 / lower-thirds
内容创作 · iart-ai/tiktok-video-skills

lower-thirds

This skill should be used when the user asks to "make an animated lower third", "add lower thirds", "create a name tag/name lower third", "build broadcast titles", "animate a title/name/role caption", "do a speaker name overlay", or "template lower thirds across a list of names". Covers enter/exit animation (slide/wipe/mask reveal), in/out timing & dwell, safe-area & broadcast conventions, name-vs-role type hierarchy, brand styling, and rendering one design across many names.

L4 高权限 · 分级授权与审计V1 已固定执行命令联网读写文件Dual-pass Audit
Author iart-aiGitHub iart-ai/tiktok-video-skills ↗Stars 11License MIT(仓库根 LICENSE 为 "MIT License / Copyright (c) 2026 iart.ai";GitHub API spdx_id = MIT;.claude-plugin/plugin.json 亦声明 "license": "MIT")Commit 2a775336b5
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

把构件解剖成「两行文本 + 图形底床」三个元素(name / role / bar),并硬性限制为两行。

skills/lower-thirds/SKILL.md
Keep it to two lines. A name line + role line is the whole job — extra lines erode the hierarchy and crowd the safe area.
这里在做什么:先定构件上限,再谈动画——层级只有两行时才可能一眼可读;这也是与「通用标题卡」的分界线。

防廉价的第一条:标题绝不允许硬切进出。

skills/lower-thirds/SKILL.md
1. **Never hard-cut a title on or off.** A bare appear/disappear reads as a mistake. Even a 12-frame fade or slide makes it feel produced.
这里在做什么:把「有没有动画」设为最低门槛,并给出最低成本做法(12 帧淡入/滑动),避免 agent 省掉出入场。

第二条:错峰出场——bar → name → role,每个元素错开 3–6 帧。

skills/lower-thirds/SKILL.md
**Stagger, don't slam.** Animate the bar first, then the name, then the role, each offset by 3–6 frames.
这里在做什么:把「高级感」拆成一个可执行参数(错帧量);reference 的 Remotion 组件正是按此顺序编排 spring。

用帧预算(而非感觉)规定三段时序:入场 12–18f、停留 90–150f、出场 8–12f,且出场更快。

skills/lower-thirds/SKILL.md
| Exit | 8–12f (0.27–0.4s) | Faster than enter |
这里在做什么:把停留时长也纳入设计(3–5 秒=能默读两遍),避免标题「闪一下」或「赖着不走」;出场比入场快是刻意的非对称缓动。

安全区按画幅分别给定;竖屏 9:16 的要求是把条带整体抬高,而不是贴着底部。

skills/lower-thirds/SKILL.md
| 9:16 (1080×1920) | Same left margin; **lift the band up** | Bottom ~18% (captions/UI), top ~12% |
这里在做什么:跨平台 UI 会压住底部(字幕/按钮),所以同一设计在竖屏必须上移;这是「一稿多画幅」最容易出错的一点。

层级靠字号对比兜底:name 至少是 role 的 1.6 倍,拿不准就把 name 加大而不是把 role 缩小。

skills/lower-thirds/SKILL.md
**Size contrast** ≥ 1.6× (name vs role).
这里在做什么:把「层级」量化为一个比值,并给出唯一的安全方向;配合单色 brand accent 与左锚定,构成品牌一致性的最小集合。

可模板化是这套代码的根本理由:name/role/theme 必须是 props,roster 逐行 --props 渲染成多条独立片。

skills/lower-thirds/SKILL.md
In a renderer, make the roster an input prop and render once per row (`--props`) to emit one branded clip per person
这里在做什么:把「一个人一条片」批量化——同一动画与品牌、只换文本;reference 还给出 jq 驱动 roster.json 的批量脚本与透明输出编码建议。

验证针对「三相位 + 批次」设计:先验一行再批渲染,且出场帧必须看到部分揭示(证明动画真的在跑)。

skills/lower-thirds/SKILL.md
**Batch roster**: verify ONE row via stills *before* rendering all names — catch a layout/overflow bug once, not N times.
这里在做什么:把「批量前先验一行」写成纪律,避免同一个人名溢出问题被渲染 N 次;判据仍是人读静帧。

2核心能力

01三种出入场动效语言:slide+fade(默认)、wipe bar(广电风)、mask reveal(clip-path 逐字揭开,无插件)
02入/停留/出三段的帧预算与非对称缓动(入场 ease-out、出场更快)
03跨画幅安全区约定(16:9 / 9:16 / 1:1)与 title-safe 边距、左锚定生长
04品牌锁定:font / accent / bar / radius / margin 收进单个 theme 对象,一次改动全片一致
05roster → 多实例(Series 顺排)与逐行 --props 批量渲染;透明叠加输出(prores 4444 / PNG 序列)
06零依赖 CSS/HTML 版本(含 wipe-bar 变体),供没有 Remotion 的运行环境使用
07交付-验证回路:enter / dwell / exit 三张静帧 + contact-sheet 拼图 + probe-mp4 断言竖屏规格

3外部依赖

KindDependency / Endpoint
clinpx remotion still / render / compositions
cliscripts/contact-sheet.sh + scripts/probe-mp4.sh(仓库根共享验证工具箱,SKILL.md 明列)
clijq + ffmpeg/prores 编码(reference 的 roster 批量脚本与透明输出)
packageffmpeg / ffprobe(系统依赖)

4管控建议与判定依据

建议配套管控措施
面向 Agent
分级或逐次授权,建议在沙箱运行
面向管理者
审批流程、可回滚、全程审计
判定依据(文件路径与关键语句摘要)
  • scripts/: 执行本地脚本或命令: (SKILL.md 明列的验证回路)`npx remotion still LowerThird out/f-{enter,dwell,exit}.p
  • 网络端点: 声明外部网络访问: `npx remotion …`:首次执行经 npm 官方渠道取包与 CLI(registry.npmjs.org,域名由 npm 决定,源码未硬编码
  • 本地工作目录: 文件读写与工件输出: agent 按本 skill 构建的 Remotion 工程与 out/lower-third.mp4、out/demo.gif
审计说明: 。三段自证:① 判级对象=skills/lower-thirds/(find 确认只有 SKILL.md、README.md、references/lower-third-component.md 三个 .md,零脚本、零资产);② 目录内自身行为=本地写入(Remotion 工程、out/*.mp4、静帧、sheet.png)+本地 CLI(`npx remotion`;ffmpeg/ffprobe 经仓库根 scripts/;reference 批量段另用 jq/tr),skills/ 全域 `process.env` / `api[_-]?key` / `token` / `cookie` / `https?://` 均 0 命中;③ 唯一网络面是 npm 官方渠道取包(remotion / @remotion/*),与站内蓝档先例(hyperframes、general-video、motion-background)同口径。不升黄:无固定公开端点查询、无抓取、无官方 CLI 的 update/check 行为。不升橙:零凭据/环境变量读取、零素材外发(无音频/图像上行,全部本地文件)。非红档:无 TLS 降级、无沙箱关闭、无反自动化绕过、无任意代码执行面。需另记(不改档)的两点见 injection_surface 与 verdict.risks:reference 批量脚本的文件名派生未净化;品牌字体/资产由用户提供,字体许可需用户自负。

5第二遍独立确认

  • [ok] SKILL.md 的三条「防廉价规则」是否真在 reference 组件里被实现(防第一遍只读散文) — reference §1 明写 "Enter staggers the bar, name, then role; exit is computed from the end of the clip so the title leaves faster than it arrived.",组件导入 `Sequence, interpolate, spring, useCurrentFrame, useVideoConfig`,Theme 类型与 BRAND 对象齐备(font/bar/name/role/radius/marginPct)。规则 → 代码可逐条对应,非空头承诺。
  • [discrepancy] reference 批量脚本的文件名派生是否会越出输出目录(第一遍遗漏的面) — 原文:`slug=$(echo "$row" | jq -r '.name' | tr '[:upper:] ' '[:lower:]-')` 紧接 `npx remotion render LowerThird "out/${slug}.mp4" --props="$row"`。tr 只做大小写与空格到连字符的映射,不剥离 `/`、`..`、前导 `-` 等字符;若 roster 的 name 含路径分隔符,输出路径可越出 out/。这是数据→文件名的注入面,仅影响本地写入位置,不构成权限提升;SKILL.md 正文未把它写成安全事项。属对 pin commit 有效的真实出入(脚本可改进,非虚假声明)。
  • [ok] 「9:16 抬高档位」是否在代码里有对应实现(不只是表格建议) — reference 的 Quick reference 表给出「9:16 placement | `baseline 0.80→0.70` / the media query」,说明竖屏不是靠新组件,而是同一组件换基线/媒体查询;与 SKILL.md「lift the band up」一致。
  • [unlocatable] 「3–5s 停留」「≥1.6× 字号对比」这类经验值是否有出处 — SKILL.md 写 "Roughly 3–5s on screen (read it aloud twice)." 与 "**Size contrast** ≥ 1.6×",仓库内无测量脚本、无引用来源、无 A/B 数据;属经验判据,不作为已核事实,仅记为文档建议。
  • [ok] 跨包共享脚本与「Packaged helper」引用是否真实存在(防悬空引用) — SKILL.md 只点名 scripts/contact-sheet.sh 与 scripts/probe-mp4.sh;两者在仓库根真实存在且可执行(-rwxr-xr-x),三仓库逐字节相同(contact-sheet.sh md5 b7dcc28034c9bf8fda5d48683e54d8b5、probe-mp4.sh 167b7977c50f492014e1a6fef8c9ed12)。seek-shot.sh 未被本 skill 点名,不构成悬空引用。
  • [ok] 透明叠加输出建议是否是真实可用的编码路径 — reference 给的是 Remotion CLI 自身的参数(`--codec=prores --prores-profile=4444` 或 `--image-format=png`),属该工具既有能力,非虚构 flag;能否落地取决于用户环境的 prores 支持,但命令形式正确。

6结论

  • 把「克制」变成可执行约束:两行上限、单色 accent、只在首尾动、左锚定生长——审美判断被翻译成参数
  • 动画被拆成可校对的帧预算(入场 12–18f、停留 90–150f、出场 8–12f)与错峰顺序,避免「一起砸上来」的廉价感
  • 模板化是核心价值:name/role/theme 全为 props,一次设计渲染整个 roster,且明确要求批量前先验一行
  • 双栈交付(Remotion 组件 + 零依赖 CSS/HTML 含 wipe-bar 变体),并给出透明叠加(prores 4444 / PNG 序列)路线,能直接进后期合成
  • 竖屏 9:16 的处理有明确规则(把条带抬高、避开底部 ~18% 与顶部 ~12%),而非把 16:9 版式直接裁切
  • 适合: 适合:访谈/播客/网络研讨会的嘉宾名牌、面板名单、广电风格标题条,以及「一次设计、多个名字」的批量生产(12 人面板一次出 12 条片);也适合要把名牌做成透明叠加层交给后期合成的项目。适合愿意先出三张静帧确认层级与安全区、再批量渲染的用户。
    不适合: 不适合:① 需要多行信息(职位+公司+社交账号+二维码)的长名牌——本 skill 明确只做两行;② 需要实时切换/可交互名牌的场景(交付是渲染片);③ 要求 100% 自动化质检、不接受人读静帧的流水线;④ 需要复杂排版特效(3D 翻转、逐字路径动画)的高端包装——本 skill 的动效语言刻意克制(slide/wipe/mask 三种);⑤ 只拷贝单个 skill 目录而不含仓库根 scripts/ 的安装方式。
    Install Agent-Ready
    ① Verified Mirror 2026-09-28
    Option A · Direct DownloadDownload lower-thirds.tar.gz
    sha256: 5b146268b6b14b5c…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 2a775336b5.