# Fixed Assets Manifest

这是微信公众号长文发布链路的**通用 manifest 模板说明**。

最小结构示例：

```json
{
  "article": "2026-04-17-your-article-slug",
  "platform": "wechat",
  "assets": [
    {
      "key": "brand_head",
      "role": "fixed_head",
      "required": true,
      "local_path": "shared-assets/brand-head.png",
      "wechat_url": "",
      "media_id": ""
    },
    {
      "key": "cover",
      "role": "cover",
      "required": true,
      "local_path": "images/01-cover.png",
      "grok_prompt_en": "A premium cover illustration for a Chinese WeChat article, no text, no logo.",
      "grok_model": "grok-imagine-1.0",
      "grok_size": "1792x1024",
      "wechat_url": "",
      "media_id": ""
    },
    {
      "key": "core_diagram",
      "role": "inline",
      "required": true,
      "local_path": "images/02-core-diagram.png",
      "grok_prompt_en": "A text-free conceptual diagram illustration for a technical article.",
      "grok_model": "grok-imagine-1.0",
      "grok_size": "1024x1024",
      "wechat_url": "",
      "media_id": ""
    },
    {
      "key": "join_group_cta",
      "role": "fixed_tail",
      "required": true,
      "local_path": "shared-assets/group-cta.jpg",
      "wechat_url": "",
      "media_id": ""
    }
  ]
}
```

## 规则

- `fixed_head` 与 `fixed_tail` 都属于固定图，不能只锁尾图不锁头图
- `required: true` 的图缺失时，直接停止发布
- 外部图、Grok 图、手工图，都必须先落本地，再上传微信
- `wechat_url` 与 `media_id` 没拿到前，不要宣称“素材已锁定”
- `cover` 至少要有 `local_path` 或 `media_id`
- `inline` 图推荐至少 3 张，但不是强编码死规则

## 角色说明

- `cover`：封面图
- `inline`：正文解释图
- `fixed_head`：文章开头的品牌头图 / 引导图
- `fixed_tail`：文章结尾的收口图 / CTA 图
- `cta`：额外行动引导图
