/graph:你的数字变成动画图表
用户以任意形式给出数字:3月 200K,4月 650K,11月 1.5M、粘贴的表格、CSV 文件、截图或一句话。你将它们转化为一个小规格文件,检查一帧,渲染视频并返回一个无声的 MP4(约 5 秒)。
下面的 ${CLAUDE_SKILL_DIR} 是这个技能所在的文件夹(即此 SKILL.md 所在的文件夹)。如果你的环境没有填充它,请使用该文件夹的路径。将所有内容保存到用户当前文件夹,或用户指定的文件夹。
0. 环境检查
python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" --check
这需要几秒钟;如果你不确定这台计算机是否已设置好,请运行它。"ready": true 表示就绪。否则运行它在 "fix" 下列出的命令,告诉用户这是一次性安装:python3 -m pip install playwright(浏览器驱动),python3 -m playwright install chromium(仅在未安装 Google Chrome 或 Edge 时需要,约 150 MB),python3 -m pip install imageio-ffmpeg(仅在缺少 ffmpeg 时需要)。如果 pip 拒绝并提示“外部管理环境”,请创建一个私有环境并对其 Python 执行所有命令:python3 -m venv ~/.animate-skills && ~/.animate-skills/bin/pip install playwright imageio-ffmpeg,然后根据需要运行 ~/.animate-skills/bin/python -m playwright install chromium。在 Windows 上,使用 py 代替 python3。如果此环境无法使用浏览器(例如 Claude 应用的沙箱),请参考此文件末尾。
1. 编写规格文件
保存 graph-<主题>.json:
{
"title": "我的 Instagram 关注者",
"subtitle": "2026",
"data": [["3月", 200000], ["4月", 650000], ["11月", 1500000]],
"source": "Instagram",
"theme": "night"
}
规则:
- 使用用户的精确数字。切勿发明、平滑、四舍五入或填充数值。如果某些内容确实模棱两可(例如哪一列、什么单位),问一个简短的问题;否则直接进行。
- 写出完整数字:650K →
650000,1.5M →1500000,12% →12并设置"suffix": "%"。 - 保持标签简短(最多约 8 个字符效果最佳):
3月、Q1、2024、Mon。 - 标题描述数字代表的含义,尽可能使用用户的措辞(最多约 30 个字符;
|强制换行)。仅当用户提供了或请求中明确包含(如“我的 Instagram 关注者” → 来源 Instagram)时,才添加subtitle和source;不要编造。
| 字段 | 作用 |
|---|---|
title、subtitle | 标题及其下方的一行小字(句号、单位)。 |
data | [["标签", 数字], ...] 或 [{"label": "...", "value": n}, ...],按顺序排列。 |
type | 留空以自动选择:最多 10 个值时使用条形图;更长的序列、以及数值变化相对于其大小很小的场景(如体重从 210 降至 178、价格、温度),使用折线图并缩放范围。设置为 "bar" 或 "line" 以强制指定。 |
prefix、suffix | 单位:"$"、"€"、"%"、" kg"。 |
decimals | 强制指定小数位数。默认情况下,每个值保留其自己的小数位数。 |
compact | 默认将 10,000+ 显示为 12K / 1.5M / 2B。设置为 false 显示完整数字。 |
callout | 留空以自动生成从第一个值到最后一个值的增长标签(↑ 7.5x;10x 以上使用整数,如 ↑ 77x;↑ 32%;↓ 18%)。也可以使用你自己的简短文字(如 "恢复盈利"),或设置为 null 表示不显示。 |
good | 当较低数值更好时(如体重减轻、债务还清、成本、比赛时间)设置为 "down":下降时显示绿色标签而非红色。 |
highlight | 指定哪条柱为金色:"last"(默认)、"max"、索引,或 "none"。 |
theme | night(深海军蓝背景、珊瑚色柱;默认)、light、sunset、mint。 |
source | 图表下方的小字“来源:...”注释。 |
size | "1080x1920"(竖版,默认)、"1080x1080"、"1920x1080"。 |
duration、fps | 时长(默认约 5 秒)和帧率(默认 30;60 更流畅但渲染更慢)。 |
示例:examples/instagram-followers.json(条形图)、examples/website-visitors-line.json(折线图)。
2. 检查最后一帧
python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" graph-<主题>.json --still end --out graph-<主题>-check.png
查看图像(需要 2-3 秒生成):标签可读、无重叠、数字与用户提供的完全一致。如有问题,修改规格文件并再次检查。
3. 渲染视频
python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" graph-<主题>.json --out graph-<主题>.mp4
大约需要 10-20 秒。删除检查图像。
4. 交付
向用户提供 MP4 的路径(如果你的环境可以显示文件,请展示它)。该视频没有声音,可直接用于添加音乐或配音。提供一个快速变体建议(如另一种主题、方形尺寸、将条形图改为折线图)。
此处没有浏览器?(例如 Claude 应用的沙箱)
如果环境检查无法让浏览器运行,请将动画生成为页面:python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" graph-<主题>.json --html graph-<主题>.html。该页面可在任何浏览器中播放图表(如果可以,请将其作为工件展示)。告知用户 MP4 需要装有 Claude Code 的计算机,或对页面进行屏幕录制。