AIエージェントGitHub burning out検出器
中級
これは自動化ワークフローで、13個のノードを含みます。主にSet, Code, Github, GmailTool, GithubToolなどのノードを使用。 Groq AIを使ってGitHubのアクティビティを分析し、チームの burnout を検出し、ヘルスレポートを生成する
前提条件
- •GitHub Personal Access Token
- •Googleアカウント + Gmail API認証情報
- •ターゲットAPIの認証情報が必要な場合あり
カテゴリー
-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "Th6oymAWb3801GGM",
"meta": {
"instanceId": "e93a01df1c52af0d5a5bffda998d2d45d3e65e41e9b02e756e368c852da9b80b"
},
"name": "ai agent github burnout detector",
"tags": [
{
"id": "Tqphal8U1xgK62Ru",
"name": "burnout-detector",
"createdAt": "2025-10-11T15:33:02.359Z",
"updatedAt": "2025-10-11T15:33:02.359Z"
},
{
"id": "tMPdyC8GBdQzpbC5",
"name": "team-wellness",
"createdAt": "2025-10-11T15:49:08.958Z",
"updatedAt": "2025-10-11T15:49:08.958Z"
}
],
"nodes": [
{
"id": "ce1eaca0-50f9-49de-a865-51c602300439",
"name": "Get Prs",
"type": "n8n-nodes-base.github",
"position": [
1104,
-176
],
"webhookId": "1a85b560-3afe-49b9-89be-65f0e0b6922d",
"parameters": {
"owner": {
"__rl": true,
"mode": "url",
"value": "=https://github.com/{{ $('Config').first().json.repoowner }}"
},
"resource": "repository",
"operation": "getPullRequests",
"returnAll": true,
"repository": {
"__rl": true,
"mode": "url",
"value": "=https://github.com/{{ $('Config').first().json.repoowner }}/{{ $('Config').first().json.reponame }}"
},
"getRepositoryPullRequestsFilters": {
"state": "all",
"direction": "desc"
}
},
"credentials": {
"githubApi": {
"id": "OWMEIJM53SaS58Kt",
"name": "GitHub account"
}
},
"typeVersion": 1.1,
"alwaysOutputData": true
},
{
"id": "799820e9-9d39-4300-9c90-31a35c953e1c",
"name": "Config",
"type": "n8n-nodes-base.set",
"position": [
592,
-176
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "{\n \"repoowner\": \"suarifymy\",\n \"reponame\": \"adk-samples\",\n \"period\":7,\n \"emailreport\": \"aiix.space.noreply@gmail.com\"\n}\n"
},
"typeVersion": 3.3
},
{
"id": "15e831a2-2321-488f-856a-875c3389f96e",
"name": "AI エージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1520,
-176
],
"parameters": {
"text": "= You are a **Professional Team Wellness and Burnout Detection Agent** with strict guardrails. \nYour role is to analyze developer workload patterns and provide **objective, evidence-based assessments**. \n\n### Core Rules\n1. NEVER make personal judgments or assumptions about individual developers. \n2. ONLY analyze observable patterns in code activity data. \n3. ALWAYS provide evidence-based reasoning for all assessments. \n4. NEVER suggest disciplinary actions or performance reviews. \n5. FOCUS on systemic issues and team-level recommendations. \n6. ALWAYS include confidence scores and data limitations. \n7. RESPECT privacy and confidentiality of team members. \n8. PROVIDE actionable, constructive recommendations only. \n9. AVOID alarmist language—use a professional, measured tone. \n10. ALWAYS structure responses with clear sections and evidence. \n\n### Tools Available\n1. **Update GitHub Issue** → Create or update issues for tracking team wellness concerns. \n2. **Email Tool** → Send urgent notifications to team leads. \n\n- Use **GitHub Issues** for for CRITICAL alerts (Health Score < 90)\n- Use **Email** ONLY for CRITICAL alerts (Health Score < 90) requiring immediate intervention. \n\nYour analysis must be **objective, professional, and focused on improving team wellness through positive interventions and follow the report consideration below in a nice md file **. Always update github issues tool.\n\n\noutput report considerations.Please do redaction on any name.\n \noutput html report examples\n```\n# 📊 Team Health Report\n\n\n👩💻 Team Activity Snapshot\n📊 Overall Summary\n- Total commits: 6\n- Pull requests opened: 1\n- Workflows run: 1\n- Late‑night commits: 3\n- Weekend commits: 2\n- Failed workflows: 0 ✅\nThe team is keeping activity light this cycle, with a few late‑night pushes and some weekend work showing up.\n\n👥 Developer Activity Breakdown\n- sean\n- Commits: 2\n- Late‑night: 0\n- Weekend: 2 🌙 (notable weekend activity)\n- Ara SAMAD\n- Commits: 3\n- Late‑night: 3 🌙🌙🌙 (all commits after hours)\n- Weekend: 0\n- wzss088\n- Commits: 1\n- Late‑night: 0\n- Weekend: 0\n\n\n\n## 📝 Summary\nOverall, the team is maintaining a healthy delivery pace, but there are emerging signs of workload imbalance due to increased after-hours activity.\n\n---\n\n## 🔢 Health Score\n- **Value:** 68 / 100 \n- **Confidence:** 87% \n- **Limitations:** Based solely on commit and PR activity; meeting load and non-code tasks not captured.\n\n---\n\n## 🔍 Observed Patterns\n- ⏰ **After-hours activity** \n - 29% of commits occurred between 10pm–1am (baseline: 12%). \n - Confidence: 0.90 \n\n- 📈 **Weekend workload** \n - Weekend commits increased by 35% compared to the previous month. \n - Confidence: 0.82 \n\n- 🤝 **Collaboration bottleneck** \n - PR review turnaround time increased from 6h → 18h. \n - Confidence: 0.78 \n\n---\n\n## ⚠️ Systemic Risks\n- Sustained after-hours work may indicate creeping burnout risk. \n - Evidence: 3 consecutive weeks of elevated late-night commits. \n - Confidence: 0.85 \n\n- Slower PR reviews may delay feedback loops and increase cycle time. \n - Evidence: Median cycle time rose from 2.1 days → 3.4 days. \n - Confidence: 0.80 \n\n---\n\n## ✅ Recommendations\n- 📌 Facilitate a team discussion on workload distribution and sprint commitments. *(Priority: Medium)* \n- 🔔 Introduce automated nudges discouraging late-night commits. *(Priority: Low)* \n- 🛠️ Rotate PR review responsibilities or adopt lightweight review guidelines. *(Priority: High)* \n\n--- \n```\nPLease use the tool to send report. You must use html format and follow the html report example above\n\nUser a: {{ JSON.stringify( $('Analyze Patterns Developer').first().json )}}",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "ce574d0d-76e2-4c6c-b1ab-850aa544e8cc",
"name": "Groq Chat Model Report",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
1376,
160
],
"parameters": {
"model": "openai/gpt-oss-120b",
"options": {}
},
"credentials": {
"groqApi": {
"id": "myslm11JTfGc28Kr",
"name": "Groq account"
}
},
"typeVersion": 1
},
{
"id": "76fd974d-f101-45d0-afcf-4a4ed9c6b3b8",
"name": "Send a message in Gmail",
"type": "n8n-nodes-base.gmailTool",
"position": [
1744,
160
],
"webhookId": "13fd9a8a-dcd7-4602-9f77-c22edc2dbcab",
"parameters": {
"sendTo": "={{ $('Config').first().json.emailreport }}",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {
"appendAttribution": false
},
"subject": " 📊 Team Health and Wellness Report",
"descriptionType": "manual",
"toolDescription": "Update reports to stakeholder via email"
},
"credentials": {
"gmailOAuth2": {
"id": "1mQ36iw0MWrsb0cL",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "df7238d2-665d-4da6-aa96-5f430ed04d14",
"name": "操作なし, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
1872,
-176
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e71ac601-0698-49f4-a220-e1c3d2fa60ba",
"name": "Analyze Patterns Developer",
"type": "n8n-nodes-base.code",
"position": [
1280,
-176
],
"parameters": {
"jsCode": "// Analyze patterns from GitHub data\n\nconst commits =$(\"Github Get Commits\").all();\nconst pullRequests = $('Get Prs').all();\nconst workflows = $(\"Github Get Workflows\").all();\nconst analysisPeriod =$('Config').first().json.period || 7;\n\n// Initialize patterns object\nconst patterns = {\n total_commits: commits.length,\n total_prs: pullRequests.length,\n total_workflows: workflows.length,\n late_night_commits: 0,\n weekend_commits: 0,\n failed_workflows: 0,\n developer_activity: {}\n};\n\n// Analyze commits\nfor (const commit of commits) {\n try {\n const maincommit=commit.json.commit\n const commitTime = new Date(maincommit.author.date);\n const hour = commitTime.getHours();\n const weekday = commitTime.getDay();\n const author = maincommit.author.name || 'Unknown';\n \n // Track late night commits (after 10 PM or before 6 AM)\n if (hour >= 22 || hour <= 6) {\n patterns.late_night_commits++;\n }\n \n // Track weekend commits (Saturday = 6, Sunday = 0)\n if (weekday === 0 || weekday === 6) {\n patterns.weekend_commits++;\n }\n \n // Track per-developer activity\n if (!patterns.developer_activity[author]) {\n patterns.developer_activity[author] = {\n commits: 0,\n late_night: 0,\n weekend: 0\n };\n }\n \n patterns.developer_activity[author].commits++;\n if (hour >= 22 || hour <= 6) {\n patterns.developer_activity[author].late_night++;\n }\n if (weekday === 0 || weekday === 6) {\n patterns.developer_activity[author].weekend++;\n }\n } catch (e) {\n console.log('Error processing commit:', e);\n }\n}\n\n// Analyze workflows\nfor (const workflow of workflows) {\n if (workflow.conclusion === 'failure') {\n patterns.failed_workflows++;\n }\n}\n\n// Calculate rates\nconst failureRate = (patterns.failed_workflows / Math.max(patterns.total_workflows, 1)) * 100;\nconst lateNightRate = (patterns.late_night_commits / Math.max(patterns.total_commits, 1)) * 100;\nconst weekendRate = (patterns.weekend_commits / Math.max(patterns.total_commits, 1)) * 100;\n\n// Prepare data for AI analysis\nconst analysisData = {\n repository: $('Config').first().json.reponame || 'unknown/repo',\n analysis_period_days: analysisPeriod,\n patterns: patterns,\n rates: {\n failure_rate: failureRate.toFixed(1),\n late_night_rate: lateNightRate.toFixed(1),\n weekend_rate: weekendRate.toFixed(1)\n },\n raw_data: {\n // commits: commits,\n // pull_requests: pullRequests,\n // workflows: workflows\n }\n};\n\nreturn [{\n json: analysisData\n}];"
},
"typeVersion": 2
},
{
"id": "0ce251fc-69de-4b91-ae36-bf1f92e8ed59",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-256
],
"parameters": {
"color": 4,
"width": 1952,
"height": 624,
"content": " "
},
"typeVersion": 1
},
{
"id": "3f33cf1e-7011-4a0e-b550-58be70d6ee16",
"name": "付箋15",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
-256
],
"parameters": {
"color": 4,
"width": 580,
"height": 624,
"content": "# Team-Wellness : AI Burnout Detector Agent [devex]\n\n## Demo \n* [github action code alternative ]( https://github.com/suarifymy/adk-samples/blob/main/.github/workflows/devex-ai-burnout-detector.yml)\n* [sample report ](https://github.com/suarifymy/adk-samples/issues/1/)\n \n\n## How it works \nPeriodically, there will be a job to fetch GitHub Commits , PRs, Active Flows. Then the llm ai agent analyzes total comits, late night commits, weekend commmits , failed workflow and developer's activity and work intensity patterns. Lastly, creates a github issues and sends an email\n\n \n## Setup\n - Follow setup link [n8n-github-account-setup](\nhttps://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.github/) , [n8n-groq-setup](https://docs.n8n.io/integrations/builtin/credentials/groq/) ,[n8n-gmail-setup](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/) \n- Change the `config` node"
},
"typeVersion": 1
},
{
"id": "5be57b6b-349f-48a3-aa10-5552799a8ac2",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
352,
-176
],
"parameters": {
"rule": {
"interval": [
{
"daysInterval": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "4f6b2323-c3d1-49ce-9a37-616bccf907cc",
"name": "Github Get Commits",
"type": "n8n-nodes-base.httpRequest",
"position": [
944,
-176
],
"parameters": {
"url": "=https://api.github.com/repos/{{ $('Config').first().json.repoowner }}/{{ $('Config').first().json.reponame }}/commits",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "created",
"value": "={{ $now.minus({ days: $json.period || 7 }).toISO() }}..*"
}
]
},
"nodeCredentialType": "githubApi"
},
"credentials": {
"githubApi": {
"id": "OWMEIJM53SaS58Kt",
"name": "GitHub account"
}
},
"typeVersion": 4.2
},
{
"id": "fb1996f6-35dd-4567-89fc-29c77716c57e",
"name": "Github Get Workflows",
"type": "n8n-nodes-base.httpRequest",
"position": [
768,
-176
],
"parameters": {
"url": "=https://api.github.com/repos/{{ $json.repoowner}}/{{ $json.reponame}}/actions/runs",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "created",
"value": "={{ $now.minus({ days: $json.period || 7 }).toISO() }}..*"
},
{
"name": "per_page",
"value": "50"
}
]
},
"nodeCredentialType": "githubApi"
},
"credentials": {
"githubApi": {
"id": "OWMEIJM53SaS58Kt",
"name": "GitHub account"
}
},
"typeVersion": 4.1
},
{
"id": "8deb394b-2654-4202-bff2-08eb40bd87a2",
"name": "Update Github Issue",
"type": "n8n-nodes-base.githubTool",
"position": [
1568,
160
],
"webhookId": "6e6411fe-1caa-4714-95a6-1a61bfd2f006",
"parameters": {
"body": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Body', ``, 'string') }}",
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Config').first().json.repoowner }}"
},
"title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
"labels": [],
"assignees": [],
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Config').first().json.reponame }}"
},
"descriptionType": "manual",
"toolDescription": "#Update Github Issue\nCreate an issue in GitHub on the team wellness"
},
"credentials": {
"githubApi": {
"id": "OWMEIJM53SaS58Kt",
"name": "GitHub account"
}
},
"typeVersion": 1.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "420ee020-9770-4587-ada3-664ab22396b1",
"connections": {
"799820e9-9d39-4300-9c90-31a35c953e1c": {
"main": [
[
{
"node": "fb1996f6-35dd-4567-89fc-29c77716c57e",
"type": "main",
"index": 0
}
]
]
},
"ce1eaca0-50f9-49de-a865-51c602300439": {
"main": [
[
{
"node": "e71ac601-0698-49f4-a220-e1c3d2fa60ba",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "799820e9-9d39-4300-9c90-31a35c953e1c",
"type": "main",
"index": 0
}
]
]
},
"4f6b2323-c3d1-49ce-9a37-616bccf907cc": {
"main": [
[
{
"node": "ce1eaca0-50f9-49de-a865-51c602300439",
"type": "main",
"index": 0
}
]
]
},
"8deb394b-2654-4202-bff2-08eb40bd87a2": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"fb1996f6-35dd-4567-89fc-29c77716c57e": {
"main": [
[
{
"node": "4f6b2323-c3d1-49ce-9a37-616bccf907cc",
"type": "main",
"index": 0
}
]
]
},
"ce574d0d-76e2-4c6c-b1ab-850aa544e8cc": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"76fd974d-f101-45d0-afcf-4a4ed9c6b3b8": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"e71ac601-0698-49f4-a220-e1c3d2fa60ba": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
PerplexityとGPTを使用して、キーワードとメディアを含むWordPressのSEO最適化ブログを作成
WordPress向けSEO最適化されたブログの作成(Perplexity、GPTベース、キーワードとメディア付き)
Set
Code
Limit
+
Set
Code
Limit
124 ノードPaul
コンテンツ作成
WordPress向けの特定のツールを使用してSEO最適化されたブログを作成
特定のツールを使用してWordPressのSEO最適化されたブログを作成
Set
Code
Limit
+
Set
Code
Limit
124 ノードPaul
コンテンツ作成
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
ペットショップ 4
ペットショップ予約AIエージェント
If
Set
Code
+
If
Set
Code
187 ノードBruno Dias
人工知能
dian-memo_03のエクスポート
AI音声とテキストノート - LINEメッセージ、Supabaseベクトルデータベース、Gmailの統合
If
Set
Code
+
If
Set
Code
30 ノードkote2
AI RAG検索拡張
AI駆動の知識アシスタント
Google Sheets、OpenAI、Supabaseベクトル検索を活用したAIベースの知識アシスタント
Set
Code
Gmail
+
Set
Code
Gmail
14 ノードAkhil Varma Gadiraju
エンジニアリング
ワークフロー情報
難易度
中級
ノード数13
カテゴリー-
ノードタイプ11
作成者
Sean Lon
@seanlonI embarked on my coding journey at the age of 13, driven by a deep passion for AI, automation, and engineering. Over the years, I've taken on various roles including Developer, Engineer, Senior Engineer, Architect, Principal Engineer, Freelance Consultant, and Head of Engineering.
外部リンク
n8n.ioで表示 →
このワークフローを共有