运行时依赖
安装命令
点击复制技能文档
Nexus Ciba Wechat 概述 使用此技能从 词霸每日一句 API(https://open.iciba.com/dsapi/)创建精美的 HTML 和 PNG 卡片。 捆绑的渲染器支持多个 HTML 模板,包括垂直朋友圈卡和水平明信片风格卡,带有编码 API tts 音频 URL 的二维码。
默认工作流 使用 scripts/render_iciba_card.py 脚本,除非用户明确要求手写 HTML。 默认从 https://open.iciba.com/dsapi/ 获取每日 JSON 数据。 优先使用 API 图像字段作为英雄图像,按以下顺序:picture、picture2、picture3、picture4。 仅在 API 无法访问或所有图片下载失败时生成本地回退图像。 将 tts 编码到二维码中。 除非用户明确要求,否则不编码页面 URL。 选择用户请求的模板,否则使用 moments_vertical 作为默认模板。 使用 Playwright 将选定的 HTML 模板渲染为 PNG。 返回生成的 PNG 和 HTML 链接,以及卡片是否使用 API 图片或生成的回退图像。
脚本用法 从技能目录运行或直接传递脚本路径:python scripts/render_iciba_card.py --output-dir /mnt/data/iciba-card 列出可用模板:python scripts/render_iciba_card.py --list-templates 渲染默认垂直朋友圈卡:python scripts/render_iciba_card.py --template moments_vertical --output-dir /mnt/data/iciba-card 渲染水平明信片卡:python scripts/render_iciba_card.py --template postcard_horizontal --output-dir /mnt/data/iciba-postcard 有用的选项:python scripts/render_iciba_card.py --template postcard_horizontal --output-dir /mnt/data/iciba-postcard --width 1200 --height 760 --api-url https://open.iciba.com/dsapi/ 对于不需要网络访问的测试或可复现性,请传递 JSON 文件:python scripts/render_iciba_card.py --input-json /mnt/data/iciba.json --output-dir /mnt/data/iciba-card
输出目录中的预期输出: .html .png _data.json hero_source.txt 默认输出前缀: moments_vertical -> iciba_moments_card postcard_horizontal -> iciba_postcard_horizontal
模板系统 HTML 与 Python 分离,存储在 templates/ 目录中: templates/moments_vertical.html:9:16 朋友圈卡,图像在上,文本在下。 templates/postcard_horizontal.html:水平明信片风格卡,照片在左,消息/邮票区域在右。 模板使用简单的替换令牌,而不是模板依赖项。 支持的令牌包括: [[WIDTH]]、[[HEIGHT]]、[[TEMPLATE_NAME]] [[CAPTION]]、[[CONTENT]]、[[NOTE]]、[[TRANSLATION]]、[[DATELINE]] [[ISSUE_DAY]]、[[ISSUE_TEXT]]、[[QUOTE_SIZE]] [[HERO_URI]]、[[HERO_ALT]]、[[HERO_SOURCE]]、[[HERO_FIELD]]、[[HERO_URL]] [[QR_URI]]、[[TTS_URL]]、[[STATUS]] 添加新模板,创建新的 HTML 文件在 templates/ 目录中,添加条目到 TEMPLATE_CONFIG 在 scripts/render_iciba_card.py 中,然后使用 --template 测试。
布局规则 对于 moments_vertical: 使用 9:16 画布,默认 540 x 960 CSS 像素。 保持图像在顶部部分,而不是作为全卡背景。 保持文本在单独的下方纸张部分。 将二维码放在文本部分的右下角。 对于 postcard_horizontal: 使用水平画布,默认 1200 x 760 CSS 像素。 保持英雄图像在左侧,明信片消息区域在右侧。 包括明信片提示,例如 POST CARD、地址行、邮票区域和二维码语音邮票。 保持引语和翻译可读;减少长句子的引语大小。 对于所有模板: 通过剪切边缘、纸质纹理、细微阴影、胶带装饰和温暖奶油色来保持杂志或纸质美感。 保持文本在装饰上可读。 将二维码有效载荷放在 tts 上,而不是 HTML 页面 URL,除非明确请求。
数据映射 使用以下 API 字段: caption -> 标签,默认 词霸每日一句 content -> 主要英语引语 note -> 中文翻译 translation -> 小型来源行,默认 新版每日一句 dateline -> 显示日期和问题徽章 tts -> 二维码有效载荷 picture、picture2、picture3、picture4 -> 图像候选项,按此优先顺序 请参阅 references/iciba-api-fields.md 以获取更多详细信息。
路径分隔符行为 Python 渲染器保持 pathlib.Path 用于实际文件系统操作,但格式化日志和序列化输出路径使用本机 OS 分隔符。 Windows 使用 \;Linux、macOS 和其他 POSIX 类系统使用 /。 生成的数据 JSON 包括 _path_separator 和 _output_dir 用于调试。
处理失败 如果 API 获取失败,使用内置回退数据,并明确说明运行使用了回退数据。 如果 API 返回文本但图像下载失败,仍使用 API 文本和 tts,但使用生成的回退图像。 除非 hero_source.txt 表示 api_picture 且包含所选图片字段和 URL,否则不声称可见图像来自 API 图片。