Automatisation Jira avec n8n : rétrospective simplifiée
Ce workflow n8n a pour objectif d'automatiser le processus de rétrospective dans Jira, facilitant ainsi la collecte et l'analyse des commentaires des équipes. Dans un contexte où les retours d'expérience sont cruciaux pour l'amélioration continue, cette automatisation permet aux équipes de gagner du temps et d'optimiser leurs réunions de rétrospective. En utilisant des intégrations avec Jira et OpenAI, ce workflow permet de récupérer toutes les issues et commentaires d'un projet, de les résumer et de les organiser dans un document Google Docs. Étape 1 : Le déclencheur est un événement Jira qui active le workflow. Étape 2 : Le workflow commence par le nœud 'Jira Get All Issues' pour récupérer toutes les tâches liées à un projet spécifique. Étape 3 : Ensuite, il utilise 'Jira Get All Comments' pour obtenir les commentaires associés à ces tâches. Étape 4 : Les données sont ensuite traitées par l'agent AI qui génère des résumés et des analyses basées sur les commentaires collectés. Étape 5 : Les résultats sont ensuite formatés et envoyés vers Google Docs pour être facilement accessibles et partagés avec l'équipe. Les bénéfices de cette automatisation n8n incluent une réduction significative du temps consacré à la préparation des rétrospectives, une meilleure organisation des retours d'expérience et une amélioration de la collaboration au sein des équipes. En centralisant les informations et en les rendant facilement accessibles, ce workflow permet aux équipes de se concentrer sur l'essentiel : l'amélioration continue de leurs processus. Tags clés : automatisation, Jira, Google Docs.
Vue d'ensemble du workflow n8n
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Détail des nœuds du workflow n8n
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "U1xUqDLvBYYSU6EU",
"meta": {
"instanceId": "8d54a4232b4618928ac9df0152e207cb858f5f9ffa6f3ba2d31d941bdcaec9d7",
"templateCredsSetupCompleted": true
},
"name": "Jira Retrospective",
"tags": [],
"nodes": [
{
"id": "b91c4727-8c63-4bf3-8101-6282aa6f592c",
"name": "Jira Get All Issues",
"type": "n8n-nodes-base.jira",
"position": [
60,
60
],
"parameters": {
"options": {},
"operation": "getAll"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "AqnrDWxoCa8luriP",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "4cf0689c-2a1f-4a90-81f4-d3483c63fc96",
"name": "Jira Get All Comments",
"type": "n8n-nodes-base.jira",
"position": [
280,
60
],
"parameters": {
"options": {},
"issueKey": "={{ $json.key }}",
"resource": "issueComment",
"operation": "getAll"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "AqnrDWxoCa8luriP",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "26803742-1a94-4969-878b-2f757aced4f8",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
940,
60
],
"parameters": {
"text": "=comments = {{ $json.concatenated_Comment }}\ndescription = {{ $json.Description }}\ntitle = {{ $json.Title }}\nstatus = {{ $json.EpicStatus }}\nepic_name = {{ $json.EpicName }}\n",
"options": {
"systemMessage": "=You are an AI assistant specialized in creating comprehensive Agile retrospective documents. Your task is to analyze the provided information about a completed task and generate an insightful **Lessons Learned** report formatted in **clean Markdown**, optimized for seamless conversion to Google Docs.\n\n---\n\n### 📥 Input Format\nYou will receive structured input containing:\n* `epic_name`: The broader initiative or project category\n* `title`: The specific task or user story name\n* `description`: A concise explanation of what the task involved\n\n---\n\n### 📤 Output Instructions\nGenerate a detailed **Lessons Learned** report using the following **Markdown** structure:\n\n# LESSONS LEARNED REPORT\n\n**Epic:** {epic_name} \n**Date:** {{$today.format('yyyy-MM-dd')}}} \n**Task:** {title} \n**Description:** {description}\n\n## Key Findings\n\n* Clear, specific insight about a technical challenge encountered\n* Process-related discovery that impacted delivery\n* Team dynamics observation or workflow improvement identified\n* {Add more if needed}\n\n## Comments & Observations\n\n{Write 2–3 paragraphs with:}\n\n* Specific examples from task execution\n* Feedback or quotes from team members (if available)\n* Comparisons to prior approaches\n* Unexpected challenges or positive surprises\n\n## Actionable Recommendations\n\n1. Specific, implementable action to address a finding\n2. Concrete suggestion for process improvement\n3. Recommendation for knowledge sharing or team development\n4. {Add more as needed}\n\n## Metrics & Impact\n\n{When possible, include:}\n\n* Time saved or efficiency gained\n* Quality improvements\n* User/customer feedback\n* Cost implications\n\n## Tags\n\n`#lessons-learned` `#{normalized_epic_name}` `#{relevant_technology}` `#{improvement_area}`\n\n---\n\n### 📝 Guidelines\n\n1. **Be specific** – use real details, not vague statements\n2. **Stay relevant** – stick to the task and its broader context\n3. **Focus on learning** – prioritize transferable insights\n4. **Balance** – include both wins and challenges\n5. **Actionability** – make every suggestion doable\n6. **Concise yet clear** – avoid fluff; write for impact\n7. **Formatting Guidelines for Google Docs compatibility:**\n * Use only asterisks (*) for bullet points, never hyphens (-)\n * Add two spaces after each line in lists for proper line breaks\n * Always leave a blank line before and after headings\n * Avoid using underscores (_) in text; use hyphens (-) instead\n * For emphasis, use consistently **bold** for important points and *italics* for supplementary information\n * When mentioning code or technical terms, use `single backticks`, never triple backticks\n * Use a pipe-separated format for tables as shown in the template\n * Keep paragraphs short (3-5 sentences) for better readability\n8. **Metadata Handling:** Include the epic name and task title exactly as provided in the input, without modification\n9. **Date Format:** Use YYYY-MM-DD format for the date for consistent sorting and display\n10. **Tags:** Keep tags lowercase, with hyphens instead of spaces, and relevant to the content\n\n---"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "29e37c80-68a4-490a-8952-2dcf974ff8d3",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
920,
280
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "f3KRKVUp9GyRxd6U",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "da5e365b-cc69-4bdd-bd58-e5b2ecb17387",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
500,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "84fcaf69-4234-46be-9fa7-15026c60fed4",
"name": "EpicName",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.parent.fields.summary }}"
},
{
"id": "a7890a6b-1d0d-4486-908e-d3db571b89af",
"name": "EpicStatus",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.parent.fields.status.statusCategory.name }}"
},
{
"id": "c2c58d73-17a8-47b5-beb6-8295905cd8c2",
"name": "Title",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.summary }}"
},
{
"id": "baa10a35-ab3e-490f-b9ed-e661a6e9f4aa",
"name": "Description",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.description }}"
},
{
"id": "5da4ae54-07e6-41b8-bd51-054fe56beb5f",
"name": "Comment",
"type": "string",
"value": "={{ $json.body.content[0].content[0].text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9718b066-e28f-41ea-97c2-559cbd894764",
"name": "Summarize",
"type": "n8n-nodes-base.summarize",
"position": [
720,
60
],
"parameters": {
"options": {},
"fieldsToSplitBy": "EpicName, EpicStatus, Title, Description",
"fieldsToSummarize": {
"values": [
{
"field": "Comment",
"separateBy": "\n",
"aggregation": "concatenate"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "1d37efb7-09f1-43a7-a6c0-77d07b1f7a6b",
"name": "Google Docs",
"type": "n8n-nodes-base.googleDocs",
"position": [
1280,
60
],
"parameters": {
"simple": false,
"actionsUi": {
"actionFields": [
{
"text": "={{ $json.output }}",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "14X5gcowEprmL6ORyoo9tIrWWEB1HlhkixXUelesCLXs"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "Qe3TZG3K1euzTr3n",
"name": "Google Docs account"
}
},
"typeVersion": 2
},
{
"id": "bfab4af8-1f26-45b0-952b-1bd5f411d5f4",
"name": "Jira Trigger",
"type": "n8n-nodes-base.jiraTrigger",
"position": [
-380,
180
],
"webhookId": "3eb46690-d7b1-4a69-9a99-8adf8f843ed9",
"parameters": {
"events": [
"jira:issue_updated"
],
"additionalFields": {
"filter": ""
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "AqnrDWxoCa8luriP",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1.1
},
{
"id": "cc654cf3-c360-4704-a4b7-57447dbec8c6",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-200,
180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a7028dd9-e262-4528-a20f-c80a26a28202",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.changelog.items[0].toString }}",
"rightValue": "Done"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b3ccd93e-a412-46f5-858d-ef8a2cd0efa9",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1080,
280
],
"parameters": {
"sessionKey": "47",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "e8379684-93ca-4118-bab5-f52a444c50e1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-420,
-120
],
"parameters": {
"width": 380,
"height": 580,
"content": "## Epic Done?\nThis Node is Triggered on any issue change in Jira. However it only triggers the automation when the Epic status is changed to **Done**"
},
"typeVersion": 1
},
{
"id": "cdddcd3f-f896-4dbf-89e2-09060111cbc6",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-120
],
"parameters": {
"color": 5,
"width": 820,
"height": 580,
"content": "## Fetch issue Description and Comments\nOnce the Epic is Done, these nodes fetch issues and comments that fall under the Epic. For further processing the output is bundled."
},
"typeVersion": 1
},
{
"id": "c718a2e8-be7b-47b9-b7cc-9f4549a1060f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-120
],
"parameters": {
"color": 3,
"width": 540,
"height": 580,
"content": "## Summarize and send to Google Docs\nThe LLM is summarizing the description / comments and generates a report with a layout defined in the System Message. Finally the output is send to Google Docs."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "793ad505-261f-44ae-a197-a7c0e496dd69",
"connections": {
"If": {
"main": [
[
{
"node": "Jira Get All Issues",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Google Docs",
"type": "main",
"index": 0
}
]
]
},
"Summarize": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Summarize",
"type": "main",
"index": 0
}
]
]
},
"Jira Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Jira Get All Issues": {
"main": [
[
{
"node": "Jira Get All Comments",
"type": "main",
"index": 0
}
]
]
},
"Jira Get All Comments": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
}
}
}Pour qui est ce workflow ?
Ce workflow s'adresse aux équipes de développement et aux chefs de projet utilisant Jira, souhaitant améliorer leur processus de rétrospective. Il est adapté aux entreprises de taille moyenne à grande, avec un niveau technique intermédiaire à avancé.
Problème résolu
Ce workflow résout le problème de la gestion manuelle des rétrospectives dans Jira, qui peut être chronophage et source d'erreurs. En automatisant la collecte et l'analyse des commentaires, il élimine les frustrations liées à la recherche d'informations pertinentes et réduit le risque de perdre des retours d'expérience importants. L'utilisateur obtient ainsi un document structuré et synthétique, facilitant la prise de décision et l'amélioration continue.
Étapes du workflow
Étape 1 : Le workflow est déclenché par un événement dans Jira. Étape 2 : Il récupère toutes les issues via le nœud 'Jira Get All Issues'. Étape 3 : Ensuite, il obtient tous les commentaires associés grâce au nœud 'Jira Get All Comments'. Étape 4 : Ces données sont traitées par l'AI Agent pour générer des résumés. Étape 5 : Les informations sont ensuite formatées et envoyées à Google Docs pour un accès facile.
Guide de personnalisation du workflow n8n
Pour personnaliser ce workflow, vous pouvez modifier l'URL du webhook pour l'adapter à votre instance Jira. Il est également possible de changer les paramètres dans les nœuds 'Jira Get All Issues' et 'Jira Get All Comments' pour cibler des projets spécifiques. Si vous souhaitez intégrer d'autres outils, vous pouvez ajouter des nœuds supplémentaires après la récupération des commentaires. Assurez-vous de sécuriser le flux en configurant les autorisations d'accès aux données sensibles dans Google Docs.