Repository navigation
Releases
v2.4.0 — 支持 WebP,加 --strict 闸门
这版最重要的一件事:能认 WebP 了
AI 出图现在大量存成 WebP,而此前它拿不到 WebP 的宽高。后果不是「少查一项」——w/h 为 None 之后,尺寸、比例、多图一致性三组判定会集体静默跳过,你看到的是「格式不支持」,看不到真正的原因。
现在三种变体(VP8 / VP8L / VP8X)都能读,含 alpha 标志:
$ publish-size-check --check ai.webp --target 小红书
### ai.webp
1024×1024px
[X] 小红书 / 笔记封面(方版) —— 不能发布
结论: 救不了:像素不足,必须从源文件按更大尺寸重新导出(放大无效)
[X] 格式 .webp 不在接受列表 jpg/jpeg/png 内
修法: 另存为 jpg 格式后重新提交
[X] 宽度 1024px 小于要求 1080px
修法: 重新导出为 ≥1080px 宽(放大现有图片无法恢复清晰度)格式和尺寸一次说清,不用来回试。
新增 --strict:把尺寸检查变成发布闸门
- name: 检查配图尺寸
run: |
pip install .
publish-size-check --check assets/*.png --target 小红书 --strict有 error 级问题时退出码 1;warn / info 不阻断——它们分别是「可以发但有风险」和「了解一下」,拿来卡流水线会把正常发布一起拦住。
不加 --strict 时退出码恒为 0,与旧版完全一致,升级不会悄悄卡住你已有的流水线。
--json 的 stdout 现在是纯 JSON
之前人类可读的正文和 JSON 混在 stdout,| jq 会因为首行是 ### a.png 直接失败。现在报告走 stderr:
publish-size-check --check cover.png --target 小红书 --json \
| jq -r '.results[0].targets[0].verdict'修掉的一处假报错
.jpg 文件遇到 accepted_formats: ["jpeg"] 会被误报格式错误——等价只做了一个方向。你照着提示改成另一种写法,结果还是报错。现在 jpg/jpeg、tif/tiff 都做了归一化。
其它
--version可用(此前会掉进 argparse 用法错误并返回 2)。demo.py在管道下输出顺序错位已修(结论先出、标题后出)。- 回归测试 46 → 75 项,插件形态下无法验证的检查如实跳过,不伪装成通过。
升级
git pull && python demo.py # 源码使用
pip install --upgrade . # 命令行工具
/plugin update publish-check@publish-size-check # 插件形态完整变更见 CHANGELOG。
v2.2.0 — 可装成 CodeBuddy / WorkBuddy 插件
装法
/plugin marketplace add Stephen-pc/publish-size-check
/plugin install publish-check@publish-size-check
/reload-plugins
不装插件也能用:把仓库根目录整个复制到 ~/.workbuddy-ai/skills/publish-size-check/ 即可。
这个版本做了什么
把仓库从「一个技能」升级成「一个技能 + 一个插件市场」。同一份代码,两种装法。
新增
.codebuddy-plugin/marketplace.json—— 市场清单plugins/publish-check/—— 插件包(plugin.json+skills/publish-check/)- 装成插件后自动获得版本管理与团队分发:
/plugin update升级;写进.codebuddy/settings.json让协作者自动获得
变更
demo.py新增_find_skill_root():插件会被复制进版本化 cache,相对路径会变,所以改成按候选顺序探测。仓库形态与插件形态下均可直接运行- CI 新增
插件包一致性任务:双入口文件逐字节比对 + 清单字段校验 + 插件形态冒烟测试
为什么没有 hooks / MCP server / 斜杠命令
插件还能挂 commands/、agents/、hooks/、MCP server。这里故意都不挂:
- 不需要 hook —— 寄生自检靠
SKILL.md里的触发协议,装了插件就自动生效,没必要在你机器上跑钩子 - 不需要 MCP server —— 那要求常驻进程和 stdio 协议,与「零依赖、跑完就退出」的设计直接冲突
- 不需要斜杠命令 —— 技能本身就能被自然语言触发,多一个命令只是多一个要维护的入口
每多挂一个组件,用户装之前的信任成本就高一档。
质量
- 53 项回归测试通过
- CI 16 个任务全绿:3 系统 × 4 Python 版本 + 零依赖守卫 + Windows 编码 + 规格库时效 + 插件包一致性
- 远端与本地逐文件 blob SHA 比对完全一致
完整更新日志:https://github.com/Stephen-pc/publish-size-check/blob/main/CHANGELOG.md
v2.1.1 — Windows 中文输出修复
发布尺寸检查 2.1.1
对照目标平台的几何规格,检查图片能不能发、是哪一项参数过不了。零依赖、原件只读。
本次修复
Windows 上输出中文会直接崩溃。 Windows 的 Python 默认按控制台代码页(cp1252 / cp936)编码 stdout,而本工具输出全是中文,一运行就抛 UnicodeEncodeError 退出。Linux / macOS 默认 UTF-8,所以这个 bug 在开发机上完全看不到——是 CI 的 Windows 任务抓出来的。
修的时候还连踩两个坑,一并修掉:
- 只修了
spec.py和demo.py,漏了test_spec.py自己——它同样打印中文标题。 - 编码自测最初把
test_spec.py作为子进程目标,导致递归启动整套测试,直接把机器拖死。改用最小探针。 _force_utf8_stdout()改为幂等——多个入口会各自调用一次,重复 reconfigure 同一流会出问题。
加固
- 回归测试 49 → 53,覆盖 cp1252 / cp936 / ascii 三种窄编码
- 新增 CI 任务「Windows 控制台编码」,在真实 Windows 上守这条
安装
git clone https://github.com/Stephen-pc/publish-size-check.git
cd publish-size-check
python demo.py # 一键看效果
python scripts/spec.py --check cover.png --target 小红书需要 Python 3.8+,不需要任何第三方包。