blender-kiln
Claude Code plugin that turns a text brief or a photo into a production-ready 3D asset through Blender: rebuilt by script, textured from CC0 scans, graded against the real object, optimized to GLB/FBX
Turn a WeChat group's day into a verifiable illustrated report (PNG/HTML/Markdown) — evidence-bound editorial, read-only, offline-runnable examples
Translation pending
SkillsPythonGitHub @kbwzySelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Installable projects can be verified without a deployment domain. Use GitHub sign-in for a personal repository, or the repository verification file above for an organization repository.
Ask about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗群聊 JSON ──prepare──▶ 素材 + 证据 ID
│
Agent 语义编辑
▼
editorial.json
│
validate --strict ──▶ render
│
PNG 长图 / HTML / Markdown
三件事分开做,各管一段:程序管事实(切片、清洗、统计、抽链接、校验引用),模型管表达(标题、关键原话、判断),模板管版式(模型只写 JSON,碰不到 HTML)。
机器摘要只会按时间罗列。日报要回答的是另外几个问题:
常见做法是把聊天丢给模型直接总结,结果每次格式不同、引用对不上、改口被截断。这里用证据绑定把模型约束住:每条事实都要挂一条真实消息的 ID,跨群或凭空捏造的 ID 会被校验器拒绝。同一份输入,渲染结果确定。
程序校验能保证结构、引用和密度;它不能保证观点真实。每份产物都显式标注 semantic_truth: not-verified,不冒充已验证。
[since, until),时区显式,定时任务用本地自然日而不是机器日期。layout_check.py 复查一遍。partial,不会写成功。examples/ 里有一份合成群聊,token 全是占位,不会碰你的微信:
SKILL="$PWD"
RUN=/tmp/wechat-daily-demo && rm -rf "$RUN"
python3 "$SKILL/scripts/daily_report.py" prepare "$SKILL/examples/group-messages.json" \
--chat "示例·独立开发者交流群" \
--since 2026-10-20T00:00:00+08:00 --until 2026-10-21T00:00:00+08:00 \
--timezone Asia/Shanghai --name-mode display --owner-alias "示例读者" --out "$RUN"
cp "$SKILL/examples/editorial.json" "$RUN/editorial.json"
python3 "$SKILL/scripts/daily_report.py" validate --strict --out "$RUN"
python3 "$SKILL/scripts/daily_report.py" render --out "$RUN" --png
跑出来的结果和本文最上方那张示例日报一致——同一份合成数据、同一条命令。
这是一个 Agent Skill,同时兼容 Claude Code 和 Codex。
把技能装在 ~/.agents/skills,再用符号链接派发给各个 Agent。 真实文件只有一份,Claude Code、Codex 或其他 Agent 都通过链接指向它——升级时只需要更新一处。
# 1. 克隆到 skills 根目录之外(或任意你放仓库的地方)
git clone https://github.com/kbwzy/wechat-group-daily-report.git
# 2. 真实安装位置
mkdir -p ~/.agents/skills
ln -s "$PWD/wechat-group-daily-report" ~/.agents/skills/wechat-group-daily-report
# 3. 按需派发给各个 Agent(用哪个接哪个)
mkdir -p ~/.claude/skills
ln -s ~/.agents/skills/wechat-group-daily-report ~/.claude/skills/wechat-group-daily-report
mkdir -p ~/.codex/skills
ln -s ~/.agents/skills/wechat-group-daily-report ~/.codex/skills/wechat-group-daily-report
如果你只用一个 Agent,也可以跳过第 3 步——多数 Agent 同样会直接扫描 ~/.agents/skills。
本技能需要 wechat-cli 和 wechat-intelligence-hub。它们不必和本技能放在同一个根目录:脚本会逐个依赖地在下面这些根目录里查找,找到即用,所以把它们装在 ~/.agents/skills、而本技能装在别处也没有问题。
$AGENTS_HOME/skills → $CLAUDE_HOME/skills → $CODEX_HOME/skills
~/.agents/skills → ~/.claude/skills → ~/.codex/skills
没有环境变量时按后一行。也可以用 hub_entry(hub.sh 路径)、reader(reader.sh 路径)、hub_home(Hub 项目目录)三项配置直接指定,绕过自动查找。
| 依赖 | 版本 | 用途 | 必需 |
|---|---|---|---|
| Python | 3.9+(3.13、3.14 实测可用) | 全部脚本;用到 zoneinfo | 是 |
| wechat-intelligence-hub | v0.9.2-preview.2 或更新 | 从本地微信库取数(chat-history、members、sql) | 实时取数时必需 |
| Playwright + Pillow + 本机 Chrome | pillow>=10.0、playwright>=1.40 | PNG 长图(430 CSS 像素、3 倍分段截图拼接) | 只影响 PNG |
| Claude Code CLI | 支持 --restricted 的版本 | run_daily.py 的无人值守编辑桥接 | 只影响定时模式 |
只依赖标准库的部分不需要额外安装:prepare、validate、render 的 Markdown/HTML 输出,以及全部 58 项测试。Pillow 与 Playwright 只在 render --png 时导入,缺了不影响其他步骤。
wechat-cli 与 wechat-intelligence-hub 不在 PyPI,pip install 装不到。它们是同一位作者(Rion Wu)维护的独立项目,需要单独安装:
git clone https://github.com/Rion-Wu-tech/wechat-intelligence-hub.git
cd wechat-intelligence-hub
./scripts/install.sh --with-sqlcipher --with-html
安装后会得到 wechat-cli 与 wechat-intelligence-hub 两个 Skill。查找顺序见上方同级依赖怎么找,也可以用配置项 hub_entry / reader 手动指定。
注意:装好 ≠ 能读。完整数据库模式还需要你已经获得本机微信数据库的访问材料(key)。没有时
doctor会失败,本 Skill 会如实报错并保留素材,不会退化成通知预览。接入请参考上游的 五步首次接入工作流。
python3 -m venv .venv && . .venv/bin/activate
python3 -m unittest discover -s tests # 58 项,无需任何第三方包
pip install -r requirements.txt # 仅想做 PNG 时才需要
| Python | 测试套件 | PNG | 说明 |
|---|---|---|---|
| 3.9 | ✅ 58/58 | 用 pillow>=10.0 | |
| 3.10 | ✅ 58/58 | 用 pillow>=10.0 | |
| 3.11 / 3.12 | ✅ CI 覆盖 | 用 pillow>=10.0 | 每次提交自动跑 |
| 3.13 | ✅ 58/58 | ✅ | |
| 3.14 | ✅ 58/58 | ✅ | Pillow 13 / Playwright 1.64 验证通过 |
3.9–3.13 由 CI 在每次提交时自动验证。
PNG 依赖不装也能用:render 会照常产出 Markdown 和 HTML,只在 status.json 里写 png: missing-dependency 并以退出码 2 返回。它不会静默跳过,也不会假装成功。
在 Agent 里直接说「把这个群昨天的聊天做成图文日报」。Skill 会:
wechat-cli 的 resolve-chat 确认唯一精确群名,不接受模糊匹配或同名多选。chat-history 拉窄范围消息,同时读群成员表拿群昵称。prepare 出素材,你(或 Agent)通读 material.md 写 editorial.json。validate --strict → render --png,交三个文件加覆盖说明。复制 assets/config.example.json 到技能目录之外(默认 ~/.wechat-intelligence-hub/group-daily.json)再填群名:
python3 "$SKILL/scripts/run_daily.py" --config ~/.wechat-intelligence-hub/group-daily.json
run_daily.py 会把「取数 → prepare → 调 Claude Code 写稿 → validate → render」串起来。编辑子进程只拿到 Read,Write 两个工具,跑在 restricted 模式,不给 Shell、浏览器和 MCP,也不会传 --dangerously-skip-permissions。详见 references/scheduling.md。
安全试跑——不碰微信、不调模型:
python3 "$SKILL/scripts/run_daily.py" --config "$CONFIG" \
--input examples/group-messages.json --date 2026-10-20 --prepare-only
| 字段 | 默认 | 说明 |
|---|---|---|
chat | — | 必填,精确群名;同名多群会直接失败 |
timezone | Asia/Shanghai | 窗口与显示都用它 |
window | yesterday | yesterday / today / rolling24 |
output_root | ~/Desktop/wechat_daily | 每轮在其下新建唯一目录 |
read_limit | 20000 | 达到上限会标注「不能视为全量」 |
png | true | 关掉就只出 Markdown/HTML |
name_mode | group-nick | 改成 display 用联系人备注/昵称 |
local_only | false | true 时拒绝启动云端编辑 |
signature | 空 | 页脚署名/联系方式,只从私有配置或 WECHAT_DAILY_SIGNATURE 读 |
不存任何凭据。
| 文件 | 说明 |
|---|---|
group_daily_report.png | 长图,430 CSS 像素 × 3 倍 |
group_daily_report.html | 单文件,无外部资源,CSP 限制为 default-src 'none',浅深色主题 |
group_daily_report.md | 同版式的 Markdown,带本机证据注释 |
quality_checks.json | 本轮版式合同结果 |
status.json / delivery.json | 机器可读状态;png_status 如实反映 PNG 是否真的生成 |
material.json / material.md | 素材与证据,只在本机 |
semantic_truth: not-verified。这不是腾讯或微信的官方项目。 未获得腾讯认可、赞助或维护,也与微信团队无关。WeChat、微信等名称是各自所有者的商标,此处仅作描述性说明。
使用前请确认你在做的是处理你自己有权访问的数据:
wechat-intelligence-hub 的只读接口。取得该访问权是你与上游项目之间的事,不在本仓库范围内。你需要自行确保使用方式符合所在地法律、所在群组的约定,以及微信的服务条款。作者不对因使用本工具产生的任何后果承担责任。本软件按 MIT 许可「按原样」提供,不作任何担保。
SKILL.md 入口:执行流程与边界
references/
workflow.md 取数、编辑、验收的完整流程
editorial.md 编辑准则与正反例
contracts.md 输入/输出合同、format_version=2 字段
scheduling.md 定时桥接、私有配置、失败恢复
scripts/
daily_report.py prepare / names / validate / render
run_daily.py 定时桥接(取数 → 编辑 → 校验 → 渲染)
group_nicknames.py 群昵称 protobuf 解析与映射
report_view.py 固定 HTML 版式
layout_check.py 渲染后的版式合同复查
examples/ 可离线跑通的合成示例
tests/ 58 项单元测试
evals/ 路由触发用例与语义配置
改版式或改校验规则前请先读 tests/——版式合同、证据引用、命名口径都有对应测试。
本 Skill 只负责单群日报,取数依赖 wechat-intelligence-hub 与 wechat-cli。跨群综合日报、私聊跟进、商机状态维护不在本仓库范围内。