tuzi-post-to-wechat について
tuzi-post-to-wechatは、WeChat公式アカウントに画像付き投稿や記事を公開するエージェントスキルです。Markdown、HTML、プレーンテキストに対応し、APIまたはブラウザー経由で公開できます。
主な機能
- 01複数画像付き投稿の公開
- 02APIまたはブラウザーでの記事公開
- 03Markdown、HTML、プレーンテキストの処理
- 04テーマ、色、著者情報の設定
- 05記事のコメント設定
活用シーン
- 01Markdown記事をWeChatの下書きとして公開
- 02複数画像を含む投稿の作成
- 03ログイン済みブラウザーセッションで記事を公開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tuziapi/ tuzi-skills --skill tuzi-post-to-wechatインストール後、Claude Code で/tuzi-post-to-wechatを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/article-posting.mdimage-text-posting.mdreferences/config/first-time-setup.mdscripts/cdp.tscheck-permissions.tscopy-to-clipboard.tsmd-to-wechat.tsscripts/md/cli.tsscripts/md/code-themes/1c-light.min.cssa11y-dark.min.cssa11y-light.min.cssagate.min.cssan-old-hope.min.cssandroidstudio.min.cssarduino-light.min.cssarta.min.cssascetic.min.cssatom-one-dark-reasonable.min.cssatom-one-dark.min.cssatom-one-light.min.cssbrown-paper.min.csscodepen-embed.min.csscolor-brewer.min.cssdark.min.cssdefault.min.cssdevibeans.min.cssdocco.min.cssfar.min.cssfelipec.min.cssfoundation.min.css詳細
WeChat 公式アカウントへの投稿
言語
ユーザーの言語に合わせる:ユーザーが使用する言語で応答します。ユーザーが中国語で書いた場合は中国語で、英語で書いた場合は英語で応答します。
スクリプトディレクトリ
エージェントの実行:この SKILL.md のディレクトリを SKILL_DIR として特定し、${SKILL_DIR}/scripts/<name>.ts を使用します。
| スクリプト | 用途 |
|---|---|
scripts/wechat-browser.ts | 画像とテキストの投稿(图文) |
scripts/wechat-article.ts | ブラウザー経由で記事を投稿(文章) |
scripts/wechat-api.ts | API 経由で記事を投稿(文章) |
scripts/md-to-wechat.ts | Markdown → 画像プレースホルダー付きの WeChat 対応 HTML |
scripts/check-permissions.ts | 環境と権限を確認 |
設定(EXTEND.md)
Bash を使って EXTEND.md の存在を確認します(優先順位順):
# Check project-level first
test -f .tuzi-skills/tuzi-post-to-wechat/EXTEND.md && echo "project"
# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.tuzi-skills/tuzi-post-to-wechat/EXTEND.md" && echo "user"
┌────────────────────────────────────────────────────────┬───────────────────┐ │ パス │ 場所 │ ├────────────────────────────────────────────────────────┼───────────────────┤ │ .tuzi-skills/tuzi-post-to-wechat/EXTEND.md │ プロジェクトディレクトリ │ ├────────────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.tuzi-skills/tuzi-post-to-wechat/EXTEND.md │ ユーザーのホームディレクトリ │ └────────────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐ │ 結果 │ 対応 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 見つかった │ 読み込み、解析し、設定を適用 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 見つからない │ 初回セットアップを実行(references/config/first-time-setup.md) → 保存 → 続行 │ └───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md で設定できる項目:デフォルトテーマ | デフォルトカラー | デフォルトの投稿方法(api/browser) | デフォルトの著者 | デフォルトのコメント許可設定 | デフォルトのファン限定コメント設定 | Chrome プロファイルのパス
初回セットアップ:references/config/first-time-setup.md
最低限サポートされるキー(大文字と小文字を区別せず、1/0 または true/false を受け付けます):
| キー | デフォルト | マッピング |
|---|---|---|
default_author | 空 | CLI/frontmatter で指定されていない場合の author のフォールバック |
need_open_comment | 1 | draft/add リクエストの articles[].need_open_comment |
only_fans_can_comment | 0 | draft/add リクエストの articles[].only_fans_can_comment |
EXTEND.md の推奨例:
default_theme: default
default_color: blue
default_publish_method: api
default_author: 宝玉
need_open_comment: 1
only_fans_can_comment: 0
chrome_profile_path: /path/to/chrome/profile
テーマの選択肢:default、grace、simple、modern
カラーのプリセット:blue、green、vermilion、yellow、purple、sky、rose、olive、black、gray、pink、red、orange(または 16 進数の値)
値の優先順位:
- CLI 引数
- Frontmatter
- EXTEND.md
- スキルのデフォルト値
使用前の確認(任意)
初回使用前に、環境チェックの実行を提案してください。ユーザーは希望に応じてスキップできます。
npx -y bun ${SKILL_DIR}/scripts/check-permissions.ts
チェック項目:Chrome、プロファイルの分離、Bun、アクセシビリティ、クリップボード、貼り付けキー入力、API 認証情報、Chrome の競合。
チェックに失敗した場合は、項目ごとに修正方法を案内してください。
| チェック項目 | 修正方法 |
|---|---|
| Chrome | Chrome をインストールするか、WECHAT_BROWSER_CHROME_PATH 環境変数を設定します |
| プロファイルディレクトリ | ~/.local/share/wechat-browser-profile が書き込み可能であることを確認します |
| Bun ランタイム | curl -fsSL https://bun.sh/install | bash |
| アクセシビリティ(macOS) | システム設定 → プライバシーとセキュリティ → アクセシビリティ → ターミナルアプリを有効にします |
| クリップボードへのコピー | Swift/AppKit が利用可能であることを確認します(macOS Xcode CLI ツール:xcode-select --install) |
| 貼り付けキー入力(macOS) | 上記のアクセシビリティの修正方法と同じです |
| 貼り付けキー入力(Linux) | xdotool(X11)または ydotool(Wayland)をインストールします |
| API 認証情報 | ステップ 2 のガイド付きセットアップに従うか、.tuzi-skills/.env に手動で設定します |
画像付き投稿(图文)
複数の画像を含む短い投稿(最大 9 枚)の場合:
npx -y bun ${SKILL_DIR}/scripts/wechat-browser.ts --markdown article.md --images ./images/
npx -y bun ${SKILL_DIR}/scripts/wechat-browser.ts --title "标题" --content "内容" --image img.png --submit
詳細は、references/image-text-posting.md を参照してください。
記事投稿のワークフロー(文章)
このチェックリストをコピーし、完了した項目にチェックを付けてください。
Publishing Progress:
- [ ] Step 0: Load preferences (EXTEND.md)
- [ ] Step 1: Determine input type
- [ ] Step 2: Select method and configure credentials
- [ ] Step 3: Resolve theme/color and validate metadata
- [ ] Step 4: Publish to WeChat
- [ ] Step 5: Report completion
ステップ 0:設定を読み込む
EXTEND.md の設定を確認して読み込みます(上記の「設定」セクションを参照)。
重要:見つからない場合は、他の手順や質問に進む前に、初回セットアップを完了してください。
後続の手順で使用する以下のデフォルト値を解決して保存します。
default_theme(デフォルトはdefault)default_color(未設定の場合は省略し、テーマのデフォルトを適用)default_authorneed_open_comment(デフォルトは1)only_fans_can_comment(デフォルトは0)
ステップ 1:入力タイプを判定する
| 入力タイプ | 判定方法 | アクション |
|---|---|---|
| HTML ファイル | パスが .html で終わり、ファイルが存在する | ステップ 3 に進む |
| Markdown ファイル | パスが .md で終わり、ファイルが存在する | ステップ 2 に進む |
| プレーンテキスト | ファイルパスではない、またはファイルが存在しない | Markdown として保存し、ステップ 2 に進む |
プレーンテキストの処理:
- 内容からスラッグを生成します(意味のある最初の 2~4 語を kebab-case にします)
- ディレクトリを作成してファイルを保存します。
mkdir -p "$(pwd)/post-to-wechat/$(date +%Y-%m-%d)"
# Save content to: post-to-wechat/yyyy-MM-dd/[slug].md
- Markdown ファイルとして処理を続けます
スラッグの例:
- 「AI モデルを理解する」 →
understanding-ai-models - 「人工智能的未来」 →
ai-future(スラッグ用に英語に翻訳します)
ステップ 2:公開方法を選択して設定する
公開方法を尋ねます(EXTEND.md または CLI で指定されている場合を除く)。
| 方法 | 速度 | 要件 |
|---|---|---|
api(推奨) | 高速 | API 認証情報 |
browser | 低速 | Chrome、ログインセッション |
API を選択した場合 — 認証情報を確認する:
# Check project-level
test -f .tuzi-skills/.env && grep -q "WECHAT_APP_ID" .tuzi-skills/.env && echo "project"
# Check user-level
test -f "$HOME/.tuzi-skills/.env" && grep -q "WECHAT_APP_ID" "$HOME/.tuzi-skills/.env" && echo "user"
認証情報がない場合 — セットアップを案内する:
WeChat API credentials not found.
To obtain credentials:
1. Visit https://mp.weixin.qq.com
2. Go to: 开发 → 基本配置
3. Copy AppID and AppSecret
Where to save?
A) Project-level: .tuzi-skills/.env (this project only)
B) User-level: ~/.tuzi-skills/.env (all projects)
保存場所を選択した後、値を入力するよう求め、.env に書き込みます。
WECHAT_APP_ID=<user_input>
WECHAT_APP_SECRET=<user_input>
ステップ 3:テーマ/色の解決とメタデータの検証
-
テーマを解決します(最初に一致したものを使用します。解決できた場合、ユーザーに確認しないでください)。
- CLI の
--theme引数 - EXTEND.md の
default_theme(ステップ 0 で読み込み済み) - フォールバック:
default
- CLI の
-
色を解決します(最初に一致したものを使用します)。
- CLI の
--color引数 - EXTEND.md の
default_color(ステップ 0 で読み込み済み) - 設定されていない場合は省略します(テーマのデフォルトが適用されます)。
- CLI の
-
フロントマター(Markdown)または HTML の meta タグ(HTML 入力)からメタデータを検証します。
| フィールド | 欠落している場合 |
|---|---|
| タイトル | プロンプト:「タイトルを入力するか、Enter キーを押してコンテンツから自動生成してください」 |
| 概要 | プロンプト:「概要を入力するか、Enter キーを押して自動生成してください(SEO に推奨)」 |
| 著者 | 次の順でフォールバックします:CLI の --author → フロントマターの author → EXTEND.md の default_author |
自動生成ロジック:
- タイトル:最初の H1/H2 見出し、または最初の文
- 概要:最初の段落を 120 文字に切り詰めます
- カバー画像を確認します(API の
article_type=newsでは必須です)。- CLI の
--coverが指定されていれば使用します。 - それ以外の場合は、フロントマター(
coverImage、featureImage、cover、image)を使用します。 - それ以外の場合は、記事ディレクトリのデフォルトパス
imgs/cover.pngを確認します。 - それ以外の場合は、本文内で最初に見つかった画像を使用します。
- それでも見つからない場合は、公開前にカバー画像をリクエストして処理を停止します。
- CLI の
ステップ 4:WeChat に公開する
重要:公開スクリプトは Markdown の変換を内部で処理します。Markdown を事前に HTML に変換しないでください。元の Markdown ファイルを直接渡してください。これにより、API 方式では画像が <img> タグ(API アップロード用)としてレンダリングされ、ブラウザー方式ではプレースホルダー(貼り付け後に置き換えるワークフロー用)が使用されます。
API 方式(.md または .html を受け付けます):
npx -y bun ${SKILL_DIR}/scripts/wechat-api.ts <file> --theme <theme> [--color <color>] [--title <title>] [--summary <summary>] [--author <author>] [--cover <cover_path>]
重要:必ず --theme パラメーターを指定してください。default を使用する場合でも省略しないでください。--color は、ユーザーまたは EXTEND.md によって明示的に設定されている場合にのみ指定してください。
draft/add のペイロード規則:
- エンドポイントを使用します:
POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN article_type:news(デフォルト)またはnewspicnewsの場合は、thumb_media_idを含めます(カバー画像が必須です)。- 必ず解決して送信します:
need_open_comment(デフォルト1)only_fans_can_comment(デフォルト0)
authorの解決順:CLI の--author→ フロントマターのauthor→ EXTEND.md のdefault_author
スクリプトのパラメーターで 2 つのコメント関連フィールドを指定できない場合でも、最終的な API リクエスト本文に解決済みの値が含まれるようにしてください。
ブラウザー方式(--markdown または --html を受け付けます):
npx -y bun ${SKILL_DIR}/scripts/wechat-article.ts --markdown <markdown_file> --theme <theme> [--color <color>]
npx -y bun ${SKILL_DIR}/scripts/wechat-article.ts --html <html_file>
ステップ 5:完了レポート
API 方式の場合は、下書き管理リンクを含めます:
WeChat Publishing Complete!
Input: [type] - [path]
Method: API
Theme: [theme name] [color if set]
Article:
• Title: [title]
• Summary: [summary]
• Images: [N] inline images
• Comments: [open/closed], [fans-only/all users]
Result:
✓ Draft saved to WeChat Official Account
• media_id: [media_id]
Next Steps:
→ Manage drafts: https://mp.weixin.qq.com (登录后进入「内容管理」→「草稿箱」)
Files created:
[• post-to-wechat/yyyy-MM-dd/slug.md (if plain text)]
[• slug.html (converted)]
ブラウザー方式の場合:
WeChat Publishing Complete!
Input: [type] - [path]
Method: Browser
Theme: [theme name] [color if set]
Article:
• Title: [title]
• Summary: [summary]
• Images: [N] inline images
Result:
✓ Draft saved to WeChat Official Account
Files created:
[• post-to-wechat/yyyy-MM-dd/slug.md (if plain text)]
[• slug.html (converted)]
詳細リファレンス
| トピック | リファレンス |
|---|---|
| 画像とテキストのパラメーター、自動圧縮 | references/image-text-posting.md |
| 記事のテーマ、画像の処理 | references/article-posting.md |
機能比較
| 機能 | 画像とテキスト | 記事(API) | 記事(ブラウザー) |
|---|---|---|---|
| プレーンテキスト入力 | ✗ | ✓ | ✓ |
| HTML 入力 | ✗ | ✓ | ✓ |
| Markdown 入力 | タイトル/本文 | ✓ | ✓ |
| 複数画像 | ✓(最大 9 枚) | ✓(本文内) | ✓(本文内) |
| テーマ | ✗ | ✓ | ✓ |
| メタデータの自動生成 | ✗ | ✓ | ✓ |
カバー画像のデフォルトフォールバック(imgs/cover.png) | ✗ | ✓ | ✗ |
コメント制御(need_open_comment、only_fans_can_comment) | ✗ | ✓ | ✗ |
| Chrome が必要 | ✓ | ✗ | ✓ |
| API 認証情報が必要 | ✗ | ✓ | ✗ |
| 速度 | 中 | 高速 | 低速 |
前提条件
API 方式の場合:
- WeChat 公式アカウント API の認証情報
- ステップ 2 でガイドに従って設定するか、
.tuzi-skills/.envに手動で設定します
ブラウザー方式の場合:
- Google Chrome
- 初回実行時:WeChat 公式アカウントにログインします(セッションは保持されます)。
設定ファイルの場所(優先順位順):
- 環境変数
<cwd>/.tuzi-skills/.env~/.tuzi-skills/.env
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| API 認証情報がありません | ステップ 2 のガイド付きセットアップに従ってください |
| アクセストークンのエラー | API 認証情報が有効で、期限切れでないことを確認してください |
| ログインしていません(ブラウザー) | 初回起動時にブラウザーが開きます。QR コードをスキャンしてログインしてください |
| Chrome が見つかりません | WECHAT_BROWSER_CHROME_PATH 環境変数を設定してください |
| タイトル/概要がありません | 自動生成を使用するか、手動で入力してください |
| カバー画像がありません | frontmatter にカバー画像を指定するか、記事のディレクトリに imgs/cover.png を配置してください |
| コメントのデフォルト設定が違います | EXTEND.md のキー need_open_comment と only_fans_can_comment を確認してください |
| 貼り付けに失敗します | システムのクリップボード権限を確認してください |
拡張機能のサポート
EXTEND.md を使用してカスタム設定を行えます。パスとサポートされているオプションについては、設定のセクションを参照してください。