跳至主要內容
精選 GitHub Actions Automation Claude API CI/CD Newsletter Social Media

GitHub Actions 自動化套件:AI 驅動的社群管理

建立完整的自動化系統,監控上游版本發布、使用 Claude API 生成內容、發布到社群媒體、發送電子報,並保持程式碼庫同步。適用於開發者社群的生產級工作流程。

2026年1月16日 18 分鐘閱讀 作者:Claude World

範本說明: 本文記錄的生產級 GitHub Actions 工作流程可在我們的 claude-world-examples 儲存庫中取得。這些工作流程展示了使用 Claude API 進行 AI 驅動社群自動化的實際模式。

管理開發者社群涉及許多重複性任務:監控上游專案更新、建立公告、發布到社群媒體、發送電子報,以及保持文件同步。如果這一切都能自動化呢?

本指南介紹一套完整的 GitHub Actions 自動化套件,使用 Claude API 進行智慧內容生成,自主處理這些工作流程。

為什麼自動化很重要

手動社群管理:
- 監控多個 repo 的版本發布
- 撰寫版本摘要
- 發布到 Discord、X、Threads
- 發送電子報更新
- 保持 submodules 更新
- 審查變更日誌
- 建立追蹤 issue
= 每週數小時的重複工作

自動化社群管理:
- 工作流程按排程執行
- Claude API 生成內容
- 多平台發布
- 電子報自動化
- Submodules 自動同步
- 變更日誌自動生成
- Issue 自動建立
= 每週只需幾分鐘審查

關鍵洞見:AI 生成內容 + 排程工作流程 = 可擴展的社群管理

套件架構

自動化套件由六個相互連接的工作流程組成:

+-----------------------------------------------------------------------+
|                     排程觸發器                                          |
+-----------------------------------------------------------------------+
|   release-monitor     blog-monitor        sync-upstream                |
|   (每小時)            (每 2 小時)          (每日)                        |
|       |                   |                  |                         |
|       v                   v                  v                         |
|   +-------+           +-------+          +-------+                     |
|   |偵測   |           |抓取   |          |更新   |                     |
|   |版本   |           |內容   |          |Submod |                     |
|   +---+---+           +---+---+          +---+---+                     |
|       |                   |                  |                         |
|       v                   v                  v                         |
|   +-------------------------------------------------------+            |
|   |              Claude API(內容生成)                     |            |
|   |  - 版本摘要          - 文章分析                         |            |
|   |  - 功能重點          - 電子報內容                       |            |
|   |  - 社群貼文          - 多語言輸出                       |            |
|   +-------------------------------------------------------+            |
|       |                   |                  |                         |
|       v                   v                  v                         |
|   +-------+           +-------+          +-------+                     |
|   |通知   |           |建立   |          |建立   |                     |
|   |Discord|           |文章   |          |Issue  |                     |
|   +-------+           +-------+          +-------+                     |
|                           |                                            |
|                           v                                            |
|                      +-----------+                                     |
|                      |social-post| (手動觸發)                          |
|                      +-----+-----+                                     |
|                            |                                           |
|                      +-----+-----+                                     |
|                      v           v                                     |
|                   +-----+     +-------+                                |
|                   |  X  |     |Threads|                                |
|                   +-----+     +-------+                                |
+-----------------------------------------------------------------------+

+-----------------------------------------------------------------------+
|                      CI/CD 流程                                        |
+-----------------------------------------------------------------------+
|   Push/PR 到 main                                                      |
|       |                                                                |
|       v                                                                |
|   +------------------------------------------------------+             |
|   |                   ci.yml                              |             |
|   |  +----------+  +-------+  +------+  +---------+      |             |
|   |  | 驗證     |  | 建置  |  | lint |  |  測試   |      |             |
|   |  | config   |  |       |  |      |  |         |      |             |
|   |  +----------+  +-------+  +------+  +---------+      |             |
|   +------------------------------------------------------+             |
|       |                                                                |
|       v                                                                |
|   自動部署(Cloudflare/Vercel/Netlify)                                  |
+-----------------------------------------------------------------------+

工作流程 1:版本監控

版本監控每小時檢查上游儲存庫的新版本,生成 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:部落格監控

監控網站的新內容,使用 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:社群媒體發布

發布內容到 X(Twitter)和 Threads,並針對各平台最佳化訊息。

多平台挑戰

每個平台有不同的:

  • 字數限制(X:280,Threads:500)
  • 語調期望(X:簡潔,Threads:對話式)
  • Hashtag 慣例
  • 受眾期望

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:電子報自動化

自動生成並發送多語言電子報。

觸發選項

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:上游同步

保持 git submodules 更新並生成變更日誌。

每日同步

on:
  schedule:
    - cron: '0 0 * * *'  # 每日 UTC 午夜

變更日誌生成

自動建立帶日期的變更日誌檔案:

- 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

追蹤 Issues

當偵測到變更時建立 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 流程

標準 CI/CD,包含配置驗證、建置、lint、測試和部署。

多工作流程

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

社群媒體(選用)

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. 複製所有工作流程到你的 repo
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  # 你的目標 repo

調整排程

on:
  schedule:
    - cron: '0 * * * *'    # 每小時
    - cron: '0 */2 * * *'  # 每 2 小時
    - cron: '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 分鐘審查
Submodule 更新常被遺忘每日自動
社群發布每個平台手動一鍵多平台

開始使用

今天:

  1. 複製工作流程檔案到你的 repo
  2. 新增 ANTHROPIC_API_KEY secret
  3. 使用 workflow_dispatch 測試

本週:

  1. 配置版本監控
  2. 設定 Discord 通知
  3. 測試電子報生成

本月:

  1. 新增社群媒體整合
  2. 啟用部落格監控
  3. 微調內容生成 prompts

GitHub Actions 自動化套件將重複的社群管理轉變為自主工作流程。Claude API 提供智慧內容生成,而 GitHub Actions 處理排程和編排。專注於策略和社群互動,讓自動化處理例行工作。


資源: