mcpField
W
wechat-publish-pipeline

wechat-publish-pipeline

github.com/buda-aiマーケティング・グロース5130 回インストール20 週間前に更新
リポジトリ

wechat-publish-pipeline について

WeChat Full Publish Pipeline は、技術トピックの調査から中国語のオリジナル記事執筆、挿絵、組版、WeChat の下書きボックスへの登録までを進めるスキルです。指定された Baoyu スキルを順に使い、各段階の進捗を報告します。

主な機能

  1. 01時事性のある技術トピックを選定
  2. 02資料を調査して中国語記事を執筆
  3. 03記事の挿絵とカバー画像を生成
  4. 04Markdown を組版済み HTML に変換
  5. 05記事を WeChat の下書きボックスに登録

活用シーン

  1. 01最近の技術トピックを記事の下書きにまとめる
  2. 02技術記事の挿絵を生成
  3. 03Markdown を WeChat 向けに組版
  4. 04記事を WeChat の下書きボックスに準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/buda-ai/buda-marketplace --skill wechat-publish-pipeline

インストール後、Claude Code で/wechat-publish-pipelineを入力して読み込まれたか確認します。

詳細

WeChat 全自動公開パイプライン

全自動モード:トピック選定から下書きボックスへの保存まで、中断なく実行します。指示を受けたら、以下の手順を順番に実行し、途中でユーザーに確認を求めません。

⚡ 進捗報告の規則(必ず実行)

各 Step の完了後、次の Step のツール呼び出しを開始する前に、まず報告メッセージを1行出力します。 メッセージと次のツール呼び出しは、同じ応答内で次の順序で行います。

[文字:✅ Step N 完成:...]
[工具调用:Step N+1 的第一个工具]

これは、ユーザーがリアルタイムで進捗を確認できる唯一の方法です。ユーザーの返信を待ったり、「このターンを終了して待機」したりせず、メッセージとツール呼び出しをまとめて送信します。

報告フォーマット:

✅ Step 0 完成:选题「{标题}」(HN {N} points)
✅ Step 1 完成:文章写好,{字数}字
✅ Step 2 完成:5张插图全部生成
✅ Step 3 完成:封面图生成
✅ Step 4 完成:排版完成
✅ Step 5 完成:已发布草稿箱,media_id: {id}

パイプラインの手順

Step 0: Topic Selection        (web-search + judgment)
Step 1: Research & Write       (url-to-markdown + translate + write)
Step 2: Article Illustrations  (baoyu-article-illustrator)
Step 3: Cover Image            (baoyu-imagine)
Step 4: Markdown → HTML        (baoyu-markdown-to-html)
Step 5: Publish to Draft Box   (baoyu-post-to-wechat API)

各手順の完了後、直ちにユーザーに進捗メッセージを送信します(上記の進捗報告の規則を参照)。


Step 0: トピック選定(自律的に選定)

完全に自律的に実行し、ユーザーには質問しません。

0.1 トレンド情報の収集

以下のソースを同時に検索し、直近24~48時間の内容を取得します。

- Hacker News 热榜 Top 20(https://news.ycombinator.com/best)
- GitHub Trending(https://github.com/trending)
- 如有必要:Twitter/X AI/tech 话题
0.2 選定基準

以下の条件を満たすトピックを優先します。

基準説明
関連性AI、開発ツール、技術トレンド、セキュリティインシデント、エンジニアリングの実践
速報性48時間以内に発生した出来事で、一次資料を確認できる
深掘りの可能性掘り下げられる技術的な詳細があり、単なるニュースの紹介ではない
読者との適合性技術系の公式アカウントの読者(エンジニア、AI 業界関係者)に適している
未執筆/agent/articles/ を確認し、トピックの重複を避ける
0.3 自律的な決定

候補の中から最も高得点のトピックを選び、選定理由を記録したら、候補一覧を提示したりフィードバックを待ったりせず、そのまま Step 1 に進みます。

📢 ✅ Step 0 完了:トピック「{タイトル}」(HN {N} points、ソース:{URL}) と出力し、同じ応答内ですぐに Step 1 のツール呼び出し(原文の取得)を開始します。


Step 1: 調査と執筆

1.1 一次資料の取得

baoyu-url-to-markdown を使って主要なソースページを取得します。

SKILL_DIR="/agent/wechat-agent-skills/skills/baoyu-url-to-markdown"
npx -y bun "$SKILL_DIR/scripts/main.ts" --url "{source_url}" --output /tmp/source.md

複数の重要なソース(原文とディスカッション投稿など)がある場合は、すべて取得します。

1.2 翻訳が必要な場合

原文が英語の場合は、baoyu-translate を使って内容の要点を丁寧に翻訳し、参考資料として使用します(翻訳文をそのまま公開しません)。

SKILL_DIR="/agent/wechat-agent-skills/skills/baoyu-translate"
npx -y bun "$SKILL_DIR/scripts/main.ts" /tmp/source.md --mode normal --to zh
1.3 オリジナル記事の執筆

記事のスタイル要件:

  • 一人称の視点(「あの日……」「まずは……から見ていきましょう」など)、または三人称の語り口で書く
  • 冒頭は具体的な場面や出来事で読者の関心を引き、「背景」から始めない
  • 構成を設ける:冒頭のフック → 中心となる出来事や概念 → 技術的な詳細 → 影響や意義 → 結び
  • 独自の見解を盛り込み、ニュースの単なる紹介にしない
  • コード例、データ、引用は正確にし、一次資料に基づくものにする
  • 長さ:2000~4000字
  • 言語:中国語

ファイル名と保存先:

/agent/articles/drafts/{slug}-{YYYY-MM-DD}.md

slug:記事のテーマをもとにした英語の kebab-case で、2~4語

Frontmatter:

---
title: 文章标题
date: YYYY-MM-DD
source: 原文URL
tags: [tag1, tag2]
digest: 文章摘要(≤15字,发布时传给微信)
---

概要の要件:

  • 15字以内
  • タイトルの言い換えではなく、中心となる出来事や結論を示す
  • 例:「AIサプライチェーンが侵害され、数千のアプリがひそかに影響を受ける」

📢 ✅ Step 1 完了:記事を執筆し、約 {字数} 字で {パス} に保存しました と出力し、同じ応答内ですぐに Step 2 のツール呼び出し(イラスト用プロンプトの作成)を開始します。


Step 2: 記事のイラスト

スキル:baoyu-article-illustrator

2.1 記事を分析し、イラストを計画

記事を読み、以下を判断します。

  • コンテンツの種類 → プリセットを選択
    • 技術/セキュリティ/AI → tech-explainer(infographic + blueprint)
    • 物語と技術の混在 → tech-explainer、重要な出来事には timeline タイプを使用
    • 方法論/フレームワーク → system-design
  • 密度:per-section(主要な各セクションに最低1枚)
  • {article-dir}/imgs/outline.md を作成

イラストに適した位置:

  • 記事の冒頭より前(タイムラインや全体概要)
  • 重要な技術的メカニズムの説明の後(フロー図/フレームワーク図)
  • データや比較のセクション(infographic/comparison)
  • 結論前のまとめ図
2.2 すべてのプロンプトファイルを作成(BLOCKING、生成前に必ずすべて作成)

{article-dir}/imgs/prompts/NN-{type}-{slug}.md に保存します。

プロンプトの品質要件:

  • Layout:全体の構図を説明する
  • ZONES:各領域の具体的な内容を記載し、曖昧な表現を避ける
  • LABELS:記事内の実際の数値/用語/引用を使用する
  • COLORS:16進数のカラーコードと意味を記載する
  • STYLE:技術/セキュリティ系には blueprint/dark/digital スタイルを使用する
  • ASPECT: 16:9

コンテンツ審査に関する安全規則(OpenAI のコンテンツポリシーへの抵触を避ける):

  • ❌ 「fork bomb」、「malware install」、「exploit」、「hack」、「kill process」
  • ✅ 行為や結果を説明する表現に変更します:「process multiplication」、「malicious payload」、「vulnerability abuse mechanism」
  • 画像が moderation_blocked によって拒否された場合は、技術用語ではなく行為を説明するようにプロンプトを書き換え、個別に再試行します。
2.3 一括生成

{article-dir}/imgs/batch.json を作成します。

{
  "jobs": 3,
  "tasks": [
    {
      "id": "01-slug",
      "promptFiles": ["prompts/01-type-slug.md"],
      "image": "01-type-slug.png",
      "provider": "openai",
      "model": "gpt-image-1",
      "ar": "16:9",
      "quality": "2k"
    }
  ]
}
cd {article-dir}/imgs
SKILL_DIR="/agent/wechat-agent-skills/skills/baoyu-imagine"
npx -y bun "$SKILL_DIR/scripts/main.ts" --batchfile batch.json --jobs 3
2.4 記事への挿入

各画像を対応する段落の後に挿入します。

![描述文字](imgs/NN-type-slug.png)

📢 ✅ Step 2 完了:5枚のイラストをすべて生成し、記事に挿入しました と出力し、同じ応答内ですぐに Step 3 のツール呼び出し(カバー画像の生成)を開始します。


Step 3: カバー画像

カバー画像は {article-dir}/imgs/cover.png に保存します(wechat-api.ts はデフォルトでこのパスを読み込みます)。

3.1 カバー画像用プロンプトの作成

{article-dir}/imgs/prompts/cover.md に保存します。

技術/AI 系の記事に適したカバー画像の設定:

  • type: conceptual
  • palette: dark
  • rendering: digital
  • 雰囲気:大胆で、コントラストが高い
  • 配色:濃いネイビーブルー/黒の背景に、電光のような赤橙色(脅威感)または青緑色(テクノロジー感)を組み合わせる
  • 文字を含めない(タイトルは WeChat 側に別途表示されます)
  • メインのビジュアル要素を記事のテーマに強く関連させる(汎用的なテクノロジー画像は避ける)
3.2 カバー画像の生成
cd {article-dir}/imgs
SKILL_DIR="/agent/wechat-agent-skills/skills/baoyu-imagine"
npx -y bun "$SKILL_DIR/scripts/main.ts" \
  --promptfiles "prompts/cover.md" \
  --image "cover.png" \
  --provider openai \
  --model gpt-image-1 \
  --ar 16:9 \
  --quality 2k

📢 ✅ Step 3 完了:カバー画像を生成しました と出力し、同じ応答内ですぐに Step 4 のツール呼び出し(レイアウト調整)を開始します。


Step 4: Markdown → HTML(レイアウト調整)

cd {article-dir}
SKILL_DIR="/agent/wechat-agent-skills/skills/baoyu-markdown-to-html"
npx -y bun "$SKILL_DIR/scripts/main.ts" {article-file} --theme grace --cite

デフォルト設定:

  • Theme: grace(上品で、技術系コンテンツに適しています)
  • --cite:外部リンクを末尾の参考文献に変換(WeChat に適しています)

出力 JSON の contentImages にすべてのイラストが含まれていることを確認してから、次に進みます。

📢 ✅ Step 4 完了:レイアウト調整が完了しました と出力し、同じ応答内ですぐに Step 5 のツール呼び出し(WeChat への公開)を開始します。


Step 5: WeChat の下書きボックスへの公開

cd {article-dir}
SKILL_DIR="/agent/wechat-agent-skills/skills/baoyu-post-to-wechat"
npx -y bun "$SKILL_DIR/scripts/wechat-api.ts" \
  {article-file} \
  --theme grace \
  --color blue \
  --cover imgs/cover.png

重要な注意事項:

  • .html ではなく .md ファイルを渡します(変換と画像のアップロードはスクリプト内で処理されます)
  • 画像は自動的に1MB未満の JPEG に圧縮してからアップロードされます
  • 成功すると media_id が返されます

📢 最終報告:✅ Step 5 完了:下書きボックスに公開しました。media_id: {media_id} を送信し、パイプラインを終了します。


初回実行時の環境確認

EXTEND.md の確認と自動作成
test -f "$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md" || mkdir -p "$HOME/.baoyu-skills/baoyu-article-illustrator" && cat > "$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md" << 'EOF'
---
version: 1
watermark:
  enabled: false
  content: ""
  position: bottom-right
  opacity: 0.7
preferred_style:
  name: null
  description: ""
default_output_dir: imgs-subdir
language: zh
custom_styles: []
---
EOF

test -f "$HOME/.baoyu-skills/baoyu-imagine/EXTEND.md" || mkdir -p "$HOME/.baoyu-skills/baoyu-imagine" && cat > "$HOME/.baoyu-skills/baoyu-imagine/EXTEND.md" << 'EOF'
---
version: 1
default_provider: openai
default_quality: 2k
default_aspect_ratio: null
default_image_size: null
default_model:
  google: null
  openai: gpt-image-1
  azure: null
  openrouter: null
  dashscope: null
  minimax: null
  replicate: null
---
EOF

test -f "$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md" || mkdir -p "$HOME/.baoyu-skills/baoyu-cover-image" && cat > "$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md" << 'EOF'
---
version: 1
watermark:
  enabled: false
  content: ""
  position: bottom-right
  opacity: 0.7
preferred_type: null
preferred_palette: null
preferred_rendering: null
preferred_text: title-only
preferred_mood: balanced
preferred_font: clean
default_aspect: 16:9
default_output_dir: imgs-subdir
quick_mode: false
language: zh
custom_palettes: []
---
EOF

test -f "$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md" || mkdir -p "$HOME/.baoyu-skills/baoyu-post-to-wechat" && cat > "$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md" << 'EOF'
default_theme: grace
default_color: blue
default_publish_method: api
default_author: 宝玉
need_open_comment: 1
only_fans_can_comment: 0
EOF
npm 依存関係の確認
ls /agent/skills/baoyu-skills/node_modules/jimp 2>/dev/null || \
  (cd /agent/skills/baoyu-skills && npm install jimp @jsquash/webp)

完了レポート

WeChat Full Pipeline Complete!

选题: [topic]
来源: [source URL]
文章: [article path]
插图: X 张
封面: imgs/cover.png
主题: grace + blue

✓ 已发布至公众号草稿箱
• media_id: [media_id]

→ 草稿箱: https://mp.weixin.qq.com(内容管理 → 草稿箱)

コメント