[astro/nextjs] Attribuer des catégories/étiquettes aux articles/publications
Ceci est unContent Creation, AI Summarizationworkflow d'automatisation du domainecontenant 29 nœuds.Utilise principalement des nœuds comme Code, Form, Merge, Github, Switch. Utiliser OpenAI GPT-4, GitHub et Google Sheets pour classer automatiquement les articles de blog Astro/Next.js
- •Personal Access Token GitHub
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (29)
Catégorie
{
"id": "c3REFIr9ubIDDYJ5",
"meta": {
"instanceId": "2295c029f4cb86c8f849f9c87dade323734dc279619eb9e2704f8473c381e4d1",
"templateCredsSetupCompleted": true
},
"name": "[astro/nextjs] Assign cattegories / tags for article / post",
"tags": [],
"nodes": [
{
"id": "48cac2b7-14b3-4d02-8db7-082c9a8a5cec",
"name": "Agent IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2192,
96
],
"parameters": {
"text": "={{ $json.path }}",
"options": {
"systemMessage": "You are a helpful assistant which helps to assign proper tags and categories for post. Example of post is added in section <post>. \n\nEach post has a section which starts with \"---\" and ands with next ocurance of \"---\". This section is metadata which describes the post. After second ocurance of \"---\" file has a content. \n\nRead tags and categories and assign them to <tags> and <categories> variables used later in response.\n\nBased on content please provide categories assigned to <new_assigned_categories> and tags list assigned to <new_assigned_tags> as example below:\n\n<example>\ncategories: [\"business\"] \ntags: [\"DigitalGirls\", \"ITPioneers\", \"WomenInIT\", \"IT\", \"FemalePower\", \"Debugging\", \"GraceHopper\"] \n</example>\n\nFinal result should be post with updated metadata passed to variable <content>.\n\n<post> \n--- \ntitle: \"Where Did the Term ‘Debug’ Come From? – Women in IT\" \npubDate: 2024-07-23 description: \"Did you know that the term ‘debug’ was coined by Admiral Grace Hopper?\" \ncategories: [\"business\"] \ntags: [\"DigitalGirls\", \"ITPioneers\", \"WomenInIT\", \"IT\", \"FemalePower\", \"Debugging\", \"GraceHopper\"] \ncoverImage: \"@assets/2024-07-23-skad-sie-wzielo-okreslenie-debug-kobiety-w-it.jpeg\" \n---\n\nDid you know that the term debug was coined by Admiral Grace Hopper?\nWhile working on the Mark II computer at Harvard University, a moth got trapped in a relay, interfering with the machine’s operation. Removing the dead insect was humorously referred to by Admiral Hopper as debugging.\n\nPS. After a conversation with Wioletta Klimczak, I got my hands on the book “Digital Girls. Pioneers of Polish Computer Science” by Karolina Wasielewska. The story above comes from that book. It’s proof that women are an important part of the IT world!\n\n#DigitalGirls #ITPioneers #WomenInIT #IT #FemalePower #Debugging #GraceHopper\n</post>"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "1844db4c-6da3-47cb-be7a-2aad32126178",
"name": "Mémoire simple",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
2272,
288
],
"parameters": {
"sessionKey": "simple_memory",
"sessionIdType": "customKey",
"contextWindowLength": 2
},
"typeVersion": 1.3
},
{
"id": "5467bd31-25c6-4133-ba33-a6c66c332881",
"name": "Modèle de chat OpenAI",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2128,
288
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {
"responseFormat": "json_object"
}
},
"credentials": {
"openAiApi": {
"id": "7lmHcPMAjhsZFa1f",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "d462260a-ba85-4e3b-9ddf-f3e0d37ea249",
"name": "Lister les publications/articles/pages",
"type": "n8n-nodes-base.github",
"position": [
-240,
512
],
"webhookId": "ecf1a2e3-4fc4-4660-b4a9-a97743df2a1b",
"parameters": {
"owner": {
"__rl": true,
"mode": "list",
"value": "pjsikora",
"cachedResultUrl": "https://github.com/pjsikora",
"cachedResultName": "pjsikora"
},
"filePath": "src/content/blog/pl/",
"resource": "file",
"operation": "list",
"repository": {
"__rl": true,
"mode": "list",
"value": "astro-n8n-test",
"cachedResultUrl": "https://github.com/pjsikora/astro-n8n-test",
"cachedResultName": "astro-n8n-test"
}
},
"credentials": {
"githubApi": {
"id": "Qjzxc6aMdLBzUGJB",
"name": "GitHub account"
}
},
"typeVersion": 1.1
},
{
"id": "3fb2d73a-f707-46dc-8357-67772d6a9b67",
"name": "Note autocollante",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
208
],
"parameters": {
"color": 6,
"width": 256,
"height": 480,
"content": "## Define repository\nDefine repository and directory in which workflow can find articles / post "
},
"typeVersion": 1
},
{
"id": "41217dfe-2aa3-43bc-a415-88d22bb7e042",
"name": "Note autocollante 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1424,
-576
],
"parameters": {
"color": 5,
"height": 416,
"content": "## Get file content\nGet file content and pass it to AI Agent"
},
"typeVersion": 1
},
{
"id": "9985d456-e5ec-4546-9020-ce0a0f9eb57c",
"name": "Ajouter des lignes avec l'analyse des publications/articles",
"type": "n8n-nodes-base.googleSheets",
"position": [
2768,
400
],
"parameters": {
"columns": {
"value": {
"Tags": "={{ JSON.stringify($json.output.old_tags) }}",
"FileName": "={{ $('Get post/article file').item.json.path }}",
"Categories": "={{ JSON.stringify($json.output.old_categories) }}",
"Proposed Tags": "={{ JSON.stringify($json.output.tags) }}",
"Proposed Categories": "={{ JSON.stringify($json.output.categories) }}"
},
"schema": [
{
"id": "FileName",
"type": "string",
"display": true,
"required": false,
"displayName": "FileName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Categories",
"type": "string",
"display": true,
"required": false,
"displayName": "Categories",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposed Categories",
"type": "string",
"display": true,
"required": false,
"displayName": "Proposed Categories",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tags",
"type": "string",
"display": true,
"required": false,
"displayName": "Tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposed Tags",
"type": "string",
"display": true,
"required": false,
"displayName": "Proposed Tags",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MU35s5OAZ4rcCXRnvkkcxrgSVAjXISeULPrCdCl0gXo/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1MU35s5OAZ4rcCXRnvkkcxrgSVAjXISeULPrCdCl0gXo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MU35s5OAZ4rcCXRnvkkcxrgSVAjXISeULPrCdCl0gXo/edit?usp=drivesdk",
"cachedResultName": "[AstroPosts]"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "sgj6aGeryqEVmS3h",
"name": "GSheets - Piotr.Sikora.Ck@gmail.com"
}
},
"typeVersion": 4.7
},
{
"id": "2476998a-9a1b-4d40-b9d1-32f6f68d5d02",
"name": "Note autocollante 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2624,
112
],
"parameters": {
"color": 4,
"width": 368,
"height": 464,
"content": "## Save propositions to Google SHeet file\n\nPrepare Google Sheet to contain following columns:\n- FileName\n- Categories\n- Proposed Categories\n- Tags\n- Proposed Tags"
},
"typeVersion": 1
},
{
"id": "b8e31673-da84-4368-9f88-7a9cc2980e43",
"name": "Obtenir le fichier de publication/article",
"type": "n8n-nodes-base.github",
"position": [
1504,
-352
],
"webhookId": "682a79e6-7c61-452d-8170-6f83196743a8",
"parameters": {
"owner": {
"__rl": true,
"mode": "list",
"value": "pjsikora",
"cachedResultUrl": "https://github.com/pjsikora",
"cachedResultName": "pjsikora"
},
"filePath": "={{ $json.path }}",
"resource": "file",
"operation": "get",
"repository": {
"__rl": true,
"mode": "list",
"value": "piotr-sikora.com",
"cachedResultUrl": "https://github.com/pjsikora/piotr-sikora.com",
"cachedResultName": "piotr-sikora.com"
},
"additionalParameters": {}
},
"credentials": {
"githubApi": {
"id": "Qjzxc6aMdLBzUGJB",
"name": "GitHub account"
}
},
"typeVersion": 1.1
},
{
"id": "980668bc-d2d2-4452-8f89-b16bec365c91",
"name": "Obtenir la/les ligne(s) dans la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
-512,
-512
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MU35s5OAZ4rcCXRnvkkcxrgSVAjXISeULPrCdCl0gXo/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1MU35s5OAZ4rcCXRnvkkcxrgSVAjXISeULPrCdCl0gXo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MU35s5OAZ4rcCXRnvkkcxrgSVAjXISeULPrCdCl0gXo/edit?usp=drivesdk",
"cachedResultName": "[AstroPosts]"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "sgj6aGeryqEVmS3h",
"name": "GSheets - Piotr.Sikora.Ck@gmail.com"
}
},
"typeVersion": 4.7
},
{
"id": "00c43343-2e97-43fb-96d7-a1df7492516e",
"name": "Lister uniquement les noms de fichiers / Supprimer les doublons",
"type": "n8n-nodes-base.code",
"position": [
-240,
-512
],
"parameters": {
"jsCode": "const filteredList = $input.all().map(item => {\n return {\n json: {\n path: item.json.FileName\n }\n };\n});\n\n\nconst seen = new Set();\nconst unique = [];\n\nfor (const item of filteredList) {\n const name = item.json.path;\n if (!seen.has(name)) {\n seen.add(name);\n unique.push(item);\n }\n}\n\nreturn unique;"
},
"typeVersion": 2
},
{
"id": "2f1096f5-0280-4a3b-9a6f-3247bdd1ea44",
"name": "Obtenir uniquement les chemins des fichiers du dépôt GitHub",
"type": "n8n-nodes-base.aggregate",
"position": [
48,
512
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "githubPaths",
"fieldToAggregate": "path"
}
]
}
},
"typeVersion": 1
},
{
"id": "31799c27-6a3b-4220-bceb-e7dcf6277f5f",
"name": "Obtenir uniquement les chemins des fichiers depuis GoogleSheets",
"type": "n8n-nodes-base.aggregate",
"position": [
32,
-512
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "googlesheetsPaths",
"fieldToAggregate": "path"
}
]
}
},
"typeVersion": 1
},
{
"id": "3aba4eab-3305-4f86-9976-ef33d5a7c96e",
"name": "Vérifier les nouveaux fichiers du dépôt pour le traitement IA",
"type": "n8n-nodes-base.code",
"position": [
800,
-448
],
"parameters": {
"jsCode": "const allItems = $input.all();\n\n// Extract arrays \nconst googlePaths = allItems.find(i => i.json.googlesheetsPaths)?.json.googlesheetsPaths || [];\nconst githubPaths = allItems.find(i => i.json.githubPaths)?.json.githubPaths || [];\n\n// Compute difference: elements in githubPaths not in googlesheetsPaths\nconst difference = githubPaths.filter(path => !googlePaths.includes(path));\n\n// Return as n8n item array\nreturn difference.map(path => ({ json: { path } }));"
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "1b542ec1-b963-4064-89fb-40a2a846c5f6",
"name": "Commutateur",
"type": "n8n-nodes-base.switch",
"position": [
1008,
-448
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Empty JSON",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7a2c39ae-c079-4e60-ac98-163b1b148244",
"operator": {
"type": "object",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Not empty JSON",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "90067dec-6a4b-4a26-8703-61d4fd44ed7a",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "8e129b23-d5a7-4630-ab8a-e780373657db",
"name": "À la soumission du formulaire",
"type": "n8n-nodes-base.formTrigger",
"position": [
-832,
-512
],
"webhookId": "67880b06-ee61-4732-9324-3440d25c9f95",
"parameters": {
"options": {},
"formTitle": "Start process ",
"formDescription": "Start process of adding tags and categories"
},
"typeVersion": 2.3
},
{
"id": "47908ded-1702-483c-9ab9-f60a1ba3c82f",
"name": "Aucune nouvelle publication/article dans GitHub",
"type": "n8n-nodes-base.form",
"position": [
1488,
-848
],
"webhookId": "bee21cb0-92f3-45a1-b680-d9fc37b4f9d8",
"parameters": {
"options": {},
"operation": "completion",
"completionTitle": "List is empty",
"completionMessage": "List of articles is empty (there is no new articles/pages in repository)"
},
"typeVersion": 2.3
},
{
"id": "a1410a1b-0ce6-490e-912b-3c14107b13bb",
"name": "Traitement terminé - Catégories et étiquettes ajoutées",
"type": "n8n-nodes-base.form",
"position": [
2176,
-560
],
"webhookId": "bee21cb0-92f3-45a1-b680-d9fc37b4f9d8",
"parameters": {
"options": {},
"operation": "completion",
"completionTitle": "Proces finished",
"completionMessage": "Categories and tags added"
},
"typeVersion": 2.3
},
{
"id": "ec135e1d-ba4d-4069-8da0-a1d663ad839c",
"name": "Fusionner la lecture des feuilles GitHub et Google",
"type": "n8n-nodes-base.merge",
"position": [
560,
-448
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "ba6b4acc-e548-4df7-9559-bf3ba9b087b6",
"name": "Analyseur de sortie structurée",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2416,
288
],
"parameters": {
"jsonSchemaExample": "{\n \"old_categories\": [\"category1\"],\n \"categories\": [\"category1\",\"category2\"],\n \"old_tags\": [\"tag1\",\"tag2\"],\n \"tags\": [\"tag1\",\"tag2\",\"tag3\",\"tag4\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "a637ee7d-af38-420d-8717-e82dbafb3edb",
"name": "Note autocollante 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-592,
-960
],
"parameters": {
"color": 4,
"width": 256,
"height": 608,
"content": "## Get list of posts from Google Sheets\n\nThis step prevents repeating usage of AI Agent for previously analysed posts/pages.\n\nPrepare Google Sheet to contain following columns:\n- FileName\n- Categories\n- Proposed Categories\n- Tags\n- Proposed Tags"
},
"typeVersion": 1
},
{
"id": "3fa92146-9b0d-45a9-be49-9cf6be9d66ec",
"name": "Note autocollante 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-960
],
"parameters": {
"color": 7,
"width": 256,
"height": 608,
"content": "## List FileNames only and Remove duplicates\n\nThis function filters out duplicate items from a list of Google Sheet objects based on the value of each item’s `FileName` property"
},
"typeVersion": 1
},
{
"id": "1653cada-fdf6-418e-aab6-bb715d25ebf1",
"name": "Note autocollante 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
-960
],
"parameters": {
"color": 7,
"width": 320,
"height": 608,
"content": "## Conver JSON to Array\n\nConvert from:\n```\n{\n\"path\": \"src1\"\n},\n{\n\"path\": \"src2\"\n},\n```\nTo\n```\n{\n\"googlesheetsPaths\": \n[\n\"src1\", \n\"src2\"\n]\n}\n```"
},
"typeVersion": 1
},
{
"id": "45a2544a-424d-466c-9fa4-afa25ea1f08c",
"name": "Note autocollante 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1424,
-1008
],
"parameters": {
"height": 352,
"content": "## No new files in GitHub repository\n"
},
"typeVersion": 1
},
{
"id": "8b7ed568-b0fb-4589-9d5d-cf10699794d1",
"name": "Note autocollante 7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
208
],
"parameters": {
"color": 7,
"width": 320,
"height": 480,
"content": "## Conver JSON to Array\n\nConvert complex JSON to Array\n```\n{\n\"githubPaths\": \n[\n\"src1\", \n\"src2\"\n]\n}\n```"
},
"typeVersion": 1
},
{
"id": "c39a9ece-2d68-47c0-b4e5-82e6acb0eb1e",
"name": "Note autocollante 8",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-608
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Compare list from Google Sheets with list from Github\n"
},
"typeVersion": 1
},
{
"id": "97c232f0-6358-442d-a8c1-8234e7afff4d",
"name": "Note autocollante 9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2080,
-288
],
"parameters": {
"color": 7,
"width": 480,
"height": 736,
"content": "## AI Agent\n\nRole of **AI Agent** is to:\n- Analyse content of the file (post/page)\n- Assign categories and tags per analysed file\n- Return JSON in format by `Structured output` like below:\n\n```\n{\n \"old_categories\": [\"category1\"],\n \"categories\": [\"category1\",\"category2\"],\n \"old_tags\": [\"tag1\",\"tag2\"],\n \"tags\": [\"tag1\",\"tag2\",\"tag3\",\"tag4\"]\n}\n```"
},
"typeVersion": 1
},
{
"id": "935037f1-860d-42a3-b898-fccbd545c145",
"name": "Boucler sur les publications/pages",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1776,
-352
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "779d1b8f-1523-4c49-bdcc-6f4ed34ca301",
"name": "Note autocollante 10",
"type": "n8n-nodes-base.stickyNote",
"position": [
2096,
-736
],
"parameters": {
"height": 352,
"content": "## No new files in GitHub repository\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e501f3f5-a580-4fdb-94cb-62bb5de8d0dc",
"connections": {
"1b542ec1-b963-4064-89fb-40a2a846c5f6": {
"main": [
[
{
"node": "47908ded-1702-483c-9ab9-f60a1ba3c82f",
"type": "main",
"index": 0
}
],
[
{
"node": "b8e31673-da84-4368-9f88-7a9cc2980e43",
"type": "main",
"index": 0
}
]
]
},
"48cac2b7-14b3-4d02-8db7-082c9a8a5cec": {
"main": [
[
{
"node": "9985d456-e5ec-4546-9020-ce0a0f9eb57c",
"type": "main",
"index": 0
}
]
]
},
"1844db4c-6da3-47cb-be7a-2aad32126178": {
"ai_memory": [
[
{
"node": "48cac2b7-14b3-4d02-8db7-082c9a8a5cec",
"type": "ai_memory",
"index": 0
}
]
]
},
"5467bd31-25c6-4133-ba33-a6c66c332881": {
"ai_languageModel": [
[
{
"node": "48cac2b7-14b3-4d02-8db7-082c9a8a5cec",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8e129b23-d5a7-4630-ab8a-e780373657db": {
"main": [
[
{
"node": "980668bc-d2d2-4452-8f89-b16bec365c91",
"type": "main",
"index": 0
},
{
"node": "d462260a-ba85-4e3b-9ddf-f3e0d37ea249",
"type": "main",
"index": 0
}
]
]
},
"980668bc-d2d2-4452-8f89-b16bec365c91": {
"main": [
[
{
"node": "00c43343-2e97-43fb-96d7-a1df7492516e",
"type": "main",
"index": 0
}
]
]
},
"b8e31673-da84-4368-9f88-7a9cc2980e43": {
"main": [
[
{
"node": "935037f1-860d-42a3-b898-fccbd545c145",
"type": "main",
"index": 0
}
]
]
},
"935037f1-860d-42a3-b898-fccbd545c145": {
"main": [
[
{
"node": "a1410a1b-0ce6-490e-912b-3c14107b13bb",
"type": "main",
"index": 0
}
],
[
{
"node": "48cac2b7-14b3-4d02-8db7-082c9a8a5cec",
"type": "main",
"index": 0
}
]
]
},
"ba6b4acc-e548-4df7-9559-bf3ba9b087b6": {
"ai_outputParser": [
[
{
"node": "48cac2b7-14b3-4d02-8db7-082c9a8a5cec",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"d462260a-ba85-4e3b-9ddf-f3e0d37ea249": {
"main": [
[
{
"node": "2f1096f5-0280-4a3b-9a6f-3247bdd1ea44",
"type": "main",
"index": 0
}
]
]
},
"ec135e1d-ba4d-4069-8da0-a1d663ad839c": {
"main": [
[
{
"node": "3aba4eab-3305-4f86-9976-ef33d5a7c96e",
"type": "main",
"index": 0
}
]
]
},
"3aba4eab-3305-4f86-9976-ef33d5a7c96e": {
"main": [
[
{
"node": "1b542ec1-b963-4064-89fb-40a2a846c5f6",
"type": "main",
"index": 0
}
]
]
},
"31799c27-6a3b-4220-bceb-e7dcf6277f5f": {
"main": [
[
{
"node": "ec135e1d-ba4d-4069-8da0-a1d663ad839c",
"type": "main",
"index": 0
}
]
]
},
"00c43343-2e97-43fb-96d7-a1df7492516e": {
"main": [
[
{
"node": "31799c27-6a3b-4220-bceb-e7dcf6277f5f",
"type": "main",
"index": 0
}
]
]
},
"9985d456-e5ec-4546-9020-ce0a0f9eb57c": {
"main": [
[
{
"node": "935037f1-860d-42a3-b898-fccbd545c145",
"type": "main",
"index": 0
}
]
]
},
"2f1096f5-0280-4a3b-9a6f-3247bdd1ea44": {
"main": [
[
{
"node": "ec135e1d-ba4d-4069-8da0-a1d663ad839c",
"type": "main",
"index": 1
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, Résumé IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Piotr Sikora
@argonePartager ce workflow