File contents WeChat Article Remotion
把任意一篇微信公众号文章转成 Studio 风格的 Remotion 视频。主舞台给足空间给图片和文字,完全没有 PIP 。
视觉核心
暖白画布 #f7f8f3 + 上下镜像透视格子背景
顶部黑色章节进度条(白色填充)
底部无底色黑字字幕,关键词蓝色 #2f6fff 强调
默认画幅 1920×1080 @ 30fps 横屏
公众号图片永远 object-fit: contain,永不裁切 (铁律)
与 talking-head-remotion 的差异:
维度
talking-head-remotion
wechat-article-remotion
场景
5(cover/list/stat/compare/outro)
6(+ article-image)
PIP
右下圆形 206px
无
视觉调性
Studio 暖白
Studio 暖白(一致)
公共素材库
字体/SFX/动效组件
完全共用
输入要求
公众号文章 URL(必填) :https://mp.weixin.qq.com/s/xxx
TTS 配音、字幕可选;脚本与音频按需由 pipeline 生成
新项目:先跑脚手架
python3 skills/wechat-article-remotion/scripts/scaffold_wechat_article_project.py \
--project-dir ./demo-wx-article \
--title "示例公众号文章" \
--article-url "https://mp.weixin.qq.com/s/xxxxx"
cd demo-wx-article
npm install
npm run still
脚手架自动从 talking-head-remotion 公共素材库 播种字体(Noto Sans SC / Space Grotesk)和 SFX。
端到端 pipeline
用户:https://mp.weixin.qq.com/s/xxx
│
▼
[1] scripts/fetch_article.py
· ideaflow API → markdown
· 提取  + 下载原文图到 public/assets/article-images/img-NN.jpg
· PIL 读每张图 WxH → imageAspect
· 写 work/source/article.md 和 work/source/images.json
│
▼
[2] 运行时 LLM 拆稿(在本会话里执行)
· 按 references/beat-checklist.md 拆 6-12 个 scene
· 输出 scenes[]、captions[]、chapters[] 到 src/demoData.ts
│
▼
[3] scripts/generate_tts.py
· 调 audio-to-subtitles 的 bun CLI
· 输出 voice.m4a、voice.mp3、captions.srt
│
▼
[4] 用真实音频时长回写 demoData.ts 的 captions time
│
▼
[5] npm run typecheck / still / render:preview
│
▼
[6] Subagent 独立视觉审核
· 每场景抽"开始 0.3s"和"中段"两帧
· 重点:图片 contain 不裁切、关键词不先于字幕、每场景元素数 ≤ 5
│
▼
[7] npm run render → 最终 mp4
6 个场景类型
kind
用途
数据关键字段
cover
开头标题
eyebrow, titleLines, subtitle
list
步骤、要点、清单
eyebrow, heading, items[]
stat
数据、金句
eyebrow, number, unit, title, metrics[]
compare
对比、选 A/B
eyebrow, heading, choices[]
outro
结尾 CTA
eyebrow, title, subtitle
article-image
公众号原文图完整展示
eyebrow, imageSrc, imageAspect, title, caption?, source?
详见 references/scene-types.md。
不能妥协的硬规则
公众号图片永远 object-fit: contain ,永不裁切 —— Code Review 看到 object-fit: cover 用在 article image 上即 fail。
每屏 ≤ 5 个文字元素 + 至少一个非文字视觉主体 (沿用 talking-head-remotion 硬规则)。article-image 场景的非文字主体就是那张图。
逐元素进场 :article-image 场景里图片 / 标题 / 解读 / 图源各有 appearAt,错开 0.18s 进场。
数据驱动 :demoData.ts 是唯一真相,component 内不写死画面。
音画强同步 :用「前 1s / 后 0.5s 双帧」抽帧审计,关键词不能先于字幕。
共用 talking-head-remotion 公共素材库 —— 字体/SFX 用 seed_from_library() 复制,新动效回流到 talking-head-remotion/assets/library/animations/。
国际化(i18n)先不处理 ,按 user_profile 偏好默认中文。
常用命令
npm install
npm run typecheck # tsc --noEmit
npm run still # 渲 1 帧静态图(校对场景布局)
npm run render:preview # 低清 proof(先出这个)
npm run render # 正式 1080p
渲染调试节奏
默认先出低清 proof(npm run render:preview),不要一上来跑 1920×1080 全片。
长渲染把输出重定向到 work/render.log,只 tail 日志尾部。
用户打断后先检查后台进程:pgrep -fl "remotion|chrome-headless|Google Chrome for Testing|Chromium"。
不要用模糊的 CLI 探测命令(如 remotion render --help),优先看 package.json 里已有脚本或官方文档。
相关 references
references/visual-guide.md —— 视觉规范、动效词汇表、抽帧检查清单
references/scene-types.md —— 6 个场景的详细数据模型和动效配方
references/beat-checklist.md —— 拆稿 beat checklist 模板
1 --- 2 name: wechat-article-remotion 3 description: WeChat Article Remotion 4 --- 5 6 # WeChat Article Remotion 7 8 把任意一篇微信公众号文章转成 Studio 风格的 Remotion 视频。主舞台给足空间给图片和文字,**完全没有 PIP**。 9 10 ## 视觉核心 11 12 - 暖白画布 `#f7f8f3` + 上下镜像透视格子背景 13 - 顶部黑色章节进度条(白色填充) 14 - 底部无底色黑字字幕,关键词蓝色 `#2f6fff` 强调 15 - 默认画幅 1920×1080 @ 30fps 横屏 16 - **公众号图片永远 `object-fit: contain`,永不裁切**(铁律) 17 18 与 [talking-head-remotion](../talking-head-remotion/SKILL.md) 的差异: 19 20 | 维度 | talking-head-remotion | wechat-article-remotion | 21 |---|---|---| 22 | 场景 | 5(cover/list/stat/compare/outro) | 6(+ article-image) | 23 | PIP | 右下圆形 206px | **无** | 24 | 视觉调性 | Studio 暖白 | Studio 暖白(一致) | 25 | 公共素材库 | 字体/SFX/动效组件 | **完全共用** | 26 27 ## 输入要求 28 29 - **公众号文章 URL(必填)**:`https://mp.weixin.qq.com/s/xxx` 30 - TTS 配音、字幕可选;脚本与音频按需由 pipeline 生成 31 32 ## 新项目:先跑脚手架 33 34 ```bash 35 python3 skills/wechat-article-remotion/scripts/scaffold_wechat_article_project.py \ 36 --project-dir ./demo-wx-article \ 37 --title "示例公众号文章" \ 38 --article-url "https://mp.weixin.qq.com/s/xxxxx" 39 40 cd demo-wx-article 41 npm install 42 npm run still 43 ``` 44 45 脚手架自动从 [talking-head-remotion 公共素材库](../talking-head-remotion/assets/library/) 播种字体(Noto Sans SC / Space Grotesk)和 SFX。 46 47 ## 端到端 pipeline 48 49 ```text 50 用户:https://mp.weixin.qq.com/s/xxx 51 │ 52 ▼ 53 [1] scripts/fetch_article.py 54 · ideaflow API → markdown 55 · 提取  + 下载原文图到 public/assets/article-images/img-NN.jpg 56 · PIL 读每张图 WxH → imageAspect 57 · 写 work/source/article.md 和 work/source/images.json 58 │ 59 ▼ 60 [2] 运行时 LLM 拆稿(在本会话里执行) 61 · 按 references/beat-checklist.md 拆 6-12 个 scene 62 · 输出 scenes[]、captions[]、chapters[] 到 src/demoData.ts 63 │ 64 ▼ 65 [3] scripts/generate_tts.py 66 · 调 audio-to-subtitles 的 bun CLI 67 · 输出 voice.m4a、voice.mp3、captions.srt 68 │ 69 ▼ 70 [4] 用真实音频时长回写 demoData.ts 的 captions time 71 │ 72 ▼ 73 [5] npm run typecheck / still / render:preview 74 │ 75 ▼ 76 [6] Subagent 独立视觉审核 77 · 每场景抽"开始 0.3s"和"中段"两帧 78 · 重点:图片 contain 不裁切、关键词不先于字幕、每场景元素数 ≤ 5 79 │ 80 ▼ 81 [7] npm run render → 最终 mp4 82 ``` 83 84 ## 6 个场景类型 85 86 | kind | 用途 | 数据关键字段 | 87 |---|---|---| 88 | `cover` | 开头标题 | `eyebrow, titleLines, subtitle` | 89 | `list` | 步骤、要点、清单 | `eyebrow, heading, items[]` | 90 | `stat` | 数据、金句 | `eyebrow, number, unit, title, metrics[]` | 91 | `compare` | 对比、选 A/B | `eyebrow, heading, choices[]` | 92 | `outro` | 结尾 CTA | `eyebrow, title, subtitle` | 93 | **`article-image`** | **公众号原文图完整展示** | `eyebrow, imageSrc, imageAspect, title, caption?, source?` | 94 95 详见 [references/scene-types.md](references/scene-types.md)。 96 97 ## 不能妥协的硬规则 98 99 1. **公众号图片永远 `object-fit: contain`**,永不裁切 —— Code Review 看到 `object-fit: cover` 用在 article image 上即 fail。 100 2. **每屏 ≤ 5 个文字元素 + 至少一个非文字视觉主体**(沿用 talking-head-remotion 硬规则)。`article-image` 场景的非文字主体就是那张图。 101 3. **逐元素进场**:`article-image` 场景里图片 / 标题 / 解读 / 图源各有 `appearAt`,错开 0.18s 进场。 102 4. **数据驱动**:`demoData.ts` 是唯一真相,component 内不写死画面。 103 5. **音画强同步**:用「前 1s / 后 0.5s 双帧」抽帧审计,关键词不能先于字幕。 104 6. **共用 talking-head-remotion 公共素材库** —— 字体/SFX 用 `seed_from_library()` 复制,新动效回流到 `talking-head-remotion/assets/library/animations/`。 105 7. **国际化(i18n)先不处理**,按 user_profile 偏好默认中文。 106 107 ## 常用命令 108 109 ```bash 110 npm install 111 npm run typecheck # tsc --noEmit 112 npm run still # 渲 1 帧静态图(校对场景布局) 113 npm run render:preview # 低清 proof(先出这个) 114 npm run render # 正式 1080p 115 ``` 116 117 ## 渲染调试节奏 118 119 - 默认先出低清 proof(`npm run render:preview`),不要一上来跑 1920×1080 全片。 120 - 长渲染把输出重定向到 `work/render.log`,只 tail 日志尾部。 121 - 用户打断后先检查后台进程:`pgrep -fl "remotion|chrome-headless|Google Chrome for Testing|Chromium"`。 122 - 不要用模糊的 CLI 探测命令(如 `remotion render --help`),优先看 `package.json` 里已有脚本或官方文档。 123 124 ## 相关 references 125 126 - [references/visual-guide.md](references/visual-guide.md) —— 视觉规范、动效词汇表、抽帧检查清单 127 - [references/scene-types.md](references/scene-types.md) —— 6 个场景的详细数据模型和动效配方 128 - [references/beat-checklist.md](references/beat-checklist.md) —— 拆稿 beat checklist 模板
liangdabiao/video-skills-toolkit/tree/main/skills/wechat-article-remotion commit f993cef3f9
Frequently asked questions How do I install the Wechat Article Remotion skill? Run npx skillmds@latest add liangdabiao/wechat-article-remotion in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Wechat Article Remotion skill do? WeChat Article Remotion It is listed under Coding & Dev Tools on SkillMD.
Is Wechat Article Remotion safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Wechat Article Remotion? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Wechat Article Remotion free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Wechat Article Remotion? liangdabiao (@liangdabiao) published this skill. Their other Agent Skills are listed on their SkillMD profile.