メインコンテンツへスキップ
注目 GitHub Actions Automation Claude API CI/CD Newsletter Social Media

GitHub Actions 自動化スイート:AI駆動のコミュニティ管理

上流リリースの監視、Claude APIによるコンテンツ生成、SNS投稿、ニュースレター配信、リポジトリ同期を実現する完全な自動化システムを構築。開発者コミュニティ向けの本番環境対応ワークフロー。

2026年1月16日 18 分で読める 著者:Claude World

テンプレートについて: この記事では、claude-world-examples リポジトリで利用可能な本番環境対応の GitHub Actions ワークフローを紹介します。これらのワークフローは、Claude API を使用した AI 駆動コミュニティ自動化の実践的なパターンを示しています。

開発者コミュニティの管理には多くの反復作業が伴います:上流プロジェクトの更新監視、アナウンスの作成、SNS 投稿、ニュースレター配信、ドキュメントの同期。これらすべてを自動化できたらどうでしょうか?

このガイドでは、Claude API を使用したインテリジェントなコンテンツ生成により、これらのワークフローを自律的に処理する完全な GitHub Actions 自動化スイート を紹介します。

なぜ自動化が重要なのか

手動のコミュニティ管理:
- 複数のリポジトリのリリースを監視
- リリースサマリーを作成
- Discord、X、Threads に投稿
- ニュースレター更新を送信
- サブモジュールを更新
- 変更ログをレビュー
- トラッキング Issue を作成
= 毎週数時間の反復作業

自動化されたコミュニティ管理:
- ワークフローがスケジュール実行
- Claude API がコンテンツを生成
- マルチプラットフォーム投稿
- ニュースレター自動化
- サブモジュール自動同期
- 変更ログ自動生成
- Issue 自動作成
= 毎週数分のレビューのみ

重要な知見:AI 生成コンテンツ + スケジュールワークフロー = スケーラブルなコミュニティ管理

スイートのアーキテクチャ

この自動化スイートは、相互接続された6つのワークフローで構成されています:

+-----------------------------------------------------------------------+
|                     スケジュールトリガー                                 |
+-----------------------------------------------------------------------+
|   release-monitor     blog-monitor        sync-upstream                |
|   (毎時)            (2時間ごと)        (毎日)                       |
|       |                   |                  |                         |
|       v                   v                  v                         |
|   +-------+           +-------+          +-------+                     |
|   |リリース|           |コンテンツ|        |サブモジ|                     |
|   |検出   |           |取得    |          |ュール更新|                   |
|   +---+---+           +---+---+          +---+---+                     |
|       |                   |                  |                         |
|       v                   v                  v                         |
|   +-------------------------------------------------------+            |
|   |              Claude API(コンテンツ生成)                |            |
|   |  - リリースサマリー    - 記事分析                        |            |
|   |  - 機能ハイライト      - ニュースレターコンテンツ          |            |
|   |  - SNS投稿           - 多言語出力                        |            |
|   +-------------------------------------------------------+            |
|       |                   |                  |                         |
|       v                   v                  v                         |
|   +-------+           +-------+          +-------+                     |
|   |Discord|           |記事   |          |Issue |                     |
|   |通知   |           |作成   |          |作成  |                     |
|   +-------+           +-------+          +-------+                     |
|                           |                                            |
|                           v                                            |
|                      +-----------+                                     |
|                      |social-post|(手動トリガー)                       |
|                      +-----+-----+                                     |
|                            |                                           |
|                      +-----+-----+                                     |
|                      v           v                                     |
|                   +-----+     +-------+                                |
|                   |  X  |     |Threads|                                |
|                   +-----+     +-------+                                |
+-----------------------------------------------------------------------+

+-----------------------------------------------------------------------+
|                      CI/CD パイプライン                                  |
+-----------------------------------------------------------------------+
|   main への Push/PR                                                    |
|       |                                                                |
|       v                                                                |
|   +------------------------------------------------------+             |
|   |                   ci.yml                              |             |
|   |  +----------+  +-------+  +------+  +---------+      |             |
|   |  | 設定     |  | ビルド |  | lint |  |  テスト  |      |             |
|   |  | 検証     |  |       |  |      |  |         |      |             |
|   |  +----------+  +-------+  +------+  +---------+      |             |
|   +------------------------------------------------------+             |
|       |                                                                |
|       v                                                                |
|   自動デプロイ(Cloudflare/Vercel/Netlify)                             |
+-----------------------------------------------------------------------+

ワークフロー 1: Release Monitor

Release Monitor は、上流リポジトリの新しいリリースを毎時チェックし、AI サマリーを生成して、コミュニティに通知します。

仕組み

  1. 取得: GitHub API で最新リリースをクエリ
  2. 比較: 前回確認したバージョンと比較
  3. 生成: Claude API で変更点をサマリー
  4. 通知: Discord に送信し、トラッキング Issue を作成
  5. 更新: 次回比較用に新バージョンを保存

主要な設定

name: Release Monitor

on:
  schedule:
    - cron: '0 * * * *'  # 毎時実行

env:
  REPO_TO_MONITOR: anthropics/claude-code
  VERSION_FILE: .github/last-known-version.txt
  CLAUDE_MODEL: claude-sonnet-4-20250514

Claude API 連携

ワークフローは Claude API を呼び出してリリースサマリーを生成します:

- name: Generate content with Claude API
  env:
    ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
  run: |
    PROMPT="You are a developer advocate. Summarize this release:
    Version: $VERSION
    Notes: $RELEASE_BODY

    Return JSON only:
    {\"summary\": \"One sentence summary\", \"features\": \"bullet list\"}"

    RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
      -H "Content-Type: application/json" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -d "{
        \"model\": \"$CLAUDE_MODEL\",
        \"max_tokens\": 1000,
        \"messages\": [{\"role\": \"user\", \"content\": $(echo "$PROMPT" | jq -Rs .)}]
      }")

Discord 通知

バージョン情報、サマリー、機能ハイライトを含むリッチ埋め込み:

- name: Send Discord notification
  run: |
    curl -X POST "$DISCORD_WEBHOOK_URL" \
      -H "Content-Type: application/json" \
      -d "{
        \"embeds\": [{
          \"title\": \"New Release: $VERSION\",
          \"description\": \"$SUMMARY\",
          \"url\": \"$RELEASE_URL\",
          \"color\": 5763719,
          \"fields\": [
            {\"name\": \"What's New\", \"value\": \"$FEATURES\"}
          ],
          \"timestamp\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"
        }]
      }"

なぜこれが重要なのか

  • リリースを見逃さない: 毎時チェックでタイムリーな通知を保証
  • 一貫したメッセージ: AI がプロフェッショナルなサマリーを生成
  • 手動作業の削減: リリースアナウンスの執筆が不要に
  • 監査証跡: GitHub Issues ですべてのリリースを追跡

ワークフロー 2: Blog Monitor

ウェブサイトの新規コンテンツを監視し、Claude で記事を分析し、コンテンツ作成をトリガーできます。

課題

多くの開発者コミュニティは以下の最新情報を追いたいと考えています:

  • 公式ブログ投稿
  • 変更ログの更新
  • ドキュメントの変更
  • パートナーからのアナウンス

これらのソースを手動でチェックするのは時間がかかり、見落としも発生しがちです。

ソリューションアーキテクチャ

name: Blog Monitor

on:
  schedule:
    - cron: '0 */2 * * *'  # 2時間ごと

env:
  BLOG_URL: https://example.com/blog
  TRACKING_FILE: .github/processed-articles.json

Claude によるコンテンツ分析

ワークフローは HTML を取得し、Claude に構造化データの抽出を依頼します:

const prompt = `
  Analyze this HTML and extract:
  - title
  - date (YYYY-MM-DD)
  - summary (2-3 sentences)
  - key_topics (array)

  HTML: ${articleHtml.substring(0, 10000)}

  Return JSON only.
`;

const response = await callClaude(prompt);
const parsed = JSON.parse(response);

記事の自動作成

新規コンテンツが検出されると、ワークフローは:

  1. Claude でメタデータを抽出
  2. Markdown 下書きファイルを作成
  3. トラッキングファイルを更新
  4. 変更を自動コミット
- name: Generate articles
  run: |
    echo "$ARTICLES" | jq -c '.[]' | while read -r article; do
      TITLE=$(echo "$article" | jq -r '.title')
      SLUG=$(echo "$article" | jq -r '.slug')

      cat > "content/articles/${SLUG}.md" << MARKDOWN
    ---
    title: "${TITLE}"
    description: "${SUMMARY}"
    ---
    MARKDOWN
    done

ワークフロー 3: Social Media Posting

X(Twitter)と Threads に、プラットフォームに最適化されたメッセージでコンテンツを投稿します。

マルチプラットフォームの課題

各プラットフォームには異なる特性があります:

  • 文字数制限(X: 280、Threads: 500)
  • トーンの期待値(X: 簡潔、Threads: 会話調)
  • ハッシュタグの慣習
  • オーディエンスの期待

AI 駆動の適応

Claude がプラットフォーム固有のバージョンを生成します:

const prompt = `
  Generate social media posts for this content:
  "${content}"

  ${langInstructions[lang]}

  Return JSON only:
  {
    "x": "Tweet under 280 chars. Include relevant hashtags.",
    "threads": "Threads post under 500 chars. More conversational tone."
  }
`;

多言語サポート

ワークフローは複数の言語をサポートしています:

workflow_dispatch:
  inputs:
    language:
      type: choice
      options:
        - en
        - zh-tw
        - ja

言語固有の指示により、文化的に適切なコンテンツを保証します:

const langInstructions = {
  en: 'Write in English.',
  'zh-tw': 'Use traditional Chinese.',
  ja: 'Write in Japanese.'
};

ドライランモード

投稿前にテスト:

dry_run:
  description: 'Dry run (no actual posting)'
  type: boolean
  default: false

これにより、テスト中の誤投稿を防ぎます。

ワークフロー 4: Newsletter Automation

多言語ニュースレターを自動生成・送信します。

トリガーオプション

on:
  # 自動:新リリース時
  release:
    types: [published]

  # 手動:定期ニュースレター用
  workflow_dispatch:
    inputs:
      action:
        type: choice
        options:
          - generate
          - send
          - generate-and-send

ニュースレター生成

Claude が複数言語で HTML ニュースレターを作成します:

const prompt = `
  Generate a newsletter email in ${language}.

  Context:
  - Version: ${VERSION}
  - Release: ${RELEASE_NAME}

  Generate an HTML email with:
  1. Greeting
  2. Main highlights (2-3 items)
  3. Quick tips section
  4. Call to action
  5. Footer with unsubscribe link: {{unsubscribe_url}}

  Use clean, minimal HTML styling.
`;

データベース連携

Supabase を使用した購読者管理:

const { data: subscribers } = await supabase
  .from('newsletter_subscribers')
  .select('id, email, preferred_language')
  .eq('confirmed', true)
  .is('unsubscribed_at', null);

Resend によるバッチ送信

言語別グループ化による効率的な送信:

for (const [lang, subs] of Object.entries(byLang)) {
  const batch = subs.map(sub => ({
    from: 'Newsletter <newsletter@example.com>',
    to: sub.email,
    subject: subjects[lang],
    html: newsletters[lang].replace(
      /\{\{unsubscribe_url\}\}/g,
      `https://example.com/unsubscribe?id=${sub.id}`
    )
  }));

  await resend.batch.send(batch);
}

ワークフロー 5: Upstream Sync

Git サブモジュールを最新に保ち、変更ログを生成します。

毎日の同期

on:
  schedule:
    - cron: '0 0 * * *'  # 毎日 UTC 0時

変更ログの生成

日付付きの変更ログファイルを自動作成します:

- name: Generate changelog
  run: |
    DATE=$(date +%Y-%m-%d)
    CHANGELOG_FILE=".github/upstream-changelog/${DATE}.md"

    echo "# Upstream Changes - ${DATE}" > $CHANGELOG_FILE

    for repo in $(git submodule foreach --quiet 'echo $path'); do
      cd $repo
      COMMITS=$(git log --oneline --since="7 days ago" | head -10)

      if [ -n "$COMMITS" ]; then
        echo "### $(basename $repo)" >> $CHANGELOG_FILE
        echo "$COMMITS" >> $CHANGELOG_FILE
      fi
      cd $GITHUB_WORKSPACE
    done

トラッキング Issue

変更が検出されると、レビュー用の Issue を作成します:

- name: Create tracking issue
  uses: actions/github-script@v7
  with:
    script: |
      await github.rest.issues.create({
        title: `Upstream Update - ${date}`,
        body: `## Upstream repositories updated

        ### Action Items
        - [ ] Review changes
        - [ ] Update if breaking changes
        - [ ] Test compatibility`,
        labels: ['upstream-update', 'needs-review']
      });

ワークフロー 6: CI/CD Pipeline

設定検証、ビルド、lint、テスト、デプロイを含む標準的な CI/CD パイプライン。

マルチジョブパイプライン

jobs:
  validate-config:
    # JSON/YAML ファイルの検証

  build:
    # キャッシュ付きビルド

  lint:
    # ESLint + Prettier

  test:
    # カバレッジ付きテスト実行

  security:
    # npm audit

  deploy:
    needs: [build, lint, test]
    if: github.ref == 'refs/heads/main'

設定検証

ビルド前に構文エラーをキャッチ:

- name: Validate JSON files
  run: |
    for json in $(find . -name "*.json" -not -path "./node_modules/*"); do
      python3 -c "import json; json.load(open('$json'))"
    done

- name: Validate YAML files
  run: |
    for yaml in $(find . -name "*.yml" -o -name "*.yaml"); do
      python3 -c "import yaml; yaml.safe_load(open('$yaml'))"
    done

キャッシュ

依存関係キャッシュによるビルド高速化:

- name: Cache dependencies
  uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-npm-

必要な Secrets

コア(必須)

Secret用途取得場所
ANTHROPIC_API_KEYコンテンツ生成用 Claude APIAnthropic Console

SNS(オプション)

Secret用途取得場所
X_API_KEYX/Twitter 投稿X Developer Portal
X_API_SECRETX/Twitter 投稿X Developer Portal
X_ACCESS_TOKENX/Twitter 投稿X Developer Portal
X_ACCESS_SECRETX/Twitter 投稿X Developer Portal
THREADS_USER_IDThreads 投稿Meta Developer
THREADS_ACCESS_TOKENThreads 投稿Meta Developer Portal

ニュースレター(オプション)

Secret用途取得場所
RESEND_API_KEYメール送信Resend
SUPABASE_URLデータベースSupabase
SUPABASE_SERVICE_KEYデータベース(管理者)Supabase Dashboard

通知(オプション)

Secret用途取得場所
DISCORD_WEBHOOK_URLDiscord 通知Server Settings > Integrations
SLACK_WEBHOOK_URLSlack 通知Slack App Settings

クイックスタート

# 1. すべてのワークフローをリポジトリにコピー
cp -r templates/github-actions-suite/*.yml .github/workflows/

# 2. GitHub Settings > Secrets で必要な Secrets を追加
# 最低限必要: ANTHROPIC_API_KEY

# 3. 用途に合わせてワークフローをカスタマイズ
# - release-monitor.yml の REPO_TO_MONITOR
# - blog-monitor.yml の BLOG_URL
# - 必要に応じて cron スケジュールを調整

ベストプラクティス

1. 機密データには Secrets を使用

API キーをハードコードしない:

env:
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

2. レート制限の実装

API 呼び出し間に遅延を追加:

- name: Wait between requests
  run: sleep 2

3. エラーを適切に処理

重要でないステップには continue-on-error を使用:

- name: Optional notification
  run: curl "$DISCORD_WEBHOOK_URL" ...
  continue-on-error: true

4. 最小限の権限を使用

必要な権限のみを指定:

permissions:
  contents: write
  pull-requests: write
  issues: write

5. コストを監視

Claude API 呼び出しにはコストがかかります。以下を検討:

  • シンプルなサマリーには claude-3-5-haiku を使用
  • max_tokens 制限を設定
  • 可能な場合はレスポンスをキャッシュ

カスタマイズ例

監視対象リポジトリの変更

env:
  REPO_TO_MONITOR: owner/repo  # 対象のリポジトリ

スケジュールの調整

on:
  schedule:
    - cron: '0 * * * *'    # 毎時
    - cron: '0 */2 * * *'  # 2時間ごと
    - cron: '0 0 * * *'    # 毎日 0時
    - cron: '0 0 * * 0'    # 毎週日曜

通知チャンネルの追加

- name: Slack notification
  run: |
    curl -X POST "$SLACK_WEBHOOK_URL" \
      -H "Content-Type: application/json" \
      -d '{"text": "New release: $VERSION"}'

実際の効果

この自動化スイートは、claude-world.com で使用されているパターンに基づいて設計されています:

指標導入前導入後
リリース監視手動チェック毎時自動
アナウンス作成各30分0分(AI 生成)
ニュースレター執筆2時間5分のレビュー
サブモジュール更新忘れがち毎日自動
SNS 投稿プラットフォームごとに手動ワンクリックでマルチプラットフォーム

はじめに

今日:

  1. ワークフローファイルをリポジトリにコピー
  2. ANTHROPIC_API_KEY Secret を追加
  3. workflow_dispatch でテスト

今週:

  1. リリース監視を設定
  2. Discord 通知をセットアップ
  3. ニュースレター生成をテスト

今月:

  1. SNS 連携を追加
  2. ブログ監視を有効化
  3. コンテンツ生成プロンプトを微調整

GitHub Actions 自動化スイートは、反復的なコミュニティ管理を自律的なワークフローに変換します。Claude API がインテリジェントなコンテンツ生成を提供し、GitHub Actions がスケジューリングとオーケストレーションを処理します。ルーティンワークは自動化に任せ、戦略とコミュニティエンゲージメントに集中しましょう。


リソース: