Repository navigation
article2media 2.2.0:封面多版本、品牌包、批量与效果闭环、视频片段与配乐、本地字体
这一版包含未单独发布的 2.1.0。升级后请留意两处默认行为的变化:长图默认是 1080 宽的手机单栏版(原来的 1200 双栏杂志版用 --wide);卡片封面默认是大字钩子版式(原来的目录封面用 "style": "toc")。
2.2.0
重心从"出图"移到"发出去并且有效果":封面可以比、品牌认得出、内容能批量做、数据能记下来;同时补齐视频的画面和声音,以及字体、出图服务这些底座。
封面、品牌与轻量形态
- 封面多版本:
cards.mjs content.json --covers只出封面,每个版本一张。不写cover.alts时按能用的版式各出一张;写了就按备选逐个出(不同的标题钩子、不同的版式),供挑选或分开发布比效果。 - 品牌包:
brand.json新增avatar(头像)、accent(品牌色)、issue(期号,content.json的issue或--issue覆盖)、tagline、follow。封面左上角显示头像、名字和期号,末张多一个品牌栏,长图页眉带期号、页脚带头像;品牌色替换主题的第一个主色。作者就是品牌本人时,页脚不再重复署名。 - 三种轻量形态(
--form):onepage一页看完(标题加最多 9 条要点)、quotes金句图(每句一张)、qa问答卡(对话气泡,自动分张)。都从同一份 content.json 切出来。 - 中文和英文、数字之间自动留出细缝(
text-autospace),不用在文字里手打空格。
批量与效果闭环
- 新增批量流水线:
batch.mjs init <links.txt | 链接…> --spec "cards:3:4,long,wechat"一次抓取多篇,生成队列queue.json和看板queue.md;next给出下一条内容和确切的下一步,status每次从磁盘重新计算状态;已抓过的链接自动跳过,视频链接记为待转写,抓取失败、正文偏短或疑似付费墙的条目单独列出等用户确认。 - 新增发布清单:
batch.mjs checklist <批次 | 工作目录>为每篇写publish.md——各平台的上传顺序、封面、标题候选、正文、标签,并检查平台硬性限制(小红书标题 ≤ 20、正文 ≤ 1000、图 ≤ 18;公众号标题 ≤ 64、摘要 ≤ 120)。 - content.json 新增可选字段
publish.titles(每个平台 3 个备选标题),发布清单里列出供挑选。 - 新增效果闭环:
stats.mjs add把每次发布(平台、链接、形式、主题、封面版式、张数、标题自动识别)和历次数据快照记进工作目录的publish.json;stats.mjs report跨所有内容按平台对比主题、封面版式、形式的中位数、最高值、收藏率和互动率,写出stats-report.md,样本不足 5 条的组明确标注「仅供参考」。 - 主题选择指南新增第 4 步:某主题或封面版式在目标平台有 ≥ 5 条数据时,只用于在两个同样合适的选项之间做裁决,并在交付时说明;不覆盖用户明确的偏好。
- 入口 skill 新增「批量」组合和「发布之后」说明;交付时提示"发布后把数据告诉我"。
口播视频
- 镜头可以放原视频片段(
clip:top/bottom/full三个位置,默认静音,audio: true时原声轻垫在旁白下);片段先切成帧再逐帧合成,比镜头短时停在最后一帧。 - 支持用户提供的背景音乐(
music):自动循环或截断、淡入淡出,旁白说话时压低;音乐在旁白定好响度之后才加入,旁白响度不变。不自带、不生成、不下载音乐。 - 新增转场
transition(cut/fade/slide/push,可全片或单镜设置);不写仍是原来的上移淡出,时间轴和字幕不变。 check会校验片段、配乐、转场(未知取值、文件不存在、end ≤ start);片段写成 meta.json 里的视频地址但未下载时给出下载命令,不自动下载。- 修复:首次渲染(字体缓存为空)时新出现的字幕可能空白几帧、导致「字幕丢帧」报错。
- 审片与 post.md:报告配乐响度和加配乐后的成片响度,提醒确认片段和音乐的使用权。
字体与出图
- 新增
fonts.mjs:一条命令把全部主题和版式用到的网络字体(Google Fonts、jsDelivr,约 65 MB)下载到本地缓存,支持--theme、--mirror镜像、--list、--clean;之后出图不再依赖网络,出图过程本身从不下载。 - 所有版式在加载页面时自动改用本地字体;没有装的字体仍按原来的方式联网加载。装了本地字体后每次出图使用独立的浏览器缓存,可以同时跑多个出图任务。
- 字体检查按字体家族报告:哪个字体没加载、哪个只加载了一部分都会提示,不再静默回退。
- 出图模型和服务可配置:
ARTICLE2MEDIA_IMAGE_MODEL_CODEX|OPENAI|GEMINI、ARTICLE2MEDIA_IMAGE_PROVIDER、~/.config/article2media/config.json;默认值只保留一处。 - 出图自动换服务:选中的服务因登录、额度或不可用失败时改用下一个可用的并说明;内容被拒绝时直接报告,不换服务。没登录的 Codex CLI 不再挡住可用的 OpenAI / Gemini key。
- 漫画的角色参考图在 OpenAI(images/edits)和 Gemini(内联图片)上也生效。
- 出图比例按服务取最接近的尺寸(9:16、3:4、4:5、16:9 等),提示裁切量并让模型把主体留在保留区域内;Codex 竖图以前实际出的是横图:现在把画幅写进提示词第一行,并检查返回图片的方向,不对就报错重试。
doctor显示本地字体安装情况,以及当前生效的出图服务和模型。
修复与测试
- 目录版封面(
toc)的卡片类名和目录面板撞名,导致封面多了圆角和内边距:已改名。 - brutal 封面的荧光块不再压住上一行标题;手机长图里大数字图表的面板不再留空。
- 新增
tests/visual.mjs视觉回归(像素对比、差异图、--update更新基线)和tests/unit.mjs离线单元检查;run-all.mjs新增封面多版本、轻量形态、品牌包、批量、发布清单、发布记录、视频片段与配乐校验。
2.1.0
一次整体检查之后的升级:先把"第一眼"做好(封面、卡片节奏、手机上的可读性),再清掉实测里攒下的问题。
封面与卡片
- 6 种封面版式(
cover.style):hook大字钩子(默认,标题放到最大,底部主色带里放导语和要点)、number大数字、versus左右对比、quote一句论断、image插画通栏、toc目录(原来的样子)。小红书首图和公众号头图共用。 - 3 种整页卡型(
card.style):quote整张主色底的一句金句、number一个大数字加解释、image图占满整张卡。十几张卡不再张张同一个结构;内容卡达到 6 张而没有整页卡时,校验会提示。 - 卡片自己把空间用满:图按实际画出来的内容放大,短的对比图不再悬在一个空框中间;还有余量时先放大字号,再补进这一节的要点,剩下的均匀分到各块之间。
- 清单卡不再半空:分页按略宽的预算打包,实测溢出再回退;有余量的清单卡、要点卡同样放大字号。
- 公众号头图右侧不再留白:每套主题有自己的装饰。
长图
- 默认改为手机版:单栏、1080 px 宽,正文在手机上不用放大就能读;图表一行一张、按内容收紧高度。原来的 1200 px 双栏杂志版用
--wide(或--layout magazine)。页面超过 16000 px 时自动降低输出倍数并提示拆页。
主题
- 主推 12 套:
editorial、swiss、quiet、bento、brutal、dopamine、midnight、film、guochao、shanshui、notebook、y2k。每套有自己的封面装饰、导语区和金句卡画法,缩略图里就能分辨。 - 9 套转为经典主题(
cloud、earth、memo、glass、collage、pop、pixel、prosperity、riso):文件保留,--theme <名称>照常能用,--theme legacy一次出全部;--list、--theme all、测试矩阵和选主题指南只包含主推的 12 套(engine/themes/catalog.json)。 - 选主题指南按 12 套重写;自媒体运营、涨粉、副业这类题材首选
brutal,生活方式与健康养生首选dopamine。
口播视频
- 镜头插画进入画面:
illustration生成的图以前只用在封面,现在显示在镜头里,illustration_place选top(内容上方)或bottom(字幕下方通栏)。 - 旁白语速按"字"计:英文单词按音节算,缩写按字母算,含英文的句子不再被误判过快而拉伸;配音质检比对英文不分大小写。
- 字幕断行按显示宽度切,不再切开英文单词和数字;
1,935、10:30保持完整。 - 字幕丢帧现在让
video.mjs以非零码退出;其余审片项仍是提示。 number镜头的角标按badge_cue出现,可以早于数字;计数器支持小数(0 → 4.5)。
修复
- 白板加主题后主干、圆点、标签消失:修复变量自引用;单强调色主题(quiet、swiss)的三种角色色不再重合,深色主题的节点底色和标签文字可读。
content.json的theme接受wechat键,和文档一致。- 长漫画超长时在分格之间分成多张(
comic-01.png…)。 - 不再隐式下载:edge-tts 只在已装好时启用,否则给出安装命令;yt-dlp 的远程 JS 组件改为显式开启(
ARTICLE2MEDIA_YTDLP_REMOTE_EJS=1)。 - 修复 edge-tts 音色名为空、Gemini 零额度不提前停止;
install.sh输出网络字体检查结果。 - 测试矩阵新增宽版长图、带主题的白板和原文长图。