diff --git a/SKILL.md b/SKILL.md index ee184f6..5ef7e07 100644 --- a/SKILL.md +++ b/SKILL.md @@ -21,7 +21,7 @@ description: 生成或优化符合 maomomo / 猫MOMO 风格的中文出海金融 - 给出投资、法律、税务或合规结论。 - 承诺一定获批、一定到账、稳赚、无风险、绝对安全。 -- 伪造真实 App 截图、账单、官方 Logo 使用场景或用户没有提供的实测证据。 +- 伪造真实 App 截图、账单、错误或未经核对的官方 Logo 使用场景,或用户没有提供的实测证据。 ## 硬性约束 @@ -35,9 +35,9 @@ description: 生成或优化符合 maomomo / 猫MOMO 风格的中文出海金融 - 写作前必须先给用户确认标题或标题方向、文章核心口径、`outline.md` 大纲、来源缺口、必选素材映射和配图风格。用户明确要求跳过确认时,未确认事实仍必须标 `【待确认:...】`。 - 大纲未确认前,不得创建最终 `deck_spec.json`、`speech.md`、图片 prompt jobs、文章配图图片、ZIP 或用户指定的最终文章包。 - 出图前必须先把全部图片 prompt 写入文件,包含文件名、用途、放置位置、核心文案、完整 prompt 和依赖素材;不要在聊天里输出超长 prompt。 -- 图片 prompt 中的视觉风格只能作为后台画面描述,不得成为画面文字;prompt 必须限制可见文字只包含指定业务文案和 `MAOMOMO`,不得出现风格标签、prompt 描述、额外 slogan 或无关文字。 +- 图片 prompt 中的视觉风格只能作为后台画面描述,不得成为画面文字;prompt 必须限制可见文字只包含指定业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识,不得出现风格标签、prompt 描述、额外 slogan 或无关文字。 - 发布稿、图片文案、prompt、manifest 和 `deck_spec.json` 中金额统一写 `HKD`,不要使用港币符号;来源原文抽取文件可保留原文写法。 -- 金融活动配图如出现信用卡、支付卡、卡组织或支付网络,必须按官方材料或用户素材核对并记录来源;用户提供卡面参考图时保存到 `sources/`,不得把银联 / UnionPay 画成 Mastercard、Visa 等其他卡组织。 +- 金融活动配图如出现信用卡、支付卡、卡组织、支付网络或机构 Logo,必须按官方材料或用户素材核对并记录来源;用户没有提供 Logo / 卡面素材但画面需要品牌或支付标识时,应主动尽力从官方活动页、品牌资源页、条款 PDF、App / 官网截图等来源查找准确标识,保存到 `sources/` 并记录来源。不得把银联 / UnionPay 画成 Mastercard、Visa 等其他卡组织。已核对正确的 Mastercard / Visa / UnionPay / 银行 / 支付宝等标识可以辅助出现,但不能抢占或替代 `MAOMOMO` 主标识位置。 - 先只生成一张代表性风格确认图,优先封面图,保存为正式命名,例如 `origin_image/hsbc-mastercard-alipay-campaign-01-cover.png`。用户批准样张前不得批量生成剩余图片。 - 样张批准后,后续每张图片必须继承同一个生图后端、同一套视觉系统和同一种质量配置;不得为了加快速度擅自改成 `low`。 - 每张最终图片必须来自确认后的图片生成后端:当前 agent 的内置图片生成工具,或用户确认后的 `scripts/maomomo_image_gen.py` API/CLI fallback。不得用 Playwright、HTML/CSS、SVG、Pillow、canvas、本地拼贴或手工文字覆盖冒充最终生成图。 @@ -130,7 +130,7 @@ description: 生成或优化符合 maomomo / 猫MOMO 风格的中文出海金融 ``` - `origin_image/` 保存图片后端生成并通过 QA 的原始最终图;`assets/` 保存 Markdown 实际引用的发布图片。两者可以是同名复制件,但不得只保留临时图。 - - `sources/` 保存用户提供的卡面、支付网络、官方截图或其他参考素材,供 prompt、manifest 和 `deck_spec.json` 映射引用。 + - `sources/` 保存用户提供或主动查找的卡面、Logo、支付网络、官方截图或其他参考素材,供 prompt、manifest 和 `deck_spec.json` 映射引用。 - `deck_spec.json` 记录文章级上下文、确认后的风格、生图后端、样张生成方法 `sample_generation_method`、参考素材映射和图片任务列表。 - `prompts/{article_slug}_XX.json` 记录每张图的文件名、用途、放置位置、核心文案、完整 prompt、依赖素材和输出路径。 - `slide_jobs.json` 和 `slide_run_state.json` 记录每个图片 job 的 pending / dispatched / recorded / blocked 状态;使用 `scripts/maomomo_job_state.py` 初始化和记录状态。 @@ -138,7 +138,7 @@ description: 生成或优化符合 maomomo / 猫MOMO 风格的中文出海金融 8. 出图前整理全部 prompt。 - 每张图的文件名、用途、放置位置、核心文案、完整 prompt、alt text、风格、依赖素材和输出路径先写入 `prompts/` 或 manifest 文件。 - prompt 中不要写“暖橙金融教程风”“数据仪表盘风”“手绘便签风”等容易被模型照抄的中文风格标签;改写为白底、暖橙强调、信息卡片、猫咪向导、清晰标题等视觉描述。 - - 每张图的 prompt 必须明确:只允许出现指定业务文案和 `MAOMOMO`;不得添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。 + - 每张图的 prompt 必须明确:只允许出现指定业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识;不得添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。 - 封面只放最高优先级结论和少量核心数字;复杂计算、全年理论上限、长公式和详细规则放到计算图或正文。 - 不要在聊天里输出超长 prompt;告诉用户可直接编辑 prompt 文件。 - 如果用户修改 prompt,先同步文件,再生成图片。 diff --git a/references/delivery-rules.md b/references/delivery-rules.md index 4cf1f52..ef55fa3 100644 --- a/references/delivery-rules.md +++ b/references/delivery-rules.md @@ -69,10 +69,11 @@ article_package.zip - 样张确认后,每张图按一个 job / 一次请求 / 一次 QA 推进;运行环境支持子 agent 时,可以一图一个子 agent 并发。 - 不要只生成一张大长图替代所有配图。 - 每张图必须有独立主题,例如封面图、活动总览图、时间线图、重点规则图、交易法图、避坑图、FAQ 图。 -- 不得使用未经用户提供的真实银行 Logo、券商 Logo 或支付品牌 Logo。 -- 出现信用卡、支付卡、卡组织或支付网络时,必须按官方材料或用户素材核对,并在 prompt、manifest 或 `deck_spec.json` 记录参考素材和卡组织;不得把银联 / UnionPay 画成 Mastercard、Visa 等其他卡组织。 +- 银行、券商、支付品牌、卡组织或支付网络 Logo 只要已由官方材料、用户素材或用户明确口径核对正确,就可以作为辅助识别出现;用户未提供素材时,应主动尽力从官方活动页、条款 PDF、品牌资源页、官网 / App 截图等来源查找准确 Logo。无法核对时使用通用符号。 +- 出现信用卡、支付卡、卡组织、支付网络或机构 Logo 时,必须按官方材料或用户素材核对,并在 prompt、manifest 或 `deck_spec.json` 记录参考素材、卡组织、`allowed_brand_marks` 和 `brand_mark_sources`;不得把银联 / UnionPay 画成 Mastercard、Visa 等其他卡组织。 +- 第三方 Logo 必须尺寸克制、位置辅助,不能抢占、替代或压过 `MAOMOMO` 主标识。 - 不得伪造真实 App 截图。 -- prompt 中的视觉风格只能写成后台画面描述,不要写容易被模型照抄的中文风格标签;可见文字只允许出现指定业务文案和 `MAOMOMO`。 +- prompt 中的视觉风格只能写成后台画面描述,不要写容易被模型照抄的中文风格标签;可见文字只允许出现指定业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识。 - 生成图应明确是 MAOMOMO 示意图 / 信息图,不伪装成真实截图或官方页面。 - 生成后的原始最终图先保存到 `origin_image/`,通过 QA 后同步到 `assets/`,并插入 Markdown。 - 港币金额在发布稿、图片文案、prompt、manifest 和 `deck_spec.json` 中统一写 `HKD`,来源原文抽取文件除外。 @@ -139,8 +140,10 @@ article_package.zip - 已运行 `uv run python scripts/maomomo_check_markdown_assets.py article/article.md` 或等效脚本,确认所有 Markdown 图片路径都能对应到真实图片文件。 - 图片是多张独立 PNG,不是一张大图代替全部。 - 图片文件名包含文章主题前缀,未沿用旧文章文件名。 -- 图片可见文字没有出现风格标签、prompt 描述、额外 slogan 或无关文案。 -- 图片日期、金额、公式、卡组织 / 支付网络和禁用分支都已核对。 +- 图片可见文字没有出现风格标签、prompt 描述、额外 slogan 或无关文案;除业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识外,没有多余文字。 +- 图片日期、金额、公式、卡组织 / 支付网络 / 机构 Logo 和禁用分支都已核对。 +- 用户未提供 Logo / 卡面素材时,已尽力查找准确标识,并在 `sources/`、prompt、manifest 或 `deck_spec.json` 记录素材来源和核对结论;无法核对时没有凭记忆画真实 Logo。 +- 第三方 Logo 没有抢占、替代或压过 `MAOMOMO` 主标识。 - 发布稿、图片文案、prompt、manifest、`deck_spec.json` 和 `speech.md` 中港币金额统一使用 `HKD`。 - 文末来源区只包含实际使用的来源。 - 正文没有 `contentReference`、`oaicite`、调试标记或工具残留。 diff --git a/references/image-generation.md b/references/image-generation.md index 3ef605c..c93f184 100644 --- a/references/image-generation.md +++ b/references/image-generation.md @@ -30,6 +30,8 @@ - `~/.codex/config.toml` 中的 `base_url` - `~/.codex/auth.json` 中可识别的 API key +`scripts/maomomo_image_gen.py` 必须兼容 Python 3.10 及以下没有内置 `tomllib` 的环境;读取 `~/.codex/config.toml` 时应使用脚本内置的轻量 TOML fallback,不要求用户额外安装 `tomli`。 + 不要在日志、回答、Markdown 或 manifest 中写入完整 API key。 ## 单张生成 @@ -60,7 +62,7 @@ uv run python scripts/maomomo_image_gen.py generate \ - `prompts/*.json` 用于管理图片 job、路径、参考素材、可见文字白名单和完整 prompt。 - 如果生成脚本的 `--prompt-file` 读取纯文本,必须先从 JSON 的 `prompt` 字段抽取为同名 `.prompt.txt`,再把 `.prompt.txt` 传给图片接口。 - 不要把整个 JSON 文件作为 `--prompt-file` 传入;否则模型可能把 JSON 外壳、字段名或管理信息画进图片。 -- 抽取出的 `.prompt.txt` 仍必须包含可见文字限制:只允许出现指定业务文案和 `MAOMOMO`,不得出现风格标签、prompt 描述、额外 slogan 或无关文字。 +- 抽取出的 `.prompt.txt` 仍必须包含可见文字限制:只允许出现指定业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识,不得出现风格标签、prompt 描述、额外 slogan 或无关文字。 推荐抽取方式: @@ -100,6 +102,16 @@ manifest 示例: "core_text": "先报名,再看门槛和封顶", "alt_text": "MAOMOMO 汇丰 Mastercard 支付宝返现活动封面图", "style": "warm-fintech-guide", + "allowed_brand_marks": ["HSBC", "Mastercard", "支付宝"], + "brand_mark_sources": [ + { + "name": "Mastercard", + "source_url": "https://example.com/official-source", + "source_type": "官方活动页 / 官方品牌资源页 / 用户素材", + "checked_at": "YYYY-MM-DD" + } + ], + "brand_mark_rule": "这些标识必须来自官方活动材料或用户素材核对;只能小尺寸辅助出现,不能抢 MAOMOMO 主标识位置", "aspect_ratio": "16:9" }, { @@ -129,7 +141,7 @@ uv run python scripts/maomomo_image_gen.py batch \ - 默认用 `generate` 单张生成;`batch` 只用于用户明确授权的全量生成或 dry-run prompt 输出。 - 即使使用 `batch`,脚本也是逐项请求图片接口;生成后仍要逐张 QA,并把通过的图片同步到 `assets/`。 - 发布用 Markdown 默认引用 `assets/`,因此如果 manifest 输出到 `origin_image/`,必须在 QA 后复制到对应 `assets/` 路径。 -- 金融活动 manifest 中涉及信用卡、支付卡或支付网络时,必须记录 `reference_assets`、`payment_network` 和 `card_art_rule`,并在 QA 中核对卡组织没有画错。 +- 金融活动 manifest 中涉及信用卡、支付卡、支付网络或机构 Logo 时,必须记录 `reference_assets`、`payment_network`、`allowed_brand_marks`、`brand_mark_sources` 和 `card_art_rule`,并在 QA 中核对卡组织和第三方 Logo 没有画错,也没有抢 MAOMOMO 主标识位置。用户未提供 Logo / 卡面素材时,先尽力查找官方或可信来源并保存到 `sources/`;无法核对时使用通用符号,不要凭记忆画真实 Logo。 - manifest、prompt、`deck_spec.json` 和发布稿中的港币金额统一使用 `HKD`,来源原文抽取文件除外。 ## 内置风格名 diff --git a/references/image-styles/创意杂志风.md b/references/image-styles/创意杂志风.md index 2e7f700..2cb0b42 100644 --- a/references/image-styles/创意杂志风.md +++ b/references/image-styles/创意杂志风.md @@ -45,5 +45,5 @@ ## Prompt 片段 ```text -中文金融文章封面,大标题、强留白、暖橙品牌点缀,金融物件原创插画,白橘猫作为角落品牌元素,画面像编辑部攻略封面,不像银行广告,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +中文金融文章封面,大标题、强留白、暖橙品牌点缀,金融物件原创插画,白橘猫作为角落品牌元素,画面像编辑部攻略封面,不像银行广告,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/复古扁平插画风.md b/references/image-styles/复古扁平插画风.md index 0a66c5b..aecabf7 100644 --- a/references/image-styles/复古扁平插画风.md +++ b/references/image-styles/复古扁平插画风.md @@ -46,5 +46,5 @@ ## Prompt 片段 ```text -低饱和暖色,扁平信用卡、小票、日历、计算器和白橘猫,中文标题清楚,轻松但不夸张,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +低饱和暖色,扁平信用卡、小票、日历、计算器和白橘猫,中文标题清楚,轻松但不夸张,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/小红书竖版攻略风.md b/references/image-styles/小红书竖版攻略风.md index fb932f3..6976dc8 100644 --- a/references/image-styles/小红书竖版攻略风.md +++ b/references/image-styles/小红书竖版攻略风.md @@ -46,5 +46,5 @@ ## Prompt 片段 ```text -9:16 竖版,大字少字,手机端可读,暖橙白底,白橘猫水印,适合 4 图系列,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +9:16 竖版,大字少字,手机端可读,暖橙白底,白橘猫水印,适合 4 图系列,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/手绘便签风.md b/references/image-styles/手绘便签风.md index 06f76de..0930d1c 100644 --- a/references/image-styles/手绘便签风.md +++ b/references/image-styles/手绘便签风.md @@ -46,5 +46,5 @@ ## Prompt 片段 ```text -近白纸感背景,暖橙便利贴,手绘箭头和圈注,白橘猫举提示牌,中文步骤短而清晰,适合避坑和保姆式教程,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +近白纸感背景,暖橙便利贴,手绘箭头和圈注,白橘猫举提示牌,中文步骤短而清晰,适合避坑和保姆式教程,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/数据仪表盘风.md b/references/image-styles/数据仪表盘风.md index ebf3ec5..915f08d 100644 --- a/references/image-styles/数据仪表盘风.md +++ b/references/image-styles/数据仪表盘风.md @@ -47,5 +47,5 @@ ## Prompt 片段 ```text -白底,KPI 卡片、计算公式、时间线和风险标签清晰分区,金额和日期大号可读,白橘猫只做小型提示元素,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +白底,KPI 卡片、计算公式、时间线和风险标签清晰分区,金额和日期大号可读,白橘猫只做小型提示元素,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/暖橙金融教程风.md b/references/image-styles/暖橙金融教程风.md index 67f6a99..4d21a20 100644 --- a/references/image-styles/暖橙金融教程风.md +++ b/references/image-styles/暖橙金融教程风.md @@ -52,5 +52,5 @@ ## Prompt 片段 ```text -明亮白底,暖橙强调色,干净信息卡片,友好的白橘猫作为向导,中文标题和关键数字清晰,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +明亮白底,暖橙强调色,干净信息卡片,友好的白橘猫作为向导,中文标题和关键数字清晰,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/清爽专业风.md b/references/image-styles/清爽专业风.md index 584a29c..762d504 100644 --- a/references/image-styles/清爽专业风.md +++ b/references/image-styles/清爽专业风.md @@ -52,5 +52,5 @@ ## Prompt 片段 ```text -浅色背景,蓝绿与暖橙强调色,结构化信息卡片,清晰中文标题和步骤,白橘猫作为小型向导,包含 MAOMOMO 标识,不伪造真实 App 截图。可见文字只允许出现指定业务文案和 MAOMOMO。 +浅色背景,蓝绿与暖橙强调色,结构化信息卡片,清晰中文标题和步骤,白橘猫作为小型向导,包含 MAOMOMO 标识,不伪造真实 App 截图。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/清爽编辑部风.md b/references/image-styles/清爽编辑部风.md index 68090f9..269f408 100644 --- a/references/image-styles/清爽编辑部风.md +++ b/references/image-styles/清爽编辑部风.md @@ -47,5 +47,5 @@ ## Prompt 片段 ```text -白底大标题,轻杂志排版,暖橙点缀,留白充足,白橘猫作为角落品牌元素,适合中文金融经验文章封面,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +白底大标题,轻杂志排版,暖橙点缀,留白充足,白橘猫作为角落品牌元素,适合中文金融经验文章封面,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/电子墨水杂志风.md b/references/image-styles/电子墨水杂志风.md index 9ec0836..f30c5bb 100644 --- a/references/image-styles/电子墨水杂志风.md +++ b/references/image-styles/电子墨水杂志风.md @@ -46,5 +46,5 @@ ## Prompt 片段 ```text -纸感背景,黑白灰为主,少量暖橙强调,大标题和元信息条,原创抽象金融视觉,克制高级,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +纸感背景,黑白灰为主,少量暖橙强调,大标题和元信息条,原创抽象金融视觉,克制高级,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/科研答辩风.md b/references/image-styles/科研答辩风.md index 0f97123..eb086e0 100644 --- a/references/image-styles/科研答辩风.md +++ b/references/image-styles/科研答辩风.md @@ -47,5 +47,5 @@ ## Prompt 片段 ```text -浅色严谨版式,来源卡片、条件树、证据矩阵和结论区清晰,暖橙强调风险提示,白橘猫只作为小型品牌元素,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +浅色严谨版式,来源卡片、条件树、证据矩阵和结论区清晰,暖橙强调风险提示,白橘猫只作为小型品牌元素,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/image-styles/麦肯锡简报风.md b/references/image-styles/麦肯锡简报风.md index a478776..6f61154 100644 --- a/references/image-styles/麦肯锡简报风.md +++ b/references/image-styles/麦肯锡简报风.md @@ -47,5 +47,5 @@ ## Prompt 片段 ```text -结论先行,白底深色标题,2x2 矩阵或方案对比表,暖橙突出推荐路径和风险提醒,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +结论先行,白底深色标题,2x2 矩阵或方案对比表,暖橙突出推荐路径和风险提醒,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` diff --git a/references/recommended-styles.md b/references/recommended-styles.md index ef6e5d6..60787ed 100644 --- a/references/recommended-styles.md +++ b/references/recommended-styles.md @@ -56,7 +56,7 @@ 提示词片段: ```text -明亮白底,暖橙强调色,干净卡片布局,友好的白橘猫作为向导,现代 App 信息卡片质感,中文标题清楚,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +明亮白底,暖橙强调色,干净卡片布局,友好的白橘猫作为向导,现代 App 信息卡片质感,中文标题清楚,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` ## data-card-dashboard @@ -77,7 +77,7 @@ 提示词片段: ```text -白底,暖橙和蓝灰辅助色,使用指标卡、表格、时间线和计算公式展示关键信息,中文数字清晰可读,猫咪作为小型提示元素,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +白底,暖橙和蓝灰辅助色,使用指标卡、表格、时间线和计算公式展示关键信息,中文数字清晰可读,猫咪作为小型提示元素,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` ## clean-professional @@ -118,7 +118,7 @@ 提示词片段: ```text -白底大标题,轻杂志排版,暖橙点缀,留白充足,白橘猫作为角落品牌元素,适合中文金融经验文章封面,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +白底大标题,轻杂志排版,暖橙点缀,留白充足,白橘猫作为角落品牌元素,适合中文金融经验文章封面,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` ## retro-flat-illustration @@ -149,7 +149,7 @@ 提示词片段: ```text -白底纸感,暖橙便利贴,手绘箭头和圈注,白橘猫举提示牌,中文步骤清楚,适合避坑经验和保姆式教程,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +白底纸感,暖橙便利贴,手绘箭头和圈注,白橘猫举提示牌,中文步骤清楚,适合避坑经验和保姆式教程,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` ## e-ink-editorial @@ -200,7 +200,7 @@ 提示词片段: ```text -9:16 竖版,手机端可读,大标题,少量关键数字,暖橙白底,白橘猫水印,适合 4 图看完的中文金融攻略,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案和 MAOMOMO。 +9:16 竖版,手机端可读,大标题,少量关键数字,暖橙白底,白橘猫水印,适合 4 图看完的中文金融攻略,包含 MAOMOMO 标识。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` ## 风格选择输出格式 diff --git a/references/style-guide.md b/references/style-guide.md index 3db7eab..d03fb36 100644 --- a/references/style-guide.md +++ b/references/style-guide.md @@ -369,12 +369,12 @@ tags: 基础方向: ```text -干净的中文金融实操文章封面,友好的白橘猫吉祥物,圆脸、小爪子,暖橙色点缀,结合香港金融 / 信用卡 / 券商 / 转账场景,预留清晰中文标题区域,现代 App 信息卡片质感,实用而非奢华,明亮白色背景,少量爪印细节,包含 MAOMOMO 标识,不使用未经提供的真实银行标志,不伪造真实截图界面,16:9。可见文字只允许出现指定业务文案和 MAOMOMO。 +干净的中文金融实操文章封面,友好的白橘猫吉祥物,圆脸、小爪子,暖橙色点缀,结合香港金融 / 信用卡 / 券商 / 转账场景,预留清晰中文标题区域,现代 App 信息卡片质感,实用而非奢华,明亮白色背景,少量爪印细节,包含清晰的 MAOMOMO 主标识,已核对的银行 / 支付 / 卡组织标识只做小型辅助识别,不伪造真实截图界面,16:9。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` 按主题追加对象: -- 信用卡 / 返现:香港信用卡、超市购物篮、返现计算器、小票、通用支付符号;只有官方材料或用户素材确认后才画具体卡组织 / 支付网络。 +- 信用卡 / 返现:香港信用卡、超市购物篮、返现计算器、小票、通用支付符号;只有官方材料或用户素材确认后才画具体卡组织 / 支付网络 / 支付机构 Logo,且不能抢 MAOMOMO 主标识位置。 - 银行账户 / 保号:保险库、账户余额仪表、ETF / 股票图表卡片、日历、警示标。 - 转账 / 入金:路线箭头、HKD / EUR / USD 币种标签、手机转账界面插画、勾选标记。 - 券商活动:股票礼品卡、K 线图、欢迎信封、香港天际线线稿。 @@ -413,7 +413,7 @@ tags: 提示词模板: ```text -生成一张干净的中文金融实操信息图,使用暖橙色点缀和小型白橘猫吉祥物。展示【计算公式 / 路线 / 时间线】。画面使用简洁卡片、箭头、勾选标记、风险提示标签和清晰中文标注,白色背景,不使用伪造官方标志,16:9。可见文字只允许出现指定业务文案和 MAOMOMO。 +生成一张干净的中文金融实操信息图,使用暖橙色点缀和小型白橘猫吉祥物。展示【计算公式 / 路线 / 时间线】。画面使用简洁卡片、箭头、勾选标记、风险提示标签和清晰中文标注,白色背景,不伪造官方标志,16:9。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` ## 来源处理 diff --git a/references/visual-assets.md b/references/visual-assets.md index 687da96..955e362 100644 --- a/references/visual-assets.md +++ b/references/visual-assets.md @@ -15,7 +15,7 @@ - 生成图必须是“示意图 / 信息图 / 教程视觉”,不得伪造真实 App 截图、账单或官方页面。 - 用户提供真实截图时,优先用真实截图,并隐去姓名、账号、余额、地址、手机号、二维码、交易号等个人信息。 - 每张图必须包含清晰可见的 `MAOMOMO` 标识。 -- 每张图的可见文字必须受控:只允许出现该图指定的业务文案和 `MAOMOMO`,不得添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。 +- 每张图的可见文字必须受控:只允许出现该图指定的业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识,不得添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。 - 不要用 Playwright、HTML/CSS、SVG、Pillow、canvas、本地拼贴或手工覆盖文字替代图片生成后端。 ## 可见文字与 prompt 边界 @@ -23,7 +23,7 @@ - 视觉风格只作为后台画面描述,不得成为画面文字。 - 生成用 prompt 不要写容易被模型照抄到画面里的中文风格标签,例如“暖橙金融教程风”“数据仪表盘风”“手绘便签风”“清爽编辑部风”。 - 把风格名改写成可观察的视觉描述:白底、暖橙强调、信息卡片、猫咪向导、清晰标题、留白充足、表格感、时间线、轻纸感等。 -- prompt 必须写明:画面只允许出现指定业务文案和 `MAOMOMO`;不要添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。 +- prompt 必须写明:画面只允许出现指定业务文案、`MAOMOMO` 和 `allowed_brand_marks` 中已核对允许出现的品牌 / 支付标识;不要添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。 - `style` 字段可保留内部风格 ID,例如 `warm-fintech-guide`,但完整 `prompt` 字段里不要把中文风格名当成可见文案写入。 推荐写法: @@ -41,10 +41,15 @@ MAOMOMO 暖橙金融教程风,画出一张手绘便签风仪表盘图。 ## 金融卡面与支付网络核对 - 金融活动配图中只要出现信用卡、支付卡、卡组织、支付网络或银行卡样式,必须先根据官方材料、用户截图或用户提供的卡面参考图核对。 -- 用户提供卡面参考图时,把原始素材保存到 `sources/`,例如 `sources/gba-unionpay-card-reference.png`;不要只留在聊天上下文里。 -- 在 `prompt`、manifest 和 `deck_spec.json` 中记录参考素材路径、卡组织 / 支付网络、是否允许出现卡组织标识,以及核对依据。 +- 用户提供卡面或 Logo 参考图时,把原始素材保存到 `sources/`,例如 `sources/gba-unionpay-card-reference.png`;不要只留在聊天上下文里。 +- 用户没有提供 Logo / 卡面素材,但画面需要银行、卡组织、支付机构、酒店、OTA 或活动品牌标识时,主动尽力查找准确标识,不要先默认画通用符号。 +- 查找优先级:用户素材 > 官方活动页 / 条款 PDF / App 或官网截图 > 官方品牌资源页 / media kit / press kit > 官方社交账号或应用商店页面 > 可信百科或新闻配图。只有前几类无法获得时,才使用第三方汇总站,并必须交叉核对。 +- 找到标识后,把原始文件、截图或网页证据保存到 `sources/`,并记录来源 URL、读取日期、用途和核对结论;不要只把来源写在聊天里。 +- 在 `prompt`、manifest 和 `deck_spec.json` 中记录参考素材路径、卡组织 / 支付网络、允许出现的品牌 / 支付标识、来源 URL 和核对依据。 - 不得把银联 / UnionPay 卡画成 Mastercard、Visa、American Express 或其他卡组织;不确定时画“无卡组织标识的通用支付卡”。 -- 未经用户提供或官方材料确认,不要使用真实银行、卡组织、酒店、OTA 或支付机构 Logo;必要时使用通用卡片、通用 POS、通用酒店图标。 +- Mastercard、Visa、UnionPay、银行、支付宝、微信支付、酒店、OTA 等 Logo 或支付网络标识,只要已经由官方材料、用户素材或用户明确口径核对正确,就可以作为辅助识别出现。 +- 已核对的第三方 Logo 必须尺寸克制、位置辅助,不得抢占、替代或压过 `MAOMOMO` 主标识;封面尤其要让 `MAOMOMO` 仍是最清楚的品牌锚点。 +- 如果当前环境无法联网、官方素材无法读取或标识版本仍不确定,记录 blocker;除非用户确认,否则不要凭记忆画真实 Logo,改用通用卡片、通用 POS、通用酒店图标或文字描述。 - 如果官方活动限定某卡组织或指定卡面,图片 QA 必须把卡组织 / 支付网络列为必检项。 推荐记录字段: @@ -52,8 +57,17 @@ MAOMOMO 暖橙金融教程风,画出一张手绘便签风仪表盘图。 ```json { "reference_assets": ["sources/gba-unionpay-card-reference.png"], + "brand_mark_sources": [ + { + "name": "UnionPay", + "source_url": "https://example.com/official-unionpay-source", + "source_type": "官方活动页 / 官方品牌资源页 / 用户素材", + "checked_at": "YYYY-MM-DD" + } + ], "payment_network": "UnionPay / 银联", - "card_art_rule": "根据用户卡面参考图画银联 GBA 双币信用卡;不得出现 Mastercard 或 Visa 标识" + "allowed_brand_marks": ["UnionPay", "中信银行(国际) GBA 卡面识别"], + "card_art_rule": "根据用户卡面参考图画银联 GBA 双币信用卡;不得出现 Mastercard 或 Visa 标识;UnionPay 标识只能小尺寸辅助出现,不能抢 MAOMOMO 主标识位置" } ``` @@ -126,7 +140,7 @@ C. handdrawn-note:便签和手绘箭头更明显,适合避坑经验和保姆 ## 图片清单格式 -生成图片前先规划清单,并同步写入 `prompts/{article_slug}_XX.json` 或图片 manifest。每个 prompt 文件至少包含:文件名、类型、放置位置、核心文案、可见文字白名单、alt text、风格、依赖素材、输出路径和完整 prompt。涉及信用卡、支付卡或支付网络时,还要包含参考素材、卡组织 / 支付网络和核对依据。 +生成图片前先规划清单,并同步写入 `prompts/{article_slug}_XX.json` 或图片 manifest。每个 prompt 文件至少包含:文件名、类型、放置位置、核心文案、可见文字白名单、alt text、风格、依赖素材、输出路径和完整 prompt。涉及信用卡、支付卡、支付网络或机构 Logo 时,还要包含参考素材、卡组织 / 支付网络、`allowed_brand_marks`、`brand_mark_sources` 和核对依据。 ```markdown | 文件名 | 类型 | 放置位置 | 核心文案 | alt text | 风格 | 依赖素材 | @@ -153,8 +167,10 @@ C. handdrawn-note:便签和手绘箭头更明显,适合避坑经验和保姆 "style": "warm-fintech-guide", "required_assets": [], "reference_assets": [], + "brand_mark_sources": [], "payment_network": "", - "card_art_rule": "如无官方或用户参考素材确认,画无卡组织标识的通用支付卡", + "allowed_brand_marks": [], + "card_art_rule": "如无官方或用户参考素材确认,画无卡组织标识的通用支付卡;已核对的品牌 / 支付标识只能辅助出现,不能抢 MAOMOMO 主标识位置", "forbidden_visible_text": ["风格标签", "prompt 描述", "额外 slogan", "无关说明文字"], "prompt": "完整图片生成 prompt,包含视觉描述、指定业务文案、可见文字限制和禁止项" } @@ -214,7 +230,7 @@ assets/ 基础方向: ```text -中文金融实操信息图,干净明亮白色背景,暖橙色点缀,友好的白橘猫吉祥物,圆脸、小爪子,现代 App 信息卡片质感,清晰中文标题和卡片信息层级,实用而非奢华,包含 MAOMOMO 标识,不使用未经提供的真实银行标志,不伪造真实截图。可见文字只允许出现指定业务文案和 MAOMOMO。 +中文金融实操信息图,干净明亮白色背景,暖橙色点缀,友好的白橘猫吉祥物,圆脸、小爪子,现代 App 信息卡片质感,清晰中文标题和卡片信息层级,实用而非奢华,包含清晰的 MAOMOMO 主标识,已核对的第三方品牌 / 支付标识只做辅助识别,不伪造真实截图。可见文字只允许出现指定业务文案、MAOMOMO 和已核对允许出现的品牌 / 支付标识。 ``` 猫咪可以: @@ -226,13 +242,13 @@ assets/ 猫咪不能: -- 穿戴或承载第三方银行、卡组织、券商、支付机构 Logo。 +- 穿戴第三方银行、卡组织、券商、支付机构 Logo;如果猫咪拿着带标识的卡片或支付牌,标识必须已核对、尺寸小、位置辅助,不能盖住或替代 MAOMOMO。 - 盖住关键数字、日期、步骤和风险提示。 - 变成幼稚主角,压过金融教程信息。 ## 主题追加元素 -- 信用卡 / 返现:通用信用卡、小票、购物篮、返现计算器、通用支付符号;只有在官方材料或用户素材确认后,才画具体卡组织 / 支付网络。 +- 信用卡 / 返现:通用信用卡、小票、购物篮、返现计算器、通用支付符号;只有在官方材料或用户素材确认后,才画具体卡组织 / 支付网络 / 支付机构 Logo,且只能作为辅助识别。 - 银行账户 / 保号:账户余额仪表、保险库、日历、警示标、活跃度卡片。 - 转账 / 入金:路线箭头、HKD / EUR / USD 标签、手机转账示意界面、勾选标记。 - 券商活动:股票礼品卡、K 线图、欢迎信封、香港天际线线稿。 @@ -257,12 +273,14 @@ assets/ - `origin_image/` 原始最终图和 `assets/` 发布图对应。 - Markdown 路径能打开对应文件。 - 图片文字清楚,无乱码、错字、截断和多余文案。 -- 可见文字只包含指定业务文案和 `MAOMOMO`,没有副标题、风格说明文字、prompt 描述、额外 slogan 或无关说明。 +- 可见文字只包含指定业务文案、`MAOMOMO` 和已核对允许出现的品牌 / 支付标识,没有副标题、风格说明文字、prompt 描述、额外 slogan 或无关说明。 - 标题、金额、币种、日期、公式、规则与最终文章口径一致;港币金额发布写法统一为 `HKD`。 -- 卡组织 / 支付网络与官方材料或用户参考素材一致;银联 / UnionPay 不得被画成 Mastercard、Visa 或其他卡组织。 +- 卡组织 / 支付网络 / 机构 Logo 与官方材料或用户参考素材一致;银联 / UnionPay 不得被画成 Mastercard、Visa 或其他卡组织。 +- 用户未提供 Logo / 卡面素材时,已尽力查找官方或可信来源;`sources/`、prompt、manifest 和 `deck_spec.json` 已记录标识素材、来源 URL、读取日期和核对结论。 +- 第三方 Logo 没有抢占、替代或压过 MAOMOMO 主标识位置;MAOMOMO 仍然是画面主品牌识别。 - 没有出现用户已删除、已排除或禁止使用的活动分支、旧版规则、旧金额或旧标题。 - 没有真实个人信息。 -- 没有伪造官方 App 页面或未经授权的品牌 Logo 场景。 +- 没有伪造官方 App 页面,也没有错误、未经核对或喧宾夺主的品牌 Logo 场景。 - 没有把示意图伪装成真实截图、账单、订单、App 页面或官方页面。 - 每张图独立主题明确,不是同一画面的机械变体。 - 单张 QA 通过后,才用 `scripts/maomomo_job_state.py result` 记录结果并同步到 `assets/`;不得只生成到 `origin_image/` 后声称完成。 diff --git a/scripts/maomomo_image_gen.py b/scripts/maomomo_image_gen.py index 70e2e97..a522d08 100644 --- a/scripts/maomomo_image_gen.py +++ b/scripts/maomomo_image_gen.py @@ -88,6 +88,69 @@ def read_json(path: Path) -> Any: return json.loads(read_text(path)) +def strip_toml_comment(line: str) -> str: + quote = "" + escaped = False + for index, char in enumerate(line): + if escaped: + escaped = False + continue + if quote and char == "\\": + escaped = True + continue + if char in ("'", '"'): + if not quote: + quote = char + elif quote == char: + quote = "" + continue + if char == "#" and not quote: + return line[:index] + return line + + +def parse_toml_scalar(value: str) -> Any: + raw = strip_toml_comment(value).strip() + if len(raw) >= 2 and raw[0] == raw[-1] and raw[0] in ("'", '"'): + inner = raw[1:-1] + if raw[0] == '"': + return inner.replace(r"\"", '"').replace(r"\\", "\\") + return inner + if raw.lower() == "true": + return True + if raw.lower() == "false": + return False + return raw + + +def parse_basic_toml(text: str) -> Dict[str, Any]: + """解析 Codex 配置需要的 TOML 子集,避免 Python 3.10 及以下缺少 tomllib。""" + data: Dict[str, Any] = {} + current: Dict[str, Any] = data + for raw_line in text.splitlines(): + line = strip_toml_comment(raw_line).strip() + if not line: + continue + if line.startswith("[") and line.endswith("]"): + section = line.strip("[]").strip() + current = data + for part in section.split("."): + key = part.strip().strip("'\"") + if not key: + continue + child = current.get(key) + if not isinstance(child, dict): + child = {} + current[key] = child + current = child + continue + if "=" not in line: + continue + key, value = line.split("=", 1) + current[key.strip().strip("'\"")] = parse_toml_scalar(value) + return data + + def load_prompt_file(path: Path) -> str: text = read_text(path).strip() stripped = text.lstrip() @@ -110,14 +173,19 @@ def load_codex_config_base_url() -> Optional[str]: config_path = Path.home() / ".codex" / "config.toml" if not config_path.exists(): return None + text = read_text(config_path) try: import tomllib + data = tomllib.loads(text) except ModuleNotFoundError: - return None - try: - data = tomllib.loads(read_text(config_path)) + data = parse_basic_toml(text) except Exception: - return None + data = parse_basic_toml(text) + try: + if not isinstance(data, dict): + data = parse_basic_toml(text) + except Exception: + data = parse_basic_toml(text) provider_name = data.get("model_provider") providers = data.get("model_providers") @@ -210,8 +278,8 @@ def build_prompt( f"核心文案:{core_text}", f"画幅:{aspect_ratio}", f"画面呈现:{style_prompt(style)}", - f"可见文字限制:画面只允许出现这些指定业务文案:{allowed_visible_text};不要添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。", - "硬性要求:包含清晰可见的 MAOMOMO 标识;中文文字清楚可读;信息层级明确;港币金额统一使用 HKD 写法;不要伪造真实 App 截图;不要使用未经提供的银行、券商、支付机构或卡组织 Logo;没有明确素材或指令时,信用卡画无卡组织标识的通用卡,不要凭空加入 Mastercard、Visa、UnionPay 或其他支付网络;不要出现真实个人信息;猫咪不能承载第三方品牌 Logo。", + f"可见文字限制:画面只允许出现这些指定业务文案:{allowed_visible_text};如补充要求明确列出已核对的品牌或支付标识,可作为小型辅助标识出现;不要添加副标题、风格标签、prompt 描述、说明文字、额外 slogan 或无关文字。", + "硬性要求:包含清晰可见的 MAOMOMO 主标识;中文文字清楚可读;信息层级明确;港币金额统一使用 HKD 写法;不要伪造真实 App 截图;Mastercard、Visa、UnionPay、银行、支付宝等 Logo 或支付网络标识只有在官方材料、用户素材或补充要求明确核对正确时才可出现,并且只能作为辅助识别,不能抢占或替代 MAOMOMO 主标识位置;未确认时使用通用卡片或通用支付符号,不要凭空加入或替换卡组织;不要出现真实个人信息;猫咪不穿戴第三方 Logo。", ] if extra.strip(): parts.append(f"补充要求:{extra.strip()}")