mcpField
W
WeChat Publish Pipeline

WeChat Publish Pipeline

github.com/casperliu7マーケティング・グロース044 回インストール18 週間前に更新
リポジトリ

WeChat Publish Pipeline について

WeChat Publish Pipeline は、技術系のWeChat記事を作成する自動化スキルです。話題選び、調査、執筆、画像作成、整形から下書きの登録までを順に行い、各工程の後に進捗を報告します。

主な機能

  1. 01最近の技術トピックを選定
  2. 02資料を調査して中国語記事を執筆
  3. 03記事画像とカバーを計画・生成
  4. 04MarkdownをHTMLに変換して下書きを登録
  5. 05各工程の進捗を報告

活用シーン

  1. 01最近のAIや開発トピックをWeChat記事にする
  2. 02技術記事の挿絵とカバーを作成
  3. 03Markdown記事を整形してWeChatの下書きに登録

インストール

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

$npx skills add https://github.com/casperliu7/small-company-agent --skill wechat-publish-pipeline

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

同梱ファイルREADME.md

詳細

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(内容管理 → 草稿箱)

コメント