> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myrmagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# WeChat 公式アカウントへの公開

> vault 内の Markdown を WeChat 公式アカウント向けの HTML に変換し、WebUI で人による確認を経て WeChat 草稿箱へ送信します。

# WeChat 公式アカウントへの公開

**ワークスペースの vault** に長い記事を書き、**HITL（人による確認）** を経て **WeChat 公式アカウントの草稿箱** へ送ります — Agent に**一括公開ツールはありません**。

ワークフローは **ファイル中心** です。Markdown は vault に置き、`wechat-article-formatter` が同じディレクトリに `.wechat.html` を生成し、WebUI でプレビューして満足したら、あなたが **WeChat 公式アカウントの草稿へ送信** をクリックします。

> [!NOTE]
>
> **WeChat（iLink）** は **個人 WeChat** の QR コードログインです。**WeChat 公式アカウント（WeChat Official）** は **AppID + AppSecret** と草稿 API を使います。両者は独立したチャネルなので混同しないでください。

## 前提条件

1. **WeChat 公式アカウント**（購読号またはサービス号）を開設し、開発者インターフェースを有効にしていること。
2. [mp.weixin.qq.com](https://mp.weixin.qq.com/) → 設定と開発 → 基本設定 で **AppID** と **AppSecret** を取得すること。
3. 同じ画面の IP ホワイトリストに **サーバーの公開 IP** を追加すること（`uploadimg` と `draft/add` に必要）。
4. 任意：必要な場合は **設定 → チャネル → WeChat 公式アカウント** でチャネルを紐づけ、フォロワーからのメッセージを受け取ります（草稿のpushだけなら認証情報の設定で足ります）。

## 認証情報の設定

1. **設定 → チャネル → WeChat 公式アカウント** を開きます。
2. **AppID** と **AppSecret** を入力します。
3. カードに表示される **サーバーの公開 IP**（送信 IP を自動検出）を WeChat の IP ホワイトリスト（mp.weixin.qq.com → 設定と開発 → 基本設定）へコピーします。
4. **接続テスト** をクリックします — 失敗した場合はまず IP ホワイトリストを補ってください。
5. 保存します。認証情報のキーは `wechatOfficialCredentials` です。

## ワークフロー：vault → HTML → 草稿

### ステップ 1 — vault に Markdown を書く

Typora や Obsidian などが使えて、ワークスペースに保存します（例 `articles/my-post.md`）。画像は相対パスで書いてください。

```markdown theme={null}
![](./images/cover.png)
```

### ステップ 2 — プリセット Skill で体裁を整える

Agent に伝えてください（または Kanban の **WeChat 公式アカウント** ブランチを使います）。

> 「`articles/my-post.md` を WeChat 公式アカウント向けの HTML に変換して。」

**wechat-article-formatter** は `md_to_wechat_html.py` を呼び出し、`articles/my-post.wechat.html` を生成します。見出し・段落・コードブロック・表・画像にはすべてブロック単位のインラインスタイルが付きます。

### ステップ 3 — HTML アーティファクトをプレビューする

会話で HTML アーティファクトを開き、**ArtifactCard** にインライン描画される版面と画像を確認します。

入力欄に `mp.weixin.qq.com/s/...` の記事リンクを貼り付けると、Composer が **wechat-article-formatter** Skill で読み込んで体裁を整えるよう促します。

### ステップ 4 — HITL で草稿箱へ送る

1. HTML アーティファクトのカードで **WeChat 公式アカウントの草稿へ送信** をクリックし、**WeChatDraftPanel** を開きます。
2. **タイトル**（必須）、**著者**（必須・最大 8 文字・既定のプレースホルダなし）、**要約**（任意・空なら自動抽出）を入力します。
3. **カバー**：本文内の最初の `<img>` が自動入力されます。ワークスペースの画像候補から選ぶか、ワークスペース相対パスを手動で入力します。
4. 本文が **コンプライアンススキャン** に該当した場合：高リスク（例：いいね誘導）は **422 でブロック** され、該当項目を表示します。中リスク（例：医療効果表現）は push を許可しますが警告を表示します。
5. 著者が未入力なら確認ボタンは無効です。入力を終えると送信を確認できます。

サーバーは次を行います。

* `relative_to` でパスを検証します（ワークスペースが未解決なら **503 で fail-closed**）。
* 本文内の inline 画像を先に WeChat CDN（`uploadimg`）へアップロードし、続いてカバーの thumb を処理します。
* `draft/add` を呼び出し、本文はインライン style 付きの HTML 断片です。

### ステップ 5 — WeChat バックエンドで一括送信（人による操作）

[mp.weixin.qq.com](https://mp.weixin.qq.com/) → **草稿箱** を開き、プレビューしてから一括送信または予約公開します。Myrm が自動で一括送信することはありません — これは意図的な HITL 設計です。

## セキュリティと設計上のトレードオフ

| 設計 | 理由 |
| - | - |
| Agent の draft ツールなし | Prompt Cache に優しいツール schema を保つため。公開は人がクリックする |
| パスの fail-closed | LLM がワークスペース外のパスを注入するのを防ぐため |
| HITL のみ | 一括送信前に WeChat バックエンドで必ず人が確認する |
| コンプライアンススキャン | 高リスクは push をブロック。中リスクは警告だが人の判断に委ねる |
| 著者は必須 | API も UI も空の著者を拒否し、草稿箱にプレースホルダ名が出ないようにする |
| 単一テーマ CSS | ブロック単位のインラインスタイルを単一 SSOT とし、head の CSS も同源で生成する |

## トラブルシューティング

| 症状 | 対処 |
| - | - |
| 接続テストが失敗する | IP ホワイトリストにサーバーの送信 IP が含まれるか確認します |
| push が 503 を返す | ワークスペースのルートパスが未解決です — 現在のセッションのワークスペースを確認するか、サービスの準備を待ってください |
| 草稿に画像が欠ける | ワークスペース相対パスを使います。リモート URL はサーバーから到達できる必要があります |
| カバーが効かない | ワークスペースの画像パスを手動指定するか、本文の最初の画像がローカルの相対パスであることを確認します |
| コンプライアンスで 422 ブロック | 本文の HTML を修正してから再 push します。パネルに表示されたカテゴリと用語を確認してください |

## 関連ドキュメント

* [マルチチャネル連携](/ja/guides/multi-channel) — WeChat iLink と WeChat 公式アカウントの違いを含む
* プリセット Skill：`myrm-agent-server/assets/prebuilt_skills/wechat-article-formatter/SKILL.md`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.