在 Codex 里怎么用 aigc-topic-cover-factory
一条流水线跑完「产选题 → 采集背景 → 合成封面矩阵 → 拼审图大图」, 产出 N 条选题 × M 张背景的 960×600(16:10)B 站大字封面,供你 A/B 挑选。
作者机器上已跑通全链路(2026-09-10:真登录态实采 6 张素材 → 合成 3 张封面)。 第一次拿到这个包,先看第三节把依赖和登录态过一遍——那些前置条件不会自动出现在你机器上。
一、Codex 怎么找到它
%USERPROFILE%\.codex\skills\aigc-topic-cover-factory\SKILL.md
安装 = 把整个 aigc-topic-cover-factory 文件夹解压到 %USERPROFILE%\.codex\skills\ 下面,不用改任何配置——Codex 自动发现这个目录,config.toml 里不需要登记。装完新开一个 Codex 会话即可生效。
两个要知道的:
- 目录名 = skill 名 =
aigc-topic-cover-factory,两者一致,可以直接点名。(Codex 触发和点名认的是SKILL.mdfrontmatter 里的name,不是文件夹名——有些 skill 两者不一致,这个没这问题。) - 只在 Codex 里能用。 Claude Code 不读
~/.codex/skills/,在 Claude 会话里说破天也调不出来。
二、三种调用方式
① 自动触发(推荐,什么都不用做)
正常说话,命中 description 里的触发词就会自动加载。这些话都能触发:
给我出 20 个 AI 相关的爆款主题,然后做成封面
爬点小红书的图,批量做封面
按对标做一批大字封面
选题和封面一起搞,我要能挑的
② 显式点名(触发词没命中时)
用 aigc-topic-cover-factory 帮我做 15 个 AI 副业主题的封面
③ 兜底:直接让它读
读 %USERPROFILE%\.codex\skills\aigc-topic-cover-factory\SKILL.md,然后照着做
三、开工前确认一次
| 项 | 怎么查 | 缺了怎么办 |
|---|---|---|
pillow numpy httpx playwright | pip list 里查 | pip install pillow numpy httpx playwright |
| Chromium(Playwright 用) | 首次 fetch 会报缺 | python -m playwright install chromium |
| 中文粗黑体 | Win 一般自带 NotoSansSC-VF / msyhbd.ttc | 见「排错」 |
| 小红书登录态 | 看有没有 %USERPROFILE%\.xhs_profile | python scripts/xhs_fetch.py login 扫码 |
登录态会过期。过期的表现是 fetch 报「登录态已失效」并停下,不会静默抓垃圾回来。
四、完整跑一遍
0. 先建工作目录,并把 skill 路径存成变量
脚本用的都是相对路径,所以先 cd 到你要放东西的地方;再把 skill 路径存起来,后面几步就不用反复写长路径:
:: cmd.exe
mkdir E:\封面项目\260910_AI副业 && cd /d E:\封面项目\260910_AI副业
set SK=%USERPROFILE%\.codex\skills\aigc-topic-cover-factory
# PowerShell(%VAR% 在 PS 里不展开,得用这个写法)
mkdir E:\封面项目\260910_AI副业; cd E:\封面项目\260910_AI副业
$SK = "$env:USERPROFILE\.codex\skills\aigc-topic-cover-factory"
1. 让 Codex 产选题
直接说:
给我出 20 个 AI 副业方向的爆款主题,写成 topics.json
它会读 references/选题钩子公式.md,按 10 个句式公式产出(会强制覆盖 ≥6 个不同公式,
否则一批封面在信息流里长得一样,A/B 测不出东西)。
这一步产出的选题列表它会先给你过目。 采集和合成都不贵,但选题错了后面全白做——所以卡在这里是故意的。
topics.json 长这样(完整字段见 scripts/topics.example.json):
{"topics":[{
"id": "01",
"lines": [{"text":"我劝所有程序员","role":"sub"},
{"text":"尽早布局AI大模型","role":"hero"}],
"style": "yellow",
"keywords": ["程序员工位桌面","互联网大厂工位"]
}]}
2. 采集背景素材
python %SK%\scripts\xhs_fetch.py fetch --topics topics.json --out 01_素材 -n 12
实测输出:
[01_素材/01]
搜索:程序员工位桌面
+ bfa17abd4e03.jpg 640x853
+ 7910210f4945.jpg 640x480
小计 6 张
搜不到合适的图时别在脚本上死磕,两条兜底:手动存图进 01_素材/<id>/,
或把直链攒成 urls.txt 走 xhs_fetch.py from-urls urls.txt --out 01_素材/01。
3. 合成封面矩阵
python %SK%\scripts\make_covers.py --topics topics.json --material 01_素材 --out 02_封面 --variants 5
产出 02_封面/<id>/<id>.<n>.jpg,即每条选题 × 5 张背景。
调文案时不用等整批,单图试排:
python %SK%\scripts\make_covers.py --topics topics.json --only 01 --bg 某张图.jpg --out 试排
4. 拼审图大图,你来挑
python %SK%\scripts\contact_sheet.py --covers 02_封面 --out 03_审图 --cols 5 --rows 4
产出带编号的大图。打开看,报编号就行——20 条 × 5 张 = 100 张,一张张点开不现实。
五、哪些事必须你做
Codex 做不了这三件,别等它:
- 扫码登录(
xhs_fetch.py login会弹浏览器,只能本人扫) - 选题过目(第 1 步之后)
- 挑最终封面(第 4 步,报编号)
六、跑完长这样
260910_AI副业/
├── topics.json 20 条选题
├── 01_素材/01/…20/ 每条选题一个目录,各 ~12 张真实场景照
├── 02_封面/01/…20/ 每条 5 张变体,共 100 张 960×600
└── 03_审图/审图_01.jpg… 每张 20 格,报编号用
七、参数速查
role(决定颜色,不决定字号)
hero = 霓虹色,放结论 / 冲突 / 身份 | sub = 白色,放铺垫 / 限定 / 语气。搞反就没钩子。
style(配色,别自创第八种,否则一批封面不像一套)
| 值 | 色 | 适合 |
|---|---|---|
yellow | #FAFF00 | 万金油,占对标一半以上 |
green | #00FF19 | 出路 / 机会 |
cyan | #1AFFEB | 科技 / 工具 |
magenta | #FF00C0 | 对立 / 扎心 |
red | #FE0A09 | 警告 / 否定 |
blue | #30A0F5 | 理性劝告 |
deco:plain 只描边(对标绝大多数)| block 橙色底块衬 hero 行 | scrim 羽化暗带 | auto 背景过亮过花时自动上(默认)
pos:默认自动避开背景繁忙区;要指定用 top / center / bottom,或 "y": 0.35 指死
八、排错
| 症状 | 真正的原因 | 怎么办 |
|---|---|---|
| 字号偏小、缩略图糊 | 单行超过 10 个汉字宽 | 改文案。这是几何约束(字号 ≈ 目标宽 ÷ em 数),排版救不回来 |
| 字溢出画布 / 大小不一 | 某行太长,或 role 全给了 hero | 拆行,或把铺垫行改 sub |
| 字压在杂物上 | 自动选位没找到干净带 | 加 "pos": "top",或 "deco": "scrim" |
| 一批封面长得都一样 | 选题挤在同一个公式里 | 回第 1 步,按公式覆盖度重出 |
fetch 报登录态失效 | profile 过期 | 重跑 login |
| 取到 0 张 | 登录态刚失效,或关键词太抽象 | 先重登;仍 0 就换词——搜「人工智能」只出概念插画,得搜「程序员工位」这种 |
| 报找不到粗黑体 | 字体缺失 | 改 make_covers.py 的 FONT_CANDIDATES 加路径 |
九、已知边界(先知道,别踩)
- 不做人物抠像。 对标正片那层抠像人物不覆盖,只做「场景照 + 大字」。要人物层用
aigc-poster-layout(保人优先),别交给这套参数化脚本。 - 不做精修封面。 这套版式的全部竞争力在缩略图辨识度,放大看就是廉价的。单张要质感请改用
aigc-video-cover-gpt。 - 输出恒为 16:10。 小红书只是素材来源,不是输出比例。
- 素材就是 640×853,提不了。 尺寸由直链末尾 CDN 预设决定,
imageView2参数被忽略,换预设后缀直接 403(签名绑死)。够用——文字在 1920px 画布上矢量绘制再降采样,锐度不受影响。 - 素材权属由项目方 / 甲方负责。 脚本只负责取,不处理授权。
十、想改版式先读这个
references/对标版式解析.md —— 65 张对标图的逐像素量化结果,所有参数都是量出来的不是调出来的。
动手改之前至少看这三条,它们都跟直觉相反:
- 层级靠颜色和行长,不靠字号——对标三行文案墨迹高都是 75px,同一个字号。做成”主标题更大”立刻变 PPT 标题页。
- 多行共用字号时基准取 min 不取 max——取 max 会把短行算出的巨大字号套到长行上,直接冲出画布。
- 描边(≈0.075×字号)是命根子,不是装饰。砍它等于砍掉整套版式。
验证改动别用肉眼比:拿对标图当背景,复刻同一份文案,字压在原字上就说明参数对了。