计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
cy-carousel【效率与协作】制作 AI 科技类小红书图文轮播(封面+10张内页,1440×1920,暗底或浅色纸底,电子青强调色):讲一个 AI 概念、一篇论文或一个产品,体裁是「AI 学习笔记」。查证一手出处、找开放授权素材(论文原文、真实截图、人物照),用 scripts/手排.py 照 ELIZA 的做法逐页手排(毛笔双色标题、原文纸条放大加红圈、电子青大数字、问句贴条),再用 render.py 渲染、check_all.py 检查、package.py 打包。用户要做 AI/科技/论文/产品类图文,或复用、精修这类轮播时使用。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
讲清一个 AI 概念、一篇论文或一个产品。读者不是专业人士,要让他一张张翻下去:反差钩子 → 一个看得懂的大例子 → 一句话定义 → 三条编号思考。样板(用户认定最好的两篇,先看它们的节奏和密度):examples/01-ELIZA(暗底)、examples/02-Dots(浅色纸底)。另有 examples/03-聪明汉斯(老照片+原书书页+论文,含完整手排脚本)、examples/04-AI幻觉(一场官司讲清一个概念:案卷原文纸条、聊天截图、大字定义)。
research/事实表.md(陈述、原句、页码/URL、状态、用在哪页)。数字的主语要对(哪个模型、在什么考卷上);单篇论文的案例不能写成「AI 都这样」;流传但没证据的说法不写。来源.md,CC BY 素材在置顶评论里署名。可以有黑底白字的人名/物件小标签;后来年份的照片要在标签里写清,别让人当成事件现场。build.py 的自动版式库排页面,那套出来的页面「不如之前做的」。build.py 只作为渲染和断行的底层库。#080808(check_all 只认 ≤8 为纯黑),或浅色纸底(例 02 Dots);一篇只用一种,不混。浅底上字直接压底,不加白框。拼贴层透明底;整页压暗的照片用 backdrop(),darken 0.30–0.70,不要烤进拼贴。#F3F1E9,第二行电子青 #00E5FF,立体投影;英文和数字自动换黑体(render.py 的 latin_font,headline() 已设好)。离页面上边 ≥40px。strip() 按目标宽度矢量渲染;扫描书页用 scan_strip(),词框由 macOS Vision 找(scripts/ocrfind.swift,首次自动编译)。只截含关键词的 1–2 行,满宽贴边、不倾斜。关键词画红圈;行距密时改用下划线(unders)或页边红竖线(bars);切进来的半个词、半行、无关前后句涂白(whiteout)。photo() 不倾斜,put(..., bleed='right'|'left'|'full') 贴页边出血,一页一个主角。big(),电子青黑体 120–220px;定义页可以排成大字公式(例 01 第 7 页、例 03 第 7 页)。sticker(),青底深字,每页最多一个,≤20 字。body() 52–66px,每页最多两段、每段 ≤60 字。字体按题材选:body(font=...) 候选 宋体粗(默认)/宋体/仿宋/楷体/文楷/苹方细;先用 S.font_sample(同一句, 'out.png') 出同字对比小样再定,一篇内只用一款(标题照旧是毛笔)。body(..., typo=True):「——」画成两段带间隙细线(每段 0.74em、推进 0.86em)、省略号画三个等距圆点、【】约 0.44em、「·」约 0.3em、正文里的数字和拉丁字母换 Times(非 macOS 找不到时回退随包 Noto Serif SC 并警告)并放大 1.07(latin_scale 1.05–1.10)。justify=True 两端对齐(增量肉眼几乎看不出:字缝最多加 0.05em、空格最多 0.5em,超了整行左对齐;先用标点挤压吸收余量)。hscale 横向压缩文字层(参照账号正文约 0.95,默认 1.0);headline/big 也有 hscale。数值和原理见 references/排字细节.md。Canvas(split_shadow=True) + page(..., layer_order='text-under-images'),顺序变成「底色 → 投影 → 文字 → 图片」。S.emoji('1️⃣', 64) 出透明 PNG 再 put,不要塞进正文让字体去画。制作.py,import 手排 as S,S.init(笔记目录);逐页用 Canvas().put() 摆图和纸条,用 headline/big/body/sticker/label 写字,page(..., backdrop=...) 组页,最后 S.write_script(题目, '制作.py') 生成 页面脚本.json。完整写法见 examples/03-聪明汉斯/制作.py。python3 scripts/render.py 页面脚本.json --out pages --assets-root .;S.preview('pages', '全套预览.jpg') 出缩略图,逐页看:文字出界、压字、红圈标错、纸条带半截字、大块空白。python3 scripts/对照.py 参照.jpg pages/p03.png 出左右并排图(同高)和文字行偏差表(四边、字高,1440 宽 px 与 %,超 1% 标红),按表调字号和位置再渲染。python3 scripts/check_all.py 页面脚本.json --pages pages --assets-root .,errors 必须为零。可选严格视觉:加 --strict-visual(或页面脚本 config.visual_gate: true)后,留白超标和「与前页骨架相同」会列入 visual_blockers 并使退出码非零;色彩丰富度、原图数量等依赖体裁的建议项不参与。仅适用于正式稿的暗色调;三页小样和浅色调不跑这两项,会在 checks.strict_visual 写明不适用并在终端提示,visual_blockers 为空不代表通过。留白/骨架检查自身出错时也计入阻断。默认关闭。风格指标只作参考,别为凑指标改版式。来源.md。打包(package.py)要求笔记目录里有分别命名的非空 UTF-8 文件 标题.txt、正文.txt、置顶评论.txt、来源.md,合并成一份「帖子文案.txt」不行。素材清单.json(可选)顶层必须是对象:{"assets":[{"path":"assets/a.png","sha256":"…"}]},写成数组会报错。check_all / package 的「技术通过」不等于视觉验收,输出里的 visual_acceptance 字段始终是「未验收」,advisory 建议项要人工逐页看原尺寸图后处理。python3 scripts/package.py --note . --pages pages --out 交付 --assets-root .。严格视觉模式下加 --strict-visual,有阻断项会拒绝交付;逐页目检确认没问题后用 --accept-visual "理由" 放行,理由和被放行的阻断项写入 交付清单.json 的 visual_accepted。headline() 就不会。df -h;被清出时先 brctl download <路径>,或把工程复制到本地临时目录跑,跑完再同步回来。tight=False),只有宋体粗按墨迹收紧;破折号、省略号别用字库字形,开 typo=True。hscale 只压文字,不压图片;位图仍然只能等比缩放。