🔍
概念 #n8n #ユースケース #GraphQL #GitHub #API #Notion #Issue管理 📚 n8nワークフロー自動化

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.hasNextPageendCursor を使ったカーソルページネーションで実装する
  • GitHub PAT(Personal Access Token)は repo スコープが必要

関連機能

  1. 1. 🔄n8n概要 - ワークフロー自動化プラットフォーム
  2. 2. ⚙️n8nワークフローの基本(ノード・コネクション・実行)
  3. 3. n8nトリガーの種類(Webhook・スケジュール・イベント)
  4. 4. 🔀n8nロジック制御(フィルター・条件分岐・ループ・マージ)
  5. 5. 🌐n8n HTTP Request・API連携
  6. 6. 🔗n8n主要インテグレーション(Slack・Gmail・GitHub)
  7. 7. 🛡️n8nエラーハンドリング・デバッグ
  8. 8. 🤖n8n AI・LLMエージェント(Chain・Agent)
  9. 9. 💻n8n Codeノード・カスタム処理
  10. 10. 🏢n8nエンタープライズ機能(ソース管理・シークレット・チーム管理)
  11. 11. 🌤️毎朝SlackにAIで天気・ニュースを通知する
  12. 12. 📊GitHubのPRをGoogleシートに自動記録する
  13. 13. 📧新規ユーザー登録時にWelcomeメールを自動送信する
  14. 14. 💳StripeのWebhookで決済完了を検知して処理する
  15. 15. 📈スケジュールトリガーで週次レポートを自動生成する
  16. 16. 🎫Gmailトリガーでサポートメールを自動Notionチケット化する
  17. 17. 🎯条件分岐でリード属性に応じて担当者を振り分ける
  18. 18. 📨ループ処理でリストを走査し一括メール送信する
  19. 19. 📋複数APIのデータをマージして統合レポートを作成する
  20. 20. 🗄️外部REST APIからデータを取得してDBに保存する
  21. 21. 🔍GraphQL APIでGitHubのIssueを取得・加工する
  22. 22. 🔐Bearer認証付きAPIを呼び出してデータ同期する
  23. 23. SlackとNotionを連携したチームタスク管理フロー
  24. 24. 🤝GmailとHubSpotを連携したCRM自動化フロー
  25. 25. 🚀GitHubデプロイイベントをSlackに通知する
  26. 26. 🚨APIエラー発生時にSlackへアラートを送る
  27. 27. 🔁リトライ付きの堅牢なデータ同期フローを構築する
  28. 28. 📝エラーログをAirtableに自動記録する
  29. 29. 🤖LLMを使ったカスタマーサポート自動応答ボット
  30. 30. 🔎ドキュメントRAG検索システムを構築する
  31. 31. 📬AIでメール内容を自動分類・ルーティングする
  32. 32. 🔧JavaScriptで複雑なデータ変換処理を実装する
  33. 33. 📄npmライブラリを使ったPDF自動生成フロー
  34. 34. ✔️カスタムバリデーションロジックをCodeノードで実装する
  35. 35. 🗂️Gitでワークフローをバージョン管理する
  36. 36. 🌍環境変数で本番・ステージングを切り替える
  37. 37. 👥チームでのワークフロー共同管理フロー
  38. 38. 📋AIで履歴書を自動スクリーニング・スコアリングする
  39. 39. 🧾請求書PDFをOCRで自動データ入力・会計ソフト登録する
  40. 40. 📱ブログ記事→SNS自動投稿パイプラインを構築する
  41. 41. 📦Shopify注文処理を完全自動化する(在庫・配送・顧客通知)
  42. 42. 🔔予約リマインダーを自動送信してノーショーを削減する
  43. 43. 📊経営ダッシュボードを毎朝Slackに自動配信する
  44. 44. 🔭競合情報を自動収集してWeeklyレポートにまとめる
  45. 45. 🎉新入社員オンボーディングを完全自動化する

出典: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/