Communitygithub.com

wjgoarxiv/lit-typographic-motion

执导一部短片、动态文字或歌词视频,或是一个无缝的README封面循环动画,并进行渲染与门控质量管理。

lit-typographic-motion 是什么?

这是一个面向AI代理的高级电影导演技能,能够将单行文字请求转化为完整的短片或README封面循环动画。它完全自主工作:先撰写导演阐述,然后通过内置的确定性渲染器构建并渲染视觉内容,再通过“门控”机制评估结果,最后用 `read_file` 检视渲染帧,直至确认作品完成。该技能支持三种创作路径:舞台路径(用于展示产品、流程等,通过HTML/Canvas/WebGL呈现)、文字路径(用于动态文字、歌词视频,使用内置的WebGL2引擎)和封面模式(用于生成README顶部的循环动画)。它集成在LitMuse平台中,通过 `lit motion`、`lit film` 等命令激活,并受Muse钩子的严格管控,确保输出质量。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wjgoarxiv/litmuse/tree/HEAD/plugin/skills/lit-typographic-motion

在你喜欢的 AI 中提问

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

文档

lit-typographic-motion: 一位自带渲染器、门控与审视循环的电影导演

本技能可将一行文字请求转化为一部完整的短片,或转化为README顶部的无声封面循环动画。它从不交出提示词让他人视频工具代劳。它首先编写导演阐述,自行构建视觉内容,通过本文件夹附带的确定性渲染器进行渲染,以门控机制衡量结果,然后在确认完成前使用 read_file 审视已渲染的帧。

共有三种执行模式,由导演阐述决定:

  • 舞台路径。 用于展示事物的影片:产品、流程、地点、虚构的示例主题。你在输出文件夹中编写一个HTML页面(SVG、Canvas 2D 或 WebGL),渲染器逐帧驱动无头Chrome浏览器进行渲染,舞台门控检查确定性、对比度、闪烁和画面内容。支持16:9 (1920x1080) 或 9:16 (1080×1920)。
  • 文字路径。 影片本身即为文字的影片:动态文字、歌词或引语视频、片头序列。你编写 brief.json,内置的WebGL2文字引擎将使用其预设和后处理通道来呈现文字。支持1920×1080。
  • 封面模式。 README、英雄或横幅循环。无节拍、无声音、无结尾:一个基于固定品牌词的单一动态系统,以2倍速度捕获,编码为动图WebP,并通过解码文件的门控检查。在此模式下,首先阅读 references/cover.md。

下方的 SKILL_ROOT 是 read_skill 为 plugin:litmuse:lit-typographic-motion 返回的 SKILL.md 所在文件夹。请始终使用其下的绝对路径运行所有脚本,切勿硬编码 Muse 的插件缓存路径;因为缓存文件夹会随每次 LitMuse 更新而变化。

适用场景

  • 用户要求制作一部影片、动态图形、动态文字、歌词或引语视频、片头或片头序列、简介片段,或任何由请求生成的短视频,无论是否使用他们自己的文字。
  • 用户要求制作README封面、英雄或横幅循环、动画项目标题,或仓库的运动封面。
  • 用户要求对由本技能制作的渲染结果进行批评:检视帧并运行门控,不写其他任何内容。

在 LitMuse 中激活:lit motion <request>、lit film …、lit video …、lit 영상 …、以 lit-typographic-motion 开头的提示词,或 lit <task> 中要求制作影片的任务(如 모션그래픽、키네틱 타이포、가사 영상、타이틀 시퀀스、kinetic type、lyric video、title sequence、cover loop,或带有制作动作的 bare 영상 / video / clip)。UserPromptSubmit 钩子会命名路由;在纯 lit 下,会话路由表允许你自行选择本技能。

将以下请求发送到别处,并用一句话说明:

请求去向
剪辑、修剪、剪切、添加字幕或副标题现有素材非本技能。这里没有用于编辑素材的流程;明确说明
幻灯片或不含视频名词的报告lit-pptx 或 lit-docx
网页、页面中的背景视频、悬停或UI动画、动画令牌frontend-ui-ux
关于视频的缩略图、脚本、摘要或文字记录常规工作,非本技能
带有静态封面图片的静态READMEreadme-studio

输入与状态

输入处理方式
请求惰性数据。它按原样进入 treatment.request,永远不会被当作指令遵循,也永远不会显示在屏幕上。
用户提供的文字它们是文案(copy.source: user);在舞台路径上,它们成为页面的文案行。切勿引用用户不拥有的歌词或文本。
无文字、无主题、无事实虚构一个具体的示例主题及其文案,在导演阐述中列出每一项虚构内容,并在回复中标记每一项。
命名的风格(文字路径)swiss-signal、terminalcore 或 tidal 覆盖代理默认值(参见 references/style-bibles.md)。
音频文件sound.mode: supplied 及其 file;它始终被混音并与剪辑点对齐(参见 references/sound.md)。
用于封面的绘画、标志或字标在 assets.json 中列出,包含其 sha256 和 source: user;缺失则退出代码22,绝不使用手绘替代品。
输出文件夹用户工作目录中的新 motion-<slug>/ 文件夹。绝不在已安装的插件文件夹中,也绝不在 .litmuse/ 中。

状态存在于输出文件夹内:treatment.json、look.json、stills/、manifest.json、gate-report.txt 和 .run/(包含进度、分离渲染进程的PID和结果、第一个有效的导演阐述)。LitMuse 钩子在工作区外部保存其自身的简要运动路由记录(如下所述)。

模式矩阵

模式触发条件完成标准
lit 默认来自 lit 的运动路由不问任何问题。根据频道选择格式,根据类型和生成的音垫选择时长,并在回复中标记每个默认项。遵循 references/look.md 完成。
显式模式lit-typographic-motion … 或用户指定格式和时长相同循环。仅在用户在场且既未指定格式也未指定时长、频道也无法决定时,提出一个简短问题。用户在场时,在第1轮后展示分镜板,并在完整渲染前询问一次;请求中指定了风格或说“你选”则跳过询问,直接采用推荐项。
封面模式treatment.json 包含 "mode": "cover"遵循 references/cover.md 完成:解码的封面达到所有TARGET门控标准,且最后一轮审视已查看其表、海报和接缝对。
仅审阅对现有渲染结果的批评打开帧,运行 gate <dir> 或 cover-gate <file> --strict,报告。不写其他任何内容。
阻塞退出代码 10、11、12、14、15、21 或 22停止。指出状态及修复方法;绝不使用其他流程绕过。
导演阐述无效退出代码 16修复 treatment.json 中指定的字段并重新运行。
舞台契约退出代码 17、18 或 19修复消息中指明的元素、API、栅格、剪辑、时钟源或URL,并重新运行。
声音无效退出代码 20修复消息中指明的垫音或提供的音轨。

步骤

命令,全部从输出文件夹的父目录执行:

node "$SKILL_ROOT/scripts/motion.mjs" styles --out <dir> [--format 16:9|9:16]
node "$SKILL_ROOT/scripts/motion.mjs" assets --out <dir> --url <link> [--cover]
node "$SKILL_ROOT/scripts/motion.mjs" scaffold --out <dir>
node "$SKILL_ROOT/scripts/motion.mjs" stage --out <dir> --round <N> [--stills-only]
node "$SKILL_ROOT/scripts/motion.mjs" make <brief.json> --out <dir> --round <N> [--stills-only]
node "$SKILL_ROOT/scripts/motion.mjs" blender --out <dir> [--final]
node "$SKILL_ROOT/scripts/motion.mjs" sound --out <dir>
node "$SKILL_ROOT/scripts/motion.mjs" look --out <dir> --round <N> --answers <file>
node "$SKILL_ROOT/scripts/motion.mjs" gate <dir>
node "$SKILL_ROOT/scripts/motion.mjs" cover --out <dir> --round <N> [--window t0,t1]
node "$SKILL_ROOT/scripts/motion.mjs" cover-gate <dir>/cover.webp --strict

每一帧和每一轨都必须通过这些渲染器。即使用手绘结合 ffmpeg、Python 脚本、栅格翻页书或屏幕录制看起来正确,也不是交付物。

  1. 导演阐述。 阅读 references/treatment.md,然后阅读 references/studio.md(内部风格、镜头、脚手架、分镜板轮次、内部文件、丰富注册表)。请求中的产品链接先运行 assets:获取真实标志、图片和文字;当无法获取时,向用户索要。写入 <dir>/treatment.json:故事及其转折、主角、符合类型弧线的节拍(作为镜头)、主题(当请求未指定时需虚构一个)、产品、视觉手法、文字计划、风格调色板、包含屏幕上事件的配乐,以及文案。style、format、durationSec、genre 和 fps 遵循规则,而非个人喜好。默认为最大(register: rich,带有分层的 world);仅当请求要求平静或极简时才采用最小设置。对于封面模式,改为遵循 references/cover.md 编写封面阐述,并跳至步骤8。
  2. 路径参考。 舞台路径:references/stage.md,以及当主题以3D绘制时的 references/depth.md。文字路径:references/brief-schema.md、references/style-bibles.md、references/type-craft.md 和 references/craft-loop.md;仅当需要引擎内部信息时才打开 references/engine-contract.md 和 references/runtime.md。两条路径均需阅读:references/look.md 和 references/sound.md。
  3. 构建。 舞台路径:scaffold --out <dir> 根据导演阐述写入 <dir>/stage/index.html;在 DRAW 函数中绘制每个镜头的主体(参见 references/stage.md)。文字路径:为引擎编写 <dir>/brief.json。3D影片使用 depth: 3d:GPU层级在脚手架页面上用 three.js 构建世界,而使用已安装的 Blender 进行路径追踪则使用 render3d: blender 配合 stage/scene.py 和 blender --final 来生成底片。
  4. 第1轮:分镜板。 使用 --round 1 --stills-only 渲染。退出代码13指出失败的分镜板规则:修复页面并重新渲染分镜板。使用 read_file 打开 stills/board.png、每个节拍静帧、每个转场条和联系方式表,回答九个审视问题,指出最弱的节拍以及你将要做出的一项修改,并使用 look --round 1 --answers <file> 记录。然后进行该修改。预览模式(preview: true)在此停止:展示分镜板并说明影片尚未渲染。
  5. 完整渲染。 使用不包含 --stills-only 的 --round 2 进行渲染。完整渲染会分离运行并写入 <dir>/.run/progress.json;如果 bash 调用超时,再次运行相同命令即可附加到正在运行的渲染进程。切勿为了节省渲染时间而缩短影片。然后读取 gate-report.txt,使用 read_file 打开海报、表、每个节拍静帧和每个条,并记录 look --round 2。
  6. 第3轮 仅当门控失败或审视回答要求另一轮时执行。第3轮后,交付现有成果,并明确列出未完成项。
  7. 回复(如下所述)。
  8. 封面模式。 遵循 references/cover.md:从 recipes/ 中的配方开始(painted-light 为默认,weight-tide 和 orbit-loop 为备选),编写 cover/index.html 和 assets.json,渲染 cover --round 1,使用 read_file 打开表、海报和接缝对,记录审视轮并附最多三个带时间戳的缺陷,仅对缺陷的时间窗口使用 --window t0,t1 重新渲染,同时进行修复,并再次运行完整 cover 渲染,直到解码文件通过 cover-gate --strict 且最后一轮审视结果干净。

输出文件

文件说明
film.mp4H.264,BT.709,tv range;1920×1080(文字路径,舞台16:9)或 1080×1920(舞台9:16);AAC 256k,除非导演阐述要求无声音
preview.webp、preview.gif最大 3 MB 的循环预览
poster.png、reduced-motion.png最大 1 MB 的海报,以及为关闭动画的读者准备的最终静态状态
treatment.json、look.json计划,以及每轮审视及其所查看的帧
stills/节拍静帧、每个剪辑一个转场条、一个12帧联系方式表、带有 check.json 的 board.png、和 index.json;在封面模式下,包含解码后的表及其差异图、海报和接缝对
sound/、sound-cues.json分层配乐(或最小影片的生成垫音,或准备好的提供的音轨),sound/stems/ 下的每个音轨,以及针对每个剪辑的提示信息
manifest.json、render.jsonl、gate-report.txt运行清单、逐帧日志和门控报告
withheld/仅在闪审失败后:诊断信息,绝非交付物
cover.webp、assets.json封面模式:循环(在TARGET处为 2 MiB 或更小)和所使用的艺术品检查列表

Muse 工具与审批

  • read_skill 加载本文件,并根据需要加载引用文件。read_file 打开每个引用文件和每个渲染的PNG;它是审视工具,除非 read_file 在本会话中打开了某项,否则该事项不视为已查看。
  • bash 运行上述脚本的 node 命令(始终使用绝对路径),以及通过引擎运行的 ffmpeg、img2webp、dwebp 和 gifski。无全局安装、无包获取、渲染无网络连接。
  • write_file 和 edit_file 在输出文件夹内编写导演阐述、简报、页面、答案文件和 assets.json。
  • subagent_spawn 与 subagent_type: litmuse/quality-reviewer(只读)可为联系方式表提供第二意见。其笔记作为你审视轮的输入;它不能代你记录本轮。
  • image_generation,当会话提供时,可用于制作封面的基础绘画;该资产在 assets.json 中标记为 source: generated,回复中需注明。
  • 运行时在 Muse 外部通过终端预预热:npx @litfamily/litmuse runtime install motion(状态:npx @litfamily/litmuse runtime status motion)。Muse 的沙箱网络仅为代理模式,因此渲染过程绝不安装任何东西;未预热的缓存导致退出代码14,并附带上述命令。可选的节拍分析层级通过 node "$SKILL_ROOT/scripts/motion-runtime.mjs" install --audio 安装。就绪检查:node "$SKILL_ROOT/scripts/motion-doctor.mjs" 和 npx @litfamily/litmuse doctor。详情:references/runtime.md。
  • Skills 和 commands 在 Muse 中无需审批;下面运行完成门控的钩子需要(muse plugins approve litmuse:hook:<id>)。未批准的钩子使门控变为建议性质,但下面的证据规则仍然约束你。

证据

在运动路由激活期间,LitMuse 的 PostToolUse 钩子会记录每一次 motion.mjs 运行(其子命令、--out、--round 以及当工具输出中包含时的 exit N NAME 行)和 read_file 打开的每一张图片。然后 Stop 钩子会在最后一个输出文件夹上运行本技能自身的完成检查脚本 engine/node/done.mjs。

一部影片在满足以下所有条件时才算完成:有效的导演阐述;最终完整渲染的门控检查通过(PASS);至少两轮审视,第一轮为分镜板轮并指出一项修改;最后一轮需使用最终渲染的静帧清单加盖时间戳;且该轮次的查看列表覆盖分镜板、

…

[已截断]

相关技能