GitHub Actions 自動化套件:AI 驅動的社群管理
建立完整的自動化系統,監控上游版本發布、使用 Claude API 生成內容、發布到社群媒體、發送電子報,並保持程式碼庫同步。適用於開發者社群的生產級工作流程。
範本說明: 本文記錄的生產級 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 摘要,並通知你的社群。
運作方式
- 抓取:查詢 GitHub API 取得最新版本
- 比較:與上次已知版本比對
- 生成:使用 Claude API 摘要變更
- 通知:發送到 Discord 並建立追蹤 issue
- 更新:儲存新版本供下次比對
關鍵配置
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);
自動建立文章
當偵測到新內容時,工作流程會:
- 使用 Claude 提取中繼資料
- 建立 markdown 草稿檔案
- 更新追蹤檔案
- 自動提交變更
- 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 API | Anthropic Console |
社群媒體(選用)
| Secret | 用途 | 取得位置 |
|---|---|---|
X_API_KEY | X/Twitter 發布 | X Developer Portal |
X_API_SECRET | X/Twitter 發布 | X Developer Portal |
X_ACCESS_TOKEN | X/Twitter 發布 | X Developer Portal |
X_ACCESS_SECRET | X/Twitter 發布 | X Developer Portal |
THREADS_USER_ID | Threads 發布 | Meta Developer |
THREADS_ACCESS_TOKEN | Threads 發布 | Meta Developer Portal |
電子報(選用)
| Secret | 用途 | 取得位置 |
|---|---|---|
RESEND_API_KEY | 發送郵件 | Resend |
SUPABASE_URL | 資料庫 | Supabase |
SUPABASE_SERVICE_KEY | 資料庫(管理員) | Supabase Dashboard |
通知(選用)
| Secret | 用途 | 取得位置 |
|---|---|---|
DISCORD_WEBHOOK_URL | Discord 通知 | Server Settings > Integrations |
SLACK_WEBHOOK_URL | Slack 通知 | 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 更新 | 常被遺忘 | 每日自動 |
| 社群發布 | 每個平台手動 | 一鍵多平台 |
開始使用
今天:
- 複製工作流程檔案到你的 repo
- 新增
ANTHROPIC_API_KEYsecret - 使用
workflow_dispatch測試
本週:
- 配置版本監控
- 設定 Discord 通知
- 測試電子報生成
本月:
- 新增社群媒體整合
- 啟用部落格監控
- 微調內容生成 prompts
GitHub Actions 自動化套件將重複的社群管理轉變為自主工作流程。Claude API 提供智慧內容生成,而 GitHub Actions 處理排程和編排。專注於策略和社群互動,讓自動化處理例行工作。
資源:
- GitHub Actions 文件 - GitHub 的 CI/CD 平台
- Claude API 文件 - Anthropic 的 API 參考
- Cron 語法產生器 - 排程的好幫手
- claude-world-examples 儲存庫 - 範本檔案