Clawdbot Trello Skill - Trello REST APIによるボード管理自動化
Clawdbot向けTrello Skillを利用して、Trello REST API経由でボード・リスト・カード操作を自動化する方法を解説します。
Clawdbotの公式Skillとして提供されているTrello Skillは、Trello REST APIを利用したボード・リスト・カード操作の自動化を可能にするツールである。本記事では、Trello Skillの技術仕様、API認証方法、主要機能、および実装例について解説する。
概要
Trello Skillは、Trello REST API v1を使用して、ボード(Board)、リスト(List)、カード(Card)の作成・読み取り・更新・削除(CRUD操作)を実行する機能を提供する。cURLコマンド経由でHTTPリクエストを送信し、JSON形式のレスポンスを処理する。
技術的には、Trello APIはOAuth 1.0aまたはAPIキー+トークンによる認証を使用し、すべてのリクエストにこれらの認証情報を付与する必要がある。レート制限は、APIキーあたり300リクエスト/10秒、トークンあたり100リクエスト/10秒、/1/membersエンドポイントは100リクエスト/900秒である。
技術的仕様
システム要件
- Trelloアカウント: 無料版またはBusiness Class/Enterprise(有料版)
- APIキー・トークン: Trello Developer Portalで発行
- 依存ツール:
curl(HTTP通信)、jq(JSON解析、オプション) - Clawdbot: バージョン不明(公式ドキュメントに記載なし)
API認証設定
APIキーとトークンの取得手順:
- https://trello.com/app-key にアクセス
- APIキーを取得(ページ上部に表示)
- “Token”リンクをクリックしてトークンを発行
- 認可画面で権限を確認(Read/Write/Account権限)
- 発行されたトークンを保存
環境変数への設定:
export TRELLO_API_KEY="your-api-key-here"
export TRELLO_TOKEN="your-token-here"
永続化(.bashrcまたは.zshrcに追記):
echo 'export TRELLO_API_KEY="your-api-key-here"' >> ~/.zshrc
echo 'export TRELLO_TOKEN="your-token-here"' >> ~/.zshrc
source ~/.zshrc
APIエンドポイント
Trello REST API v1の主要エンドポイント:
- ボード:
GET /1/members/me/boards,GET /1/boards/{id} - リスト:
GET /1/boards/{id}/lists,POST /1/lists - カード:
GET /1/lists/{id}/cards,POST /1/cards,PUT /1/cards/{id} - コメント:
POST /1/cards/{id}/actions/comments - メンバー:
GET /1/boards/{id}/members
ベースURL: https://api.trello.com
レート制限
- APIキー: 300リクエスト/10秒
- トークン: 100リクエスト/10秒
- メンバーエンドポイント(
/1/members): 100リクエスト/900秒(15分)
レート制限超過時のHTTPステータスコード: 429 Too Many Requests
主要機能
ボード一覧取得
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
出力例:
{
"name": "Project Alpha",
"id": "abc123def456"
}
{
"name": "Personal Tasks",
"id": "ghi789jkl012"
}
リスト一覧取得
特定ボードのリスト取得:
BOARD_ID="abc123def456"
curl -s "https://api.trello.com/1/boards/${BOARD_ID}/lists?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
出力例:
{
"name": "To Do",
"id": "list111"
}
{
"name": "In Progress",
"id": "list222"
}
{
"name": "Done",
"id": "list333"
}
カード一覧取得
特定リストのカード取得:
LIST_ID="list111"
curl -s "https://api.trello.com/1/lists/${LIST_ID}/cards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id, desc}'
出力例:
{
"name": "Implement feature X",
"id": "card123",
"desc": "Add user authentication"
}
カード作成
curl -s -X POST "https://api.trello.com/1/cards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "idList=list111" \
-d "name=Review pull request #42" \
-d "desc=Check security and performance"
パラメータ:
- idList: カードを追加するリストID(必須)
- name: カード名(必須)
- desc: カードの説明(オプション)
- due: 期限日(
2026-02-20形式、オプション) - idMembers: 担当者のメンバーID(カンマ区切り、オプション)
カード移動
別リストへの移動:
CARD_ID="card123"
NEW_LIST_ID="list222"
curl -s -X PUT "https://api.trello.com/1/cards/${CARD_ID}?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "idList=${NEW_LIST_ID}"
コメント追加
CARD_ID="card123"
curl -s -X POST "https://api.trello.com/1/cards/${CARD_ID}/actions/comments?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "text=Review completed. LGTM!"
カードアーカイブ
CARD_ID="card123"
curl -s -X PUT "https://api.trello.com/1/cards/${CARD_ID}?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "closed=true"
実装例
例1: GitHubプルリクエストからカード自動作成
#!/bin/bash
# github-pr-to-trello.sh
BOARD_ID="abc123def456"
LIST_ID="list111" # "To Review"リスト
# GitHub APIでプルリクエスト一覧取得
PRS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/myorg/myrepo/pulls?state=open")
# 各PRをTrelloカードに変換
echo "$PRS" | jq -r '.[] | "\(.title)|\(.html_url)|\(.body // "")"' | while IFS='|' read -r title url body; do
CARD_NAME="PR: $title"
CARD_DESC="$url\n\n$body"
curl -s -X POST "https://api.trello.com/1/cards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "idList=$LIST_ID" \
-d "name=$CARD_NAME" \
-d "desc=$CARD_DESC"
echo "カード作成: $CARD_NAME"
done
例2: 期限切れカードのアラート
// overdue-cards-alert.js
const axios = require('axios');
const API_KEY = process.env.TRELLO_API_KEY;
const TOKEN = process.env.TRELLO_TOKEN;
const BOARD_ID = 'abc123def456';
async function getOverdueCards() {
const url = `https://api.trello.com/1/boards/${BOARD_ID}/cards?key=${API_KEY}&token=${TOKEN}`;
const response = await axios.get(url);
const now = new Date();
const overdueCards = response.data.filter(card => {
if (!card.due) return false;
const dueDate = new Date(card.due);
return dueDate < now && !card.dueComplete;
});
if (overdueCards.length > 0) {
console.log(`期限切れカード: ${overdueCards.length}件`);
overdueCards.forEach(card => {
console.log(`- ${card.name} (期限: ${card.due})`);
});
// Discord通知(Clawdbot経由)
const { execSync } = require('child_process');
execSync(`clawdbot run 'message action:send target:channel:123456 message:"期限切れカード検出: ${overdueCards.length}件"'`);
} else {
console.log('期限切れカードなし');
}
}
getOverdueCards();
例3: カード自動移動(CI/CDステータス連動)
#!/bin/bash
# ci-status-update.sh
BUILD_STATUS="$1" # success/failure
CARD_ID="$2"
if [ "$BUILD_STATUS" = "success" ]; then
# "In Progress" → "Done"に移動
NEW_LIST_ID="list333"
COMMENT="ビルド成功。デプロイ準備完了。"
else
# "In Progress" → "To Do"に戻す
NEW_LIST_ID="list111"
COMMENT="ビルド失敗。修正が必要です。"
fi
# カード移動
curl -s -X PUT "https://api.trello.com/1/cards/${CARD_ID}?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "idList=$NEW_LIST_ID"
# コメント追加
curl -s -X POST "https://api.trello.com/1/cards/${CARD_ID}/actions/comments?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "text=$COMMENT"
echo "カード更新完了: $CARD_ID → $NEW_LIST_ID"
例4: 週次レポート自動生成
// weekly-report.js
const axios = require('axios');
const fs = require('fs');
const API_KEY = process.env.TRELLO_API_KEY;
const TOKEN = process.env.TRELLO_TOKEN;
const BOARD_ID = 'abc123def456';
async function generateWeeklyReport() {
const url = `https://api.trello.com/1/boards/${BOARD_ID}/cards?key=${API_KEY}&token=${TOKEN}`;
const response = await axios.get(url);
const cards = response.data;
const weekAgo = new Date();
weekAgo.setDate(weekAgo.getDate() - 7);
const completedThisWeek = cards.filter(card => {
if (!card.dateLastActivity) return false;
const activityDate = new Date(card.dateLastActivity);
return activityDate >= weekAgo && card.closed;
});
const report = `# 週次レポート (${weekAgo.toISOString().split('T')[0]} - ${new Date().toISOString().split('T')[0]})
## 完了タスク: ${completedThisWeek.length}件
${completedThisWeek.map(card => `- ${card.name}`).join('\n')}
## 進行中タスク: ${cards.filter(c => !c.closed).length}件
`;
fs.writeFileSync('weekly-report.md', report);
console.log('レポート生成完了: weekly-report.md');
}
generateWeeklyReport();
例5: ボード名検索とカード一括操作
#!/bin/bash
# search-and-archive.sh
SEARCH_QUERY="$1"
# ボード名で検索
BOARDS=$(curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN")
BOARD_ID=$(echo "$BOARDS" | jq -r ".[] | select(.name | contains(\"$SEARCH_QUERY\")) | .id" | head -1)
if [ -z "$BOARD_ID" ]; then
echo "ボードが見つかりません: $SEARCH_QUERY"
exit 1
fi
echo "ボード検出: $BOARD_ID"
# すべてのカード取得
CARDS=$(curl -s "https://api.trello.com/1/boards/${BOARD_ID}/cards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN")
# "Done"リストのカードをアーカイブ
DONE_LIST_ID=$(curl -s "https://api.trello.com/1/boards/${BOARD_ID}/lists?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq -r '.[] | select(.name == "Done") | .id')
echo "$CARDS" | jq -r ".[] | select(.idList == \"$DONE_LIST_ID\") | .id" | while read -r card_id; do
curl -s -X PUT "https://api.trello.com/1/cards/${card_id}?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
-d "closed=true"
echo "アーカイブ完了: $card_id"
done
ユースケース
ソフトウェア開発
- CI/CD連携: ビルド成功時にカード自動移動
- GitHub連携: プルリクエスト・Issueをカードに同期
- コードレビュー: レビュー依頼カードの自動生成
プロジェクト管理
- タスク自動生成: 定期タスク(週次ミーティング等)のカード作成
- 進捗レポート: 完了タスクの集計と週次レポート生成
- 期限管理: 期限切れカードの自動アラート
カスタマーサポート
- チケット管理: Zendesk/Intercomからのチケットをカード化
- エスカレーション: 優先度の高いカードをSlack通知
制限事項・セキュリティ考慮事項
制限事項
- レート制限: APIキー300リクエスト/10秒、トークン100リクエスト/10秒
- 大量操作時は遅延処理(
sleepコマンド)を挿入推奨
- 大量操作時は遅延処理(
- 認証情報の期限: トークンは無期限だが、セキュリティ上は定期的な再発行推奨
- 添付ファイル: REST APIでは添付ファイルのアップロードが複雑(マルチパートフォームデータ)
セキュリティ
-
APIキー・トークン保護:
- 環境変数または暗号化設定ファイルで管理
- ソースコードに直接記載禁止
.gitignoreで環境変数ファイルを除外
-
アクセス権限:
- トークン発行時に最小権限の原則(Read/Write/Account権限を個別選択)
- 不要なトークンは即座に無効化(https://trello.com/app-key で管理)
-
監査ログ:
- Trelloの監査ログでAPI操作履歴を確認(Enterprise版のみ)
ベストプラクティス
- エラーハンドリング: HTTPステータスコード確認(200, 401, 429等)
- 冪等性: カード作成前に重複チェック(名前・説明での検索)
- バッチ処理: 大量操作時はレート制限を考慮して遅延挿入
- ログ記録: API操作の実行ログを保存(トラブルシューティング用)
参考リンク
- Trello REST API Reference: https://developer.atlassian.com/cloud/trello/rest/
- Trello API Key取得: https://trello.com/app-key
- Trello Power-Ups(拡張機能): https://developer.atlassian.com/cloud/trello/power-ups/
- Clawdbot公式サイト: https://clawdbot.com
本記事の情報は2026年2月15日時点のものです。Trello REST APIの仕様やClawdbotのアップデートにより、機能や制限事項が変更される可能性があります。最新情報は各公式サイトをご確認ください。
関連記事
BlueBubbles Skill - ClawdbotでiMessageを統合
Clawdbot向けBlueBubbles Skillを利用して、Apple iMessageおよびSMS経由でのメッセージ送受信を実現する方法を解説します。
ClawdHub Skill - Clawdbotスキル管理を効率化
ClawdHub CLIを利用して、Clawdbotスキルの検索、インストール、更新、公開を効率化する方法を解説します。
Gemini Skill - ClawdbotでGoogle Gemini APIを活用
Clawdbot向けGemini Skillを利用して、Google Gemini APIをワンショットQ&A、要約、生成タスクに活用する方法を解説します。
人気記事
ChatGPT(OpenAI)とClaude(Anthropic)の機能比較 2026年版。コーディング・長文解析・コスト・API料金の違いを検証
ChatGPT(GPT-4o/o3)とClaude(Sonnet 4.6/Opus 4.5)を2026年時点の最新情報で比較する。コーディング能力、長文処理、日本語品質、API料金、無料プランの違いをSWE-benchなどのベンチマーク結果とともに解説する。
【2026年2月20日 所感】「AIがコードを書く」は仮説から現実になった——しかし私たちはその意味をまだ消化できていない
2026年2月20日に観測したコーディングエージェント関連ニュースの総括と所感。Anthropicの自律性研究、cmux、MJ Rathbunのエージェント事故、HN「外骨格 vs チーム」論争、Stripe Minions週1000件PR、Taalas 17k tokens/sec——朝から夜までの流れを通じて見えてきた「AIがコードを書く時代」の実相を考察する。
868のスキルをnpx 1コマンドで——「Antigravity Awesome Skills」が主要AIコーディングエージェントの共通スキル基盤になりつつある
Claude Code・Gemini CLI・Codex CLI・Cursor・GitHub Copilotなど主要AIコーディングアシスタントを横断する868以上のスキルライブラリ「Antigravity Awesome Skills」(v5.4.0)を詳細分析。Anthropic・Vercel・OpenAI・Supabase・Microsoftの公式スキルを統合した設計思想、ロール別バンドル・ワークフロー機能、SKILL.mdによる相互運用性のアーキテクチャを解説する。
最新記事
AIエージェント間通信の標準化競争が始まる——AquaとAgent Semantic Protocolが同日登場
2026年2月23日、Hacker Newsに2つのAIエージェント通信プロジェクトが同日掲載された。Go製CLI「Aqua」とセマンティックルーティングを実装する「Agent Semantic Protocol」は、MCPが解決できないP2P・非同期通信の課題に取り組む。
Claude Sonnet 4.6、無料・Proプランのデフォルトモデルに——社内テストでOpus 4.5を59%の確率で上回る
Anthropicは2026年2月17日にリリースしたClaude Sonnet 4.6を、claude.aiの無料・Proプランのデフォルトモデルに設定した。価格はSonnet 4.5と同額の$3/$15 per 1Mトークン。社内評価ではコーディングエージェント用途でOpus 4.5を上回る結果が出ている。
GoogleがOpenClaw経由のGemini利用ユーザーのアカウントを永久停止——月額$250請求継続のまま
2026年2月23日、Hacker Newsで140pt/107コメントを集めたレポートによると、GoogleはOpenClaw(サードパーティクライアント)経由でGeminiを使用していたGoogle AI Pro/Ultraユーザーを予告なしに永久停止した。技術的・経済的背景を整理する。