🔍
GraphQL APIでGitHubのIssueを取得・加工する
HTTP RequestノードでGitHub GraphQL APIを呼び出し、特定リポジトリのIssueを取得してNotionデータベースへ同期するワークフロー。
ユースケース概要
GitHub GraphQL APIでオープンなIssueを取得し、ラベル・優先度に応じてNotionのプロジェクトDBに同期する。GitHubの管理を維持しながらNotionでも俯瞰できる環境を作る。
解決する課題: エンジニア(GitHub)とビジネスチーム(Notion)が同じIssue情報を別々のツールで参照できる
使用するn8nノード:
- Schedule Trigger(定期同期)
- HTTP Request(GitHub GraphQL API)
- Loop Over Items(Issue一覧の処理)
- Notion(Issue sync)
ワークフロー構成
[Schedule Trigger: 毎時0分]
↓
[HTTP Request: GitHub GraphQL API]
↓
[Code: GraphQLレスポンスをflattenする]
↓
[Loop Over Items: Issue一覧]
└── [Notion: Database Item → Upsert]
実装手順
Step 1: GitHub GraphQL APIの呼び出し
Method: POST
URL: https://api.github.com/graphql
Headers:
Authorization: Bearer {{ $credentials.githubPat }}
Content-Type: application/json
Body (JSON):
{
"query": "query($owner: String!, $repo: String!, $cursor: String) { repository(owner: $owner, name: $repo) { issues(first: 50, after: $cursor, states: OPEN, orderBy: {field: UPDATED_AT, direction: DESC}) { pageInfo { endCursor hasNextPage } nodes { number title body state labels(first: 5) { nodes { name } } assignees(first: 3) { nodes { login } } createdAt updatedAt url } } } }",
"variables": {
"owner": "your-org",
"repo": "your-repo",
"cursor": null
}
}
Step 2: レスポンスのflatten処理(Codeノード)
GraphQLのネストされたレスポンスをitemの配列に展開する。
const issues = $json.data.repository.issues.nodes;
return issues.map(issue => ({
json: {
number: issue.number,
title: issue.title,
state: issue.state,
labels: issue.labels.nodes.map(l => l.name).join(', '),
assignees: issue.assignees.nodes.map(a => a.login).join(', '),
url: issue.url,
createdAt: issue.createdAt,
updatedAt: issue.updatedAt,
}
}));
Step 3: NotionへのUpsert
Operation: Database Item → Create (or Update if exists)
Database: GitHub Issues DB
Properties:
Issue番号: {{ $json.number }}
タイトル: {{ $json.title }}
ラベル: {{ $json.labels }}
担当者: {{ $json.assignees }}
GitHub URL: {{ $json.url }}
最終更新: {{ $json.updatedAt }}
ポイント・注意事項
- GitHub GraphQL APIはREST APIより柔軟にフィールドを指定できる。必要なフィールドだけを取得してレスポンスを小さくする
- ページネーションは
pageInfo.hasNextPageとendCursorを使ったカーソルページネーションで実装する - GitHub PAT(Personal Access Token)は
repoスコープが必要
関連機能
- 1. 🔄n8n概要 - ワークフロー自動化プラットフォーム
- 2. ⚙️n8nワークフローの基本(ノード・コネクション・実行)
- 3. ⚡n8nトリガーの種類(Webhook・スケジュール・イベント)
- 4. 🔀n8nロジック制御(フィルター・条件分岐・ループ・マージ)
- 5. 🌐n8n HTTP Request・API連携
- 6. 🔗n8n主要インテグレーション(Slack・Gmail・GitHub)
- 7. 🛡️n8nエラーハンドリング・デバッグ
- 8. 🤖n8n AI・LLMエージェント(Chain・Agent)
- 9. 💻n8n Codeノード・カスタム処理
- 10. 🏢n8nエンタープライズ機能(ソース管理・シークレット・チーム管理)
- 11. 🌤️毎朝SlackにAIで天気・ニュースを通知する
- 12. 📊GitHubのPRをGoogleシートに自動記録する
- 13. 📧新規ユーザー登録時にWelcomeメールを自動送信する
- 14. 💳StripeのWebhookで決済完了を検知して処理する
- 15. 📈スケジュールトリガーで週次レポートを自動生成する
- 16. 🎫Gmailトリガーでサポートメールを自動Notionチケット化する
- 17. 🎯条件分岐でリード属性に応じて担当者を振り分ける
- 18. 📨ループ処理でリストを走査し一括メール送信する
- 19. 📋複数APIのデータをマージして統合レポートを作成する
- 20. 🗄️外部REST APIからデータを取得してDBに保存する
- 21. 🔍GraphQL APIでGitHubのIssueを取得・加工する
- 22. 🔐Bearer認証付きAPIを呼び出してデータ同期する
- 23. ✅SlackとNotionを連携したチームタスク管理フロー
- 24. 🤝GmailとHubSpotを連携したCRM自動化フロー
- 25. 🚀GitHubデプロイイベントをSlackに通知する
- 26. 🚨APIエラー発生時にSlackへアラートを送る
- 27. 🔁リトライ付きの堅牢なデータ同期フローを構築する
- 28. 📝エラーログをAirtableに自動記録する
- 29. 🤖LLMを使ったカスタマーサポート自動応答ボット
- 30. 🔎ドキュメントRAG検索システムを構築する
- 31. 📬AIでメール内容を自動分類・ルーティングする
- 32. 🔧JavaScriptで複雑なデータ変換処理を実装する
- 33. 📄npmライブラリを使ったPDF自動生成フロー
- 34. ✔️カスタムバリデーションロジックをCodeノードで実装する
- 35. 🗂️Gitでワークフローをバージョン管理する
- 36. 🌍環境変数で本番・ステージングを切り替える
- 37. 👥チームでのワークフロー共同管理フロー
- 38. 📋AIで履歴書を自動スクリーニング・スコアリングする
- 39. 🧾請求書PDFをOCRで自動データ入力・会計ソフト登録する
- 40. 📱ブログ記事→SNS自動投稿パイプラインを構築する
- 41. 📦Shopify注文処理を完全自動化する(在庫・配送・顧客通知)
- 42. 🔔予約リマインダーを自動送信してノーショーを削減する
- 43. 📊経営ダッシュボードを毎朝Slackに自動配信する
- 44. 🔭競合情報を自動収集してWeeklyレポートにまとめる
- 45. 🎉新入社員オンボーディングを完全自動化する
出典: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/