公众号图文全案
一趟从选题走到能直接发的推文:标题、摘要、正文、封面和内文配图——文字和图一起做出来,让配图对得上段落里真正写了什么。
适用范围与相邻路线
这条路线是:一个选题、一篇文章,以及它的整组配图。文章还没写、图也还没有时,它才合适。
其中一样已经有了,就该走别的工作流。文章已经写好、只差配图,属于 wechat-article-visual-pack。只有一个标题、只要一张封面,属于 wechat-cover-maker。短篇社交笔记而不是长图文,属于对应平台的工作流。
输入与默认值
唯一的硬性输入是选题。缺了就问。
另外三项会让结果明显更好,而且是一次性一起问清、不是一条条挤出来的:要推的是什么、卖点在哪;读者是谁;这位读者在为什么发愁。它们没到位时,就只按选题写,并说明哪些部分是绕着信息缺口写的。
对话里已经说过的公众号调性、活动信息和篇幅,直接复用。默认正文约 1500 字(英文约 900 词)、三个候选标题、一张封面、三张内文配图,语气从选题本身读出来。这些默认值在确认里逐条说明,而不是拿去逐条追问。
文章要用它的读者阅读的那种语言来写,在公众号上就是简体中文。默认用简体中文写标题、摘要一句话和正文,包括这次对话本身是用别的语言进行的时候——面向的是这个号的读者,而不是下单的那个人。只有用户要求时才换成另一种语言,并在确认里说明正文会用哪种语言。
文章里关于所推之物的一切说法都来自用户。价格、参数、成分、效果、资质、时间和活动条款都由用户提供。缺哪一项就绕开哪一项写;绝不生成一个看起来合理的数字,因为要为它负责的是用户。
标准流程
第 1 到 3 步不花钱。文案获批之前不会发生任何付费调用。
- 写文章。 候选标题、摘要一句话,以及按手机阅读组织的正文,见文章写作(references/article-craft.md)。文案合规在同一趟里过一遍。
- 规划整组配图。 封面,以及每张内文配图放在哪、承担什么,见配图规划(references/visual-set.md)。每张内文配图都挂在具体的某一段上,因为不回答段落的图就是装饰。
- 读取实时的
text_to_image卡片,用beatra.models.list——上传了品牌参考图来定住整组视觉时,则读image_to_image卡片——并据此核对画布与张数。 - 把文案和配图方案放在一起展示,取得一次批准。 2.35:1 的封面、每张内文配图及它服务的那一段、把它们串成一体的统一视觉,以及每次调用的当前预估费用。改是免费的,而每一条提示词都从这份方案里生成。
- 用
beatra.images.generate渲染封面和内文配图,一张图一次调用;也可以用beatra.images.transform从上传的参考图生成。 - 用
beatra.tasks.get轮询每个任务直到终态,按阅读顺序把配图放回文章里交付,并复核你确实看得到的部分。
需要确认的决定
花钱之前确认一次:整组配图一起确认,每张都带上它的价格和请求 ID。没有第二道闸门,因为这里没有任何一张图依赖另一张。
同样需要确认、而不能自己拍板的还有:连封面在内总数超过六张、用户尚未核实的说法、封面要放文字而不是纯画面,以及某张图获批之后的任何改动。每一个变更过的参数都是新的付费工作,需要新的请求标识和重新审批。
用户想让封面带标题文字时,说明渲染出来的文字属于生成画面,出图后会读回核对;同时给出另一条路:封面不带文字,标题交给推文本身来承载。
执行
每一个远程 Beatra 工具都只通过本 Skill 随包的 scripts/mcp_client.py 调用:工具名作为命令行参数,它的参数以 JSON 从标准输入传入:
printf '%s' '{"capability":"text_to_image"}' | python3 scripts/mcp_client.py call beatra.models.list
printf '%s' '{"capability":"image_to_image"}' | python3 scripts/mcp_client.py call beatra.models.list
python3 scripts/mcp_client.py upload ./brand-reference.jpg --mime-type image/jpeg
不要配置或调用宿主 Beatra Connector,也不要使用 REST/OpenAPI 作为回退。每一个逻辑上的付费请求给一个稳定、不透明的 client_request_id,并且只提交一次。
交付与复核
交付候选标题(标出推荐的那一个)、摘要一句话、正文、封面、按阅读顺序排列并标明各自服务哪一段的每张内文配图,以及每个任务 ID、返回的 artifact 链接、解析后的模型、返回尺寸和 billing.net_charged_credits。只报告任务确实返回的事实。
宿主能看到返回的图片时,检查整组是不是同一套视觉、每张内文配图是不是在回答它那一段、封面在信息流里显示的尺寸下读不读得出来。封面带文字时,把渲染出来的文案读回来,跟已批准的标题核对。哪些画面细节无法检查就直接说明,不要从任务元数据里推断。
找回与恢复
立刻记下每个任务 ID,并且只轮询那个任务。queued 和 running 表示继续等。创建请求的响应丢失时,只能用同一个标识重放逐字节一致的冻结载荷;任务 ID 丢失时,按该能力列出任务,拿自己的台账逐一比对候选,然后再考虑重试。重做其中一张图时,其余的原样复用。insufficient_balance 表示没有扣费,充值后可以重新提交完全相同的请求。
按任务查阅参考
- 候选标题、摘要一句话、正文结构、段落节奏与文案自查:文章写作(references/article-craft.md)
- 封面比例与构图、内文配图放在哪、整组如何保持同一套视觉:配图规划(references/visual-set.md)
- 确切载荷、确认时冻结了什么、轮询、重做单张图、找回与取消:图文工作流(references/workflow.md)
- 首次安装或授权过期:安装与认证(references/installation-and-auth.md)
- 不计费的安装注册:安装注册(references/installation-registration.md)
- 任务轮询、产物与结果字段:任务与结果(references/tasks-and-results.md)
- 余额、校验与结构化错误:计费、错误与恢复(references/billing-errors-and-recovery.md)
- 随包客户端连不上时:随包 MCP Client 连接诊断(references/mcp-connection.md)
- 更新保证与开关:自动更新与安全(references/automatic-updates-and-safety.md)
- 移除本包或共享凭据:卸载与断开连接(references/uninstall-and-disconnect.md)
运行时与安全自动更新
随包客户端会在每个安装中静默检查是否有新版本,最多每 24 小时一次。发现更高版本时,不另行确认地自动安装。它只从本包、本渠道、本语言对应的固定 Beatra 官方发现地址与不可变 CDN 路径下载,在替换之前校验发现数据、压缩包、清单以及每个文件的大小和校验和,并且只替换本包拥有的文件。它会拒绝重定向、降级、包与渠道与语言与版本信息不一致、非预期 URL、不安全的压缩包,以及任何落在所属目录之外的文件。
检查、下载、校验、替换和回滚失败时都不会中断:当前安装仍然可用,原本请求的命令会继续执行。更新失败绝不构成重试付费生成的理由。这个设置会在本安装的后续命令中持续生效。
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check
--auto off 关闭静默检查,--auto on 恢复静默检查,--check 报告官方的可用版本但不替换任何文件。详见自动更新与安全(references/automatic-updates-and-safety.md)。
Scan to join WeChat group