article2media

agent
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 7 GitHub stars
Code Uyari
  • process.env — Environment variable access in skills/article-comic/scripts/comic.mjs
  • process.env — Environment variable access in skills/article-comic/scripts/doctor.mjs
  • process.env — Environment variable access in skills/article-fetch/scripts/doctor.mjs
  • process.env — Environment variable access in skills/article-fetch/scripts/fetch.mjs
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

把一篇文章或一条视频(抖音、B 站、YouTube,先转逐字稿)一键做成小红书图文、杂志长图、公众号排版和 AI 配音口播短视频的开源 Claude Code / Codex Skill。21 套主题,自动验收,零 npm 依赖。

README.md

article2media

把一篇文章或一条视频,一键做成小红书图文、公众号排版和口播短视频。10 个能力各自独立,也能自由组合。

开源 Claude Code / Codex Skills · 抓取 · 视频转文字 · 改写 · 翻译 · 杂志长图 · 小红书卡片 · 公众号排版 · 竖屏口播视频 · 原文排版 · 白板论证 · 漫画

version
license
node
npm deps
Claude Code
Codex

article2media 是一组开源的 Claude Code / Codex Skill,同时也是一个 Claude Code 插件。它把一篇文章或一条视频做成可以直接发布的中文视觉内容。

从 2.0 起,它由 10 个独立能力组成:文章抓取、视频转文字、改写(总结)、全文翻译、长图、卡片、公众号排版、口播视频、白板论证、漫画。每个能力都是一个 skill,可以单独用(比如只把自己写的文章排成公众号,或者只把视频转成文字),也可以自由组合。总入口 /article2media 提供常用的一键组合。

  • 输入:
    • 文章:X(Twitter)长文、网页、微信公众号文章,或本地 Markdown;
    • 视频:抖音、YouTube、B 站链接,本地视频或音频,.srt / .vtt 字幕。视频先转成逐字稿文章。
  • 产出:
    • 杂志风长图、小红书 3:4 图文卡片、可直接粘贴的公众号排版;
    • 带本地 AI 配音和逐字字幕的竖屏口播视频;
    • 一字不改的原文长图、原文卡片和原文公众号排版;
    • 中文全文译文、白板论证图和黑白漫画。
  • 验收:每种产出都自动检查,不合格就报错。
  • 依赖:只需要 Node.js 22 和 Chrome。

同一篇文章的七种产出,以及 21 套主题

示例:Dan Koe 的 X 长文《The most lucrative AI business to start in 2027》。七种产出各用了一套主题,口播视频用的是「资讯播报男声」。看示例视频 · 听 6 款音色


为什么做这个

好文章在信息流里很难被读完。把它做成图文或视频,通常要截图、排版、配图、配音、剪辑,几个小时才做完一个平台,换个平台还得从头再来。

article2media 把这件事交给 AI。你给一个链接,流程分三步:

  1. Claude 先把文章读懂:要总结时重组成一份和风格无关的结构化内容,要原文时一字不动,要翻译时逐段译出;
  2. 脚本把它渲染成各平台需要的格式;
  3. 交付前自动验收,有问题直接报错,不靠人眼去找。

并不是每次都需要总结。自己写的文章只想排成公众号,或者想把全文做成小红书卡片,就直接排版,不经过改写。所以每一步都做成了独立的能力,按需要拼起来。

核心特性

能力独立,组合自由 抓取、视频转文字、改写、翻译、长图、卡片、公众号、口播、白板、漫画各是一个 skill,只靠工作目录里的文件交接。总入口给出常用组合,也可以说"先翻译,再出原文卡片"这样自己组装。
原文、总结、翻译三条路 原文路径一字不改,逐块读回比对;总结路径重组结构、配图表;翻译路径全文不删,脚本检查结构是否逐块对应。三条路都能接到长图、卡片和公众号。
文章和视频都能当原文 视频先转成逐字稿文章:人工字幕优先,其次平台的原语言自动字幕,都没有时用本地 Whisper 识别。繁体转简体、专有名词纠错、时间轴都会处理好,后面的流程和文章完全一样。
先读懂,再排版 不是截图,也不是机械摘要。Claude 规划结构、改写标题、挑选图表、核对数字,产出只含内容的 content.json。版式和主题由脚本负责,换风格不用重写内容。
一份内容,多种产出 一次改写,同时出长图、卡片(3:4 / 4:5 / 1:1 / 9:16)和公众号;口播视频、白板、漫画另有专门的脚本。21 套主题对所有图文产出通用,口播视频沿用主题的配色、字体和卡片样式。
每种产出都有验收 版面检查溢出、截断和重叠。原文长图、原文卡片、公众号排版都逐块读回比对,改一个字就失败。翻译检查块数、结构、漏译和数字。白板要求每段原文都有去向。视频审片检查首句时长、画面静止、语速、字幕闪断、成片逐帧的字幕丢帧和响度。不合格就以非零码退出。
视频质量达到能发布的水准 本地 VoxCPM2 生成 48 kHz 配音,Whisper 逐字对齐,数字和要点在说到的那一刻出现。语速按从容讲解控制在约 4.5 字/秒。字幕不闪烁,样式跟随主题。
版权与合规写进流程 随包 6 款音色全部只凭文字描述设计,不模仿任何真人。克隆音色只留在本机,使用时会提醒。成片首帧和 MP4 元数据都带 AI 生成标识,产出都署原文出处。
零依赖,本地优先 只需要 Node 22 和一个 Chrome。出图、本地配音、逐字对齐都是可选能力,会自动探测。缺了就降级或明确提示,不会自动下载或安装任何东西。

快速开始

1. 安装(推荐 Claude Code 插件,一次装好全部 11 个 skill;其他方式见安装)

claude plugin marketplace add threerocks/article2media
claude plugin install article2media@article2media

2. 检查环境

bash scripts/install.sh      # 在仓库里:Node、Chrome、字体,以及做视频要的配音、对齐、出图、ffmpeg

装成插件后,第一次使用时 skill 会自己跑环境检查。

3. 在 Claude Code 里调用

一键组合用总入口:

/article2media https://x.com/thedankoe/status/2117664712532123680       # 总结长图(默认)
/article2media https://example.com/post 小红书                           # 小红书总结
/article2media ./my-essay.md 公众号                                      # 原文排版成公众号
/article2media https://x.com/… 翻译成中文发公众号                        # 外文搬运
/article2media https://x.com/… 长图、小红书、公众号都要                  # 一稿多发:改写一次,三种产出
/article2media https://www.bilibili.com/video/BV… 小红书                 # 视频进,图文出

也可以直接用单个能力(插件里名字带 article2media: 前缀):

/article2media:wechat-layout ./my-essay.md            # 只排版,不总结
/article2media:image-cards ./my-essay.md 原文卡片      # 全文分页成 3:4 卡片
/article2media:video-transcript https://www.bilibili.com/video/BV…     # 只要逐字稿
/article2media:article-translate article2media-out/x-…/article.md      # 只翻译

产出写在当前目录的 article2media-out/<slug>/ 下。Codex 里用 $article2media、$wechat-layout 这样调用。

十个能力,自由组合

skill 能力 输入 → 产出
article-fetch 文章抓取 X 长文 / 帖子 / 线程、网页、公众号、本地文件 → article.md
video-transcript 视频转文字 抖音、YouTube、B 站、本地视频 / 音频、.srt / .vtt → 逐字稿 article.md
article-rewrite 改写(总结) article.md → 改写稿 content.json,可导出成文章 rewrite.md
article-translate 全文翻译 article.md → article.zh.md,结构逐块对应
long-image 长图 改写稿 → 杂志长图;文章 → 一字不改的原文长图
image-cards 卡片 改写稿 → 总结卡片;文章 → 原文卡片(3:4 / 4:5 / 1:1 / 9:16)
wechat-layout 公众号排版 文章(原文、译文或 rewrite.md)→ 可粘贴的图文 + 头图 + 封面
explainer-video 口播视频 文章 → 1080×1920 竖屏讲解视频
logic-whiteboard 白板论证 文章 → 纵向推理主干长图
article-comic 漫画 文章 → 黑白漫画 + 3:4 卡片

能力之间只靠同一个工作目录里的文件交接:article.md(原文)、article.zh.md(译文)、content.json(改写稿)、rewrite.md(改写稿的文章形态)。

推荐组合

组合 链路
总结长图(默认) 取原文 → 改写 → 长图
小红书总结 取原文 → 改写 → 3:4 卡片
公众号排版 取原文 → 公众号排版
公众号总结 取原文 → 改写 → 导出 rewrite.md → 公众号排版
外文搬运 取原文 → 翻译 → 公众号排版
原文长图 / 原文卡片 取原文 →(外文先翻译)→ 长图 / 卡片
视频转图文 视频转文字 → 改写 → 长图或卡片
视频转文字 视频转文字
一稿多发 取原文 → 改写一次 → 长图 + 卡片 + 公众号
文章转口播 取原文 → 口播视频
白板 / 漫画 取原文 → 白板 / 漫画

没说要原文还是总结时:长图和卡片默认总结,公众号默认原文排版,外文走原文路径时先翻译。说了"排版 / 原文 / 一字不改"就走原文,说了"总结 / 提炼"就走改写。完整规则见 pipeline.md。

产出一览

产出 规格 适合 触发方式 示例里的主题
杂志长图(默认) 1200 宽,2 倍图,1–4 页;每节有标题、要点、两张图表和一个数据面板,结尾附执行清单 把长文读成一份可收藏的拆解 不加参数 editorial
卡片组 小红书 3:4(1080×1440)、IG 4:5、1:1、9:16;封面 + 每节一卡 + 要点,附发帖文案 信息流平台 提到比例或平台,或 --ratio 3:4 brutal
公众号排版 任何文章(原文、译文、改写稿导出的文章)排成内联样式、图片内嵌的图文,可直接粘贴进编辑器;另出 2.35:1 头图和 1:1 封面 公众号 提到「公众号」 swiss
口播视频 1080×1920 竖屏:封面 → 5 秒内说完的钩子 → 逐字同步的动画、配音和字幕 抖音、视频号、小红书视频 提到「视频 / 口播」 midnight
原文长图 原文一字不改,白底阅读面,正文 40 px / 1.9;逐块校验,过长时在块与块之间分页 完整保留原文,只做排版 -f、「原文长图」 白底阅读面
原文卡片 整篇按顺序分页成固定比例卡片,段落在行间断开、下一张接上;逐块校验 把全文发成小红书图文 「原文卡片」「全文做成小红书」 白底阅读面
全文译文 外文原文逐段译成中文,结构逐块对应,可以接原文长图、原文卡片和公众号 搬运外文文章 「翻译」 —
白板论证 一条纵向推理主干:问题、前提、证据、矛盾、转折、结论;每段原文都有去向 看清作者怎么得出结论 -w 白板
漫画 黑白分镜,角色前后一致,对白全部用 HTML 排版;附 3:4 卡片 用一个故事讲清一个机制 -c 黑白漫画

可以输入 X 长文、帖子或线程,任意网页,微信公众号文章,本地 Markdown 或文本文件,也可以直接粘贴正文;视频见下一节。英文原文改写时默认写成中文,需要英文产出时加 --lang en;要全文中文就走翻译。没有提比例或平台时出长图;没有指定风格时,Claude 按内容选一个主题,交付时说明理由。

/article2media https://example.com/post --style midnight     # 指定主题
/article2media ./notes.md --style all --pages 2              # 全部主题各出一份
/article2media https://x.com/… 小红书 --illustrate           # 加 AI 插画(封面 + 配图)
/article2media https://x.com/… --verify                      # 联网核对文中的数字
/article2media ./essay.md -f                                 # 原文长图
/article2media ./essay.md 原文卡片 1:1                        # 原文分页成方图卡片
/article2media https://x.com/… -w                            # 白板论证
/article2media https://x.com/… -c                            # 漫画(需要出图能力)

视频当原文

给一个视频链接或视频文件,video-transcript 会先把它转成逐字稿文章 article.md,时间轴另存在 transcript/segments.md。只要文字就到此为止;要长图、卡片、公众号、口播视频还是漫画,后面和文章一模一样。

/article2media https://www.bilibili.com/video/BV1NprhBPEtR 小红书
/article2media "7.94 复制打开抖音,看看【…】 https://v.douyin.com/…/"     # 整段分享口令也行
/article2media ./访谈录音.m4a 公众号
/article2media ./talk.srt -f
来源 文字从哪来
YouTube 人工字幕 → 原语言自动字幕(不用机器翻译的字幕轨)→ 本地语音识别
B 站 人工字幕 / AI 字幕 → 本地语音识别
抖音 下载视频(优先无水印地址)→ 本地语音识别
本地视频 / 音频 本地语音识别
.srt / .vtt 直接解析
  • 本地语音识别:用 mlx-whisper 和 whisper-large-v3-turbo,在 Apple Silicon 上运行。实测 6 分钟的 B 站视频 16 秒转完,14 分钟的视频 29 秒转完。
  • 清理:
    • 繁体转简体(内置 OpenCC 字表);
    • 半角标点改全角;
    • 去掉 Whisper 在静音处编出的套话和重复循环;
    • YouTube 自动字幕的滚动重复会去掉。
  • 分段:在句末停顿处分自然段,只补标点,不改字。
  • 专有名词:识别前用 --prompt "人名 术语" 提示,识别后用 --terms 词表.txt 替换,词表每行写 错词=>正词。
  • 浏览器 cookie:有的网络下 YouTube 要求登录确认,抖音也会要求浏览器 cookie。这时脚本会提示两个办法:
    • 你同意复用本机浏览器状态时,加 --cookies-from-browser chrome;
    • 把视频保存到本地,直接传文件。

细节见 video-input.md。

工作原理

flowchart LR
  IN["文章链接 / 文件 / 正文"] --> F["article-fetch<br/>→ article.md"]
  VIN["视频链接 / 音视频 / 字幕"] --> T["video-transcript<br/>→ article.md(逐字稿)"]
  F & T --> A["article.md"]
  A --> TR["article-translate<br/>→ article.zh.md"]
  A --> RW["article-rewrite<br/>→ content.json"]
  RW --> EX["export.mjs<br/>→ rewrite.md"]
  RW --> LI["long-image · image-cards<br/>杂志长图 · 总结卡片"]
  A & TR --> OR["long-image · image-cards<br/>原文长图 · 原文卡片"]
  A & TR & EX --> WX["wechat-layout<br/>公众号排版"]
  A --> V["explainer-video · logic-whiteboard · article-comic<br/>口播视频 · 白板 · 漫画"]
  LI & OR & WX & V --> QA["自动验收<br/>不合格即非零退出"]
  • 抓取:
    • X 走 FxTwitter API,不用登录;
    • 网页依次尝试 r.jina.ai、defuddle.md、本地 Chrome;
    • 公众号用本地 Chrome;
    • 视频:字幕用 yt-dlp 获取,没有字幕时用本地 Whisper 识别。
  • 分工:Claude 负责理解和写作(改写稿、译文、口播脚本、白板账本、分镜);脚本负责一切确定性的工作:抓取、排版、截图、配音、对齐、混音和验收。
  • 交接:每个能力都是独立的 skill,只靠工作目录里的文件交接,共用 skills/article2media/engine/ 里的脚本、版式和主题。
  • 渲染:内容、版式 CSS 和主题 CSS 合成 HTML,再通过 DevTools 协议驱动无头 Chrome 截图,输出 2 倍分辨率。
  • 图表:15 种参数化图表,包括柱状、条形、堆叠、流程、矩阵、合流、树、数据、等式、路径、对比、循环、金句、图片和手写 SVG,颜色全部取自主题。另有可选的 AI 插画。

设计原则

  • 内容与风格分离:主题只是一组 CSS 变量加少量结构覆盖,换主题只需重新渲染。
  • 零 npm 依赖:只用 Node 22 内置的 WebSocket 和 fetch,直接驱动本机已有的 Chrome。
  • 能力探测,不强求:出图(Codex CLI → OpenAI → Gemini)、本地配音(VoxCPM2 → edge-tts → 系统语音)、逐字对齐和视频转写(Whisper)、视频字幕(yt-dlp)都是先探测再选用。
  • 图里不放字:生成的图片不含文字,所有文字都由 HTML 排版,所以可校验、可修改、不会出现乱码。

主题

21 套主题,同一份内容可以用任意主题渲染。没有指定时,Claude 依次按「明确偏好 → 题材 → 投放场景」选一个,规则见 references/styles.md。

21 套主题的封面和第一张内容卡

21 套主题一览
主题 气质 首选场景
editorial 商业杂志:暖白纸面、宋体、沉稳主色 商业、创业、行业分析、人物观点
swiss 瑞士极简:纯白、粗黑分割线、红黑双色 数据、研究、财经、严肃议题
midnight 深色科技:近黑底、霓虹色、等宽标签 AI、编程、开发者工具
glass 液态玻璃:彩色柔光、磨砂玻璃卡片、大圆角 面向普通用户的 AI 应用、数码与汽车新品
bento 便当格:灰底白色大圆角卡片、撞色 产品与工具的测评、横评、盘点
cloud 云舞白(Pantone 2026 年度色):柔白大留白、莫兰迪色 情绪、成长、人文随笔
earth 暖色大地:奶咖米色、陶土、焦糖、橄榄 个人经历与复盘、旅行、健康养生
notebook 格纹手帐:方格纸、霞鹜文楷、荧光笔 学习方法、读书笔记
memo 备忘录:仿手机备忘录、黄色导航、圆形勾选框 职场技巧、效率方法、生活小技巧
collage 拼贴手账:牛皮纸、胶带图卡、手写便利贴 生活记录、vlog、校园、兴趣爱好
brutal 新粗野大字报:粗黑描边、硬投影、高饱和色块 小红书和 IG 上的教程、攻略、清单
pop 波普漫画:网点、粗黑描边、三原色、对白气泡 品牌营销、广告创意、流行文化
dopamine 多巴胺:彩色光斑、糖果撞色、大圆角 好物种草、美食探店、自媒体成长
y2k 千禧液态铬:镭射彩光、得意黑斜体、果冻按钮 美妆、娱乐、追星、二次元
prosperity 繁荣主义:波尔多红、喜悦粉、金色双线、扇贝花边 时尚穿搭、节日送礼、品牌联名
riso 孔版印刷:纸张颗粒、荧光粉加孔版蓝、错位套色 设计、艺术、展览、摄影
pixel 像素复古:像素字体、窗口标题栏、硬投影 游戏、互联网文化与怀旧
film 电影感:暗角、胶片颗粒、宽银幕黑边、字幕式金句 影视评论、人物特写、深度访谈
guochao 国潮:朱红明黄、粗宋、印章标签、回纹祥云 节庆民俗、国货品牌、城市文旅
shanshui 新中式:宣纸、京华老宋体、石青石绿远山、朱砂印 古典历史、诗词国学、茶与器物
quiet 静线:暖纸底、暖黑字、只有一种暗朱红、细线与留白 哲思、单一观念、书与论文的深度解读

部分标题字体从 Google Fonts 和 jsDelivr 在线加载。离线时会退回系统字体,版式不变,只是风格感弱一些。新建一个主题只需要写一个 CSS 变量文件,见 references/styles.md。

口播视频

node skills/explainer-video/scripts/video.mjs make <目录>/video/video.json

Claude 先当导演写 video.json,内容包括受众、开场策略、封面、每一镜的口播和画面;脚本完成其余全部工作。示例视频用的是 midnight 主题和「资讯播报男声」。

配音

  • 三档后端,按顺序选用:本地 VoxCPM2(Apple Silicon,48 kHz)、edge-tts(免费,需联网)、macOS 系统语音。
  • 逐句生成并质检,检查项包括错字率、语速、截断、削波、音色漂移和英文漏读。不合格就换种子重试;仍然偏快的段落在保持音高的前提下放慢。结果按句缓存。
  • 语气和方言可以用口播行首的括号控制,例如「(极度愤怒,东北话)注意看!」,括号内容不进字幕。

画面

  • 逐字同步:Whisper 给出字级时间戳,数字滚动、清单、对比、打勾和高亮都在口播说到那个字时出现。
  • 镜头类型:共 10 种,包括数字滚动、清单、时间线、合流、对比、并列数字、逐字点亮的金句、回顾清单、标题和图片。
  • 停留时间:每镜最后一个元素出现后至少停留 1.1 秒,不够时自动加长停顿。
  • 开场:第一帧是封面,静止 0.5 秒,可以配 AI 插画;接着是首句钩子,要求 5 秒内说完。

随包音色

6 款公开音色,全部由 VoxCPM2 只凭文字描述设计,不对应任何具体的人,参考语速都在 4.2–5 字/秒之间。试听里每款音色读的都是同一段话。

音色 ID 适合 试听
甜美知性女声 sweet-woman 生活方式、情感成长、知识分享 mp3
活力种草女声 lively-promo 好物种草、美食探店、带货 mp3
资讯播报男声(默认) news-man 资讯、财经、科技数码、自媒体干货 mp3
纪录片旁白男声 documentary-man 历史人文、深度解读 mp3
东北热情大哥 northeast-guy 搞笑、接地气、生活吐槽 mp3
台湾口音温柔女声 gentle-tw-accent 情感、生活、轻松闲聊 mp3

管理音色的命令:

命令 作用
video.mjs voice-design 用文字描述设计新音色;--from <音色> 保留原音色,只改语气或语速
video.mjs voice-import 把本人或已获授权的声音导入本机个人音色库
video.mjs voices 列出全部音色

本机个人音色库在 ~/.local/share/article2media/voices/,不随项目分发,用于成片时审片会提醒确认授权。

字幕

单行显示,同一句里的短语合并,换字幕时硬切,短停顿里字幕一直保留,所以不会闪烁。7 种样式预设分配给 21 套主题,关键词用主题色。

21 套主题的字幕样式

审片与交付

  • 审片:每次成片都输出 review.json,检查首句时长、首个画面出现的时间、最长画面静止、旁白语速、字幕停留与闪断、字幕丢帧(逐帧检查成片里该有字幕的帧)、配音质检和响度(-14 LUFS)。
  • 交付物:video.mp4、两张封面(cover.png 和 3:4 的 cover-3x4.jpg)、captions.srt、带 AI 生成声明的发布文案 post.md,以及审片总览图 contact-sheet.jpg。
  • 背景音乐:这一版不带,需要时在平台 App 里添加。

写法和镜头类型详见 video-guide.md。

原文、翻译与其他产出

公众号排版(wechat-layout)

  • 只吃文章:原文 article.md、译文 article.zh.md,或改写稿导出的 rewrite.md(公众号总结)。正文一字不改,逐块读回校验;文章标题进公众号标题栏,不在正文里重复。
  • 为什么全部内联:公众号编辑器会丢掉 class、外部 CSS 和网络字体,所以样式全部从主题算好后写成内联样式,列表写成带标记的段落,换行写成 <br>,图片以 base64 内嵌,不需要图床。
  • 怎么发布:打开 article.html,点「复制到公众号」,粘贴进编辑器即可;wechat.md 里有标题、摘要和两张封面。
  • 详细说明:见 wechat-guide.md。

原文长图(long-image,-f)与原文卡片(image-cards)

  • 原文块账本:每个可见文本块都登记进账本,渲染后在浏览器里逐块读回比对。改一个字、调一次顺序、漏一块或重复一块,都会失败。
  • 卡片怎么分页:放不下的段落在行与行之间断开、下一张接上,列表在项间断开,表格在行间断开并重复表头;小标题不落单,续页不会只剩一行。跨卡的两截拼起来比对。
  • 附加检查:解析器有没有漏掉原文,来源文件在渲染期间有没有被改动;同时报告浏览器实际用上的字体。
  • 详细说明:见 verbatim.md、original-long.md、original-cards.md。

全文翻译(article-translate)

  • 做法:Claude 逐块翻译,块的种类和顺序不变;代码和图片原样保留,front matter 记下原文出处。
  • 检查:translate.mjs check 核对块数和结构是否一致,提示像是没翻译的段落、比其他段短很多的段落(可能漏译)和丢掉的数字。
  • 详细说明:见 translate-guide.md。

白板论证(-w)

  • 做法:先从原文生成来源清单,每段有编号和哈希。Claude 再写出一条推理主干,每段原文要么进入某一步,要么写明省略理由。
  • 箭头:只有真正改变阅读方向的地方才画箭头。
  • 详细说明:见 mode-whiteboard.md。

漫画(-c)

  • 分镜结构:最小案例 → 旧做法试一次 → 可观察的缺口 → 一个概念补位 → 同案重跑。
  • 角色一致:先生成锚点格,其余格以它为参考图并行生成。
  • 详细说明:见 mode-comic.md。

AI 插画(--illustrate,可选)

  • 画风:按主题画风(engine/themes/illustration-styles.json)和主题配色生成封面插画和配图,边缘淡出,和底色融在一起。
  • 服务商:优先用 Codex CLI(ChatGPT 登录即可,不需要 key),也支持 OpenAI 和 Gemini 的付费 key。

自动验收

产出 检查项
杂志长图、总结卡片 溢出、截断、重叠、单字成行、页面过高、图片或字体加载失败、卡片溢出、图表过小
原文长图、原文卡片、公众号排版 原文块账本逐块比对(卡片跨卡拼接)、解析覆盖、来源 SHA-256 锁定、实际字体;卡片溢出、张数上限;公众号残留样式、标题长度、封面标题
全文翻译 块数与结构逐块对应、代码与图片原样、疑似未翻译或漏译、数字是否丢失
白板论证 论证账本:每段原文都要进入某一步,或写明省略理由
漫画 对白、旁白和音效字不越出分格
口播视频 安全区、首句 ≤ 5 秒、首个画面 ≤ 2.5 秒、画面静止 ≤ 5 秒、旁白语速、字幕停留与闪断、成片逐帧字幕丢帧、逐句配音质检、响度

每个脚本都以 ✓ / ⚠ / ✗ 逐行报告,最后汇总为 版面检查:N 个错误,M 个提示(翻译是 翻译检查)。只要有错误,脚本就以非零码退出。

常见问题

article2media 是什么?

一组开源的 Claude Code / Codex Skill,也是一个 Claude Code 插件。你给它一篇文章或一条视频,它产出能直接发布的中文视觉内容:

  • 杂志长图;
  • 小红书图文卡片;
  • 公众号排版;
  • 口播短视频;
  • 原文排版、全文翻译、白板论证和漫画。

2.0 起拆成 10 个可以单独使用的能力和一个提供一键组合的总入口。它在 1.5.0 之前叫 article2img。

只想排版、不想被总结,可以吗?

可以。说「排版」「原文」「一字不改」就走原文路径:/article2media ./my-essay.md 公众号 把你的文章原样排成公众号,原文卡片 把全文分页成小红书卡片,-f 出原文长图。也可以直接调用 wechat-layout、image-cards、long-image。没说的时候,公众号默认原文排版,长图和卡片默认先总结。

怎么把一篇公众号文章或 X 长文做成小红书图文?

  1. 安装后,在 Claude Code 里输入 /article2media <链接> 小红书。
  2. 它会抓取原文,改写成 3:4 卡片组:封面、每节一张卡、要点总结。
  3. 同时附一份可直接复制的发帖文案 caption.md。

需要其他比例时说 4:5、1:1 或 9:16。

能把文章自动做成口播视频吗?需要自己配音吗?

能,不需要自己配音。说「做成口播视频」,Claude 会先写分镜脚本,然后由脚本完成配音、逐字对齐、动画、字幕、封面和审片。

  • 配音后端:Apple Silicon 上用本地 VoxCPM2 生成 48 kHz 配音;其他机器用免费的 edge-tts 或系统语音。
  • 音色:随包 6 款,见随包音色。

需要付费 API 或 GPU 吗?

图文产出不需要,只要 Node.js 22 和 Chrome。

  • 插画和漫画:需要出图能力。Codex CLI 用 ChatGPT 账号登录即可,或者使用 OpenAI、Gemini 的付费 key。
  • 本地配音:最好的效果需要 Apple Silicon。

生成的配音可以商用吗?版权怎么处理?

  • 随包音色:6 款都由 VoxCPM2 只凭文字描述生成,不模仿任何真人,可以随项目使用。
  • 克隆音色:用国民音色、平台 TTS 等作参考克隆的声音,只能导入本机个人音色库,不随项目分发;使用时审片会提醒你确认授权。
  • AI 标识:成片首帧和元数据都带 AI 生成标识。

和 AI 直接出图、剪映「图文成片」这类工具有什么不同?

  • AI 直接出图:经常把中文字画错。article2media 的图片里不放文字,所有文字都由 HTML 排版。
  • 素材匹配类视频工具:按文案从素材库配画面。article2media 的画面来自原文本身的结构,包括数字、清单、对比和金句,并且在口播说到时出现。
  • 多种产出:一次理解,同时得到长图、卡片、公众号和视频,每种都有自动验收。

能把抖音、B 站、YouTube 视频做成小红书图文吗?

能。直接给链接,比如 /article2media https://www.bilibili.com/video/BV… 小红书;抖音整段分享口令也可以。

  1. 视频先转成逐字稿文章:有字幕用字幕,没有就用本地 Whisper 识别。
  2. 之后和文章一样,改写成卡片、长图、公众号或口播视频,来源署原视频作者。

视频没有字幕怎么办?

  • 有本地 Whisper(Apple Silicon 上装 mlx-whisper 和 whisper-large-v3-turbo 模型):自动识别。实测 14 分钟的视频 29 秒转完。
  • 没有本地 Whisper:可以提供 .srt / .vtt 字幕文件。
  • 人名、术语识别错了:用 --prompt 提示,或用 --terms 替换。

支持英文文章吗?

支持,有两种用法:

  • 总结:英文原文默认改写成中文产出(示例用的就是一篇英文 X 长文),需要英文产出时加 --lang en。
  • 全文翻译:说「翻译成中文」,先逐段译成 article.zh.md(脚本检查有没有漏译),再排成公众号、原文长图或原文卡片。

原文排版碰到外文原文、而读者是中文时,会先翻译再排。

安装

11 个 skill 要装在同一个 skills 目录里:各能力的脚本都在 article2media/engine/,所以至少装 article2media 加上你要用的能力,最省事是全部装上。

Claude Code 插件(推荐,一次装好全部)

claude plugin marketplace add threerocks/article2media
claude plugin install article2media@article2media

插件里的 skill 名字带前缀:/article2media(总入口)、/article2media:wechat-layout、/article2media:image-cards……

skills CLI(同时支持 Claude Code 和 Codex)

npx skills add threerocks/article2media -g -a claude-code -a codex -y   # 全局安装仓库里的全部 skill
npx skills add threerocks/article2media -a claude-code -y               # 只装进当前项目
参数 作用
-a claude-code / -a codex 装给哪个宿主,可重复
-g 全局安装(Claude Code 装到 ~/.claude/skills/,Codex 装到 ~/.agents/skills/);不加则装进当前项目
-y / -l 跳过确认 / 只列出不安装

手动安装(仓库根目录不是 skill 目录,需要同步整个 skills/)

git clone --depth 1 https://github.com/threerocks/article2media.git ~/code/article2media
rsync -a ~/code/article2media/skills/ ~/.claude/skills/     # Claude Code
rsync -a ~/code/article2media/skills/ ~/.agents/skills/     # Codex

只拷了某个能力、旁边没有 article2media 时,脚本会提示"找不到共享引擎";也可以用环境变量 ARTICLE2MEDIA_ENGINE=/path/to/skills/article2media/engine 指过去。

在本仓库里打开 Claude Code 时,.claude/skills/ 下 11 个 skill 都已经软链接好,可以直接使用。

从 1.x 升级:插件更新即可。手动或 skills CLI 安装的,把新增的 10 个 skill 一起装上;以前直接调用的 skills/article2media/scripts/*.mjs 现在在 skills/article2media/engine/scripts/,或用各 skill 自己的入口(见下)。

依赖

需要 用途
Node 22+,任意 Chrome 或 Chromium 全部能力
ffmpeg 口播视频
可选:Codex CLI(codex login),或 OpenAI / Gemini 付费 key AI 插画、视频封面插画、漫画
可选:Apple Silicon + mlx-audio + VoxCPM2 最自然的本地配音;没有时用 edge-tts 或系统语音
可选:mlx-whisper 逐字对齐,以及没有字幕的视频转写;对齐缺它时用 edge-tts 的词边界或按字数估算
可选:yt-dlp YouTube、B 站的字幕和音频;抖音的兜底

bash scripts/install.sh 会逐项检查,只告诉你缺什么、怎么装,不会自动下载。找不到 Chrome 时,可以安装 Google Chrome、运行 npx playwright install chromium,或者设置 ARTICLE2MEDIA_CHROME=/path/to/chrome。

单独使用脚本

每个能力的 scripts/ 下都有自己的入口,不经过 Claude 也能直接跑:

K=skills
node $K/article-fetch/scripts/fetch.mjs "https://x.com/…/status/…"               # → article2media-out/<slug>/article.md
node $K/video-transcript/scripts/transcribe.mjs "https://www.bilibili.com/video/BV…"   # 视频 → 逐字稿(抖音、YouTube、本地视频 / 音频、.srt 同理)
node $K/video-transcript/scripts/transcribe.mjs ./talk.mp4 --prompt "人名 术语" --terms terms.txt
node $K/article-rewrite/scripts/check.mjs <slug>/content.json                   # 只校验改写稿(加 --ratio 3:4 连卡片一起查)
node $K/article-rewrite/scripts/export.mjs <slug>/content.json                  # 改写稿 → rewrite.md + 图表图片
node $K/article-rewrite/scripts/illustrate.mjs <slug>/content.json              # AI 插画
node $K/article-translate/scripts/translate.mjs check <slug>/article.md <slug>/article.zh.md   # 翻译检查
node $K/long-image/scripts/long.mjs <slug>/content.json --theme all             # 杂志长图,全部主题
node $K/long-image/scripts/long.mjs <slug>/article.md                           # 原文长图
node $K/image-cards/scripts/cards.mjs <slug>/content.json --ratio 3:4           # 总结卡片:3:4 / 4:5 / 1:1 / 9:16
node $K/image-cards/scripts/cards.mjs <slug>/article.md --ratio 3:4             # 原文卡片
node $K/wechat-layout/scripts/wechat.mjs <slug>/article.md --theme quiet        # 公众号排版(原文、译文或 rewrite.md)
node $K/logic-whiteboard/scripts/whiteboard.mjs <slug>/article.md               # 白板:先生成来源清单
node $K/logic-whiteboard/scripts/whiteboard.mjs <slug>/whiteboard.json          # 白板:再渲染
node $K/article-comic/scripts/comic.mjs make <slug>/comic.json                  # 漫画
node $K/explainer-video/scripts/video.mjs make <slug>/video/video.json          # 口播视频(check / voice / render 可分步)
node $K/long-image/scripts/long.mjs --list                                      # 列出主题

长图和卡片的其他参数:--out 目录、--page 1,3、--scale 2、--format jpeg --quality 90、--max-height 4400、--brand brand.json、--html-only。公众号另有 --title、--digest、--cover-title、--kicker、--hero。

页脚的品牌名、@handle 和栏目名从 brand.json 读取:

{ "name": "Founder Notes", "handle": "@you", "series": "实战手册", "editor": "编者" }
目录结构
skills/
├── article2media/               # 总入口:推荐组合 + 共享引擎
│   ├── SKILL.md
│   ├── references/              # pipeline.md(交接文件、原文还是改写、怎么调用其他能力)、verbatim.md、styles.md
│   └── engine/
│       ├── scripts/             # fetch / render / export / translate / illustrate / video / comic / doctor
│       │   └── lib/             # chrome(CDP 驱动)、各版式与原文账本、校验、出图;media/(视频转逐字稿);video/(配音、对齐、镜头、渲染、字幕)
│       ├── layouts/             # 各版式的结构 CSS
│       ├── themes/              # 21 个主题 CSS;illustration-styles.json、caption-styles.json
│       └── assets/voices/       # 6 款公开音色(catalog.json)
├── article-fetch/               # 每个能力:SKILL.md、agents/openai.yaml、references/、scripts/(指向引擎的入口)
├── video-transcript/
├── article-rewrite/             # 另有 examples/:content.json 示例(测试也用)
├── article-translate/
├── long-image/
├── image-cards/
├── wechat-layout/
├── explainer-video/
├── logic-whiteboard/
└── article-comic/
tests/                           # run-all.mjs(自测矩阵)、theme-sheet.mjs
docs/                            # README 用图、示例视频与音色试听、介绍文章
scripts/install.sh               # 依赖检查(只提示,不下载)
.claude-plugin/                  # plugin.json、marketplace.json

开发与自测

node tests/run-all.mjs --quick                  # 约 4 分钟:11 个 skill 的结构、CLI 行为、各能力检查、每个示例 × 6 种版式
node tests/run-all.mjs                          # 约 20 分钟:4 个示例 × 6 种版式 × 21 个主题
node tests/run-all.mjs --themes pop,dopamine    # 只测指定主题
node tests/theme-sheet.mjs                      # 重新生成 docs/themes.jpg
claude plugin validate .

通过标准是所有检查都显示 ✓,且每次渲染 0 个版面错误。在本仓库开发时的约定见 CLAUDE.md,版本历史见 CHANGELOG.md,设计取舍和踩过的坑见《article2media:给它一篇文章或一条视频,拿回一整套能发的图文和视频》。

路线图

  • 杂志长图、卡片组、21 套主题、模型自动选主题
  • 公众号图文、AI 插画
  • 口播视频:本地配音、逐字同步、语速与字幕质检
  • 原文全文排版、白板论证、漫画
  • 按版权分层的音色库
  • 视频当原文:抖音、YouTube、B 站、本地视频 / 音频、字幕文件 → 逐字稿文章
  • 拆成 10 个独立能力 + 一键组合;原文卡片、原文公众号排版、全文翻译
  • 视频背景音乐(本地 AI 作曲目前太重,暂缓)
  • 超长页自动拆图
  • X 登录态兜底(FxTwitter 不可用时)

English

article2media (formerly article2img) is a set of open-source Claude Code / Codex skills, also packaged as a Claude Code plugin, that turns one article or video into publish-ready Chinese visual content. Since 2.0 it is ten independent capabilities — fetch, video transcript, rewrite (summary), full translation, long image, cards, WeChat layout, explainer video, whiteboard, comic — that can be used alone or chained, plus an entry skill with one-step combos (article → rewrite → long image, article → WeChat layout, foreign article → translation → WeChat, video → transcript → Xiaohongshu cards, …).

  • Input: an X/Twitter post or thread, a web page, a WeChat article, a Markdown file, or a video: Douyin, YouTube or Bilibili links, local video and audio files, .srt / .vtt subtitles. A video is first turned into a verbatim transcript article, from platform subtitles when available and local Whisper otherwise.
  • Output:
    • magazine-style long images;
    • Xiaohongshu (RedNote) 3:4 carousel cards;
    • paste-ready WeChat Official Account layouts;
    • 9:16 narrated short videos with local AI voice-over (VoxCPM2) and word-synced captions (Whisper);
    • verbatim layouts that never change a word (long image, cards, WeChat), each read back block by block;
    • a full Chinese translation checked block for block against the source;
    • an argument whiteboard and a comic.
  • Themes: 21.
  • Verification: every output is checked automatically, and a failed check exits non-zero.
  • Requirements: zero npm dependencies, only Node.js 22 and Chrome.
  • Install: claude plugin marketplace add threerocks/article2media && claude plugin install article2media@article2media, or npx skills add threerocks/article2media -g -a claude-code -a codex -y (install all skills: they share article2media/engine).

致谢

  • ljg-skills(MIT):-f、-w、-c 三种模式和它们的校验纪律都来自这里,本项目在自己的架构上重写了实现。
  • 主题灵感:aps 主题库、lanshu-html-ppt-templates 的版式手法,以及 Canva、Pinterest Predicts、小红书 2026 年的趋势报告。这些都只借鉴思路,CSS 全部重新编写。
  • 模型与服务:VoxCPM2、mlx-audio、Whisper(mlx-whisper)、edge-tts、yt-dlp、FxTwitter、r.jina.ai、defuddle。
  • 繁简转换:字表取自 OpenCC(Apache License 2.0)。
  • 字体:思源宋体与思源黑体、站酷系列、霞鹜文楷、京华老宋体、得意黑、缝合像素、龙藏体。

许可

代码采用 MIT 许可。

  • 随包音色:6 款音色由 VoxCPM2 只凭文字描述生成,可以随项目使用和分发。
  • 本机音色:用户自己导入的音色不随项目分发,权利由导入者负责。
  • 示例内容:skills/article-rewrite/examples/ 和 docs/ 里的示例整理自公开文章,版权归原作者,只用于测试和演示;示例图和示例视频来自 Dan Koe 的 X 长文。

Yorumlar (0)

Sonuc bulunamadi