
đïž News Summarizer & Auto-Poster for Social Media - Late
Description
Categories
đ€ AI & Machine Learning
Nodes Used
n8n-nodes-base.setn8n-nodes-base.coden8n-nodes-base.htmln8n-nodes-base.splitOutn8n-nodes-base.aggregaten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
PriceKostenlos
Views0
Last Updated11/28/2025
workflow.json
{
"id": "jBgzLQDvUfBwo5rG",
"meta": {
"instanceId": "20129dd042b068f74504e3288edfe39a1229bdd8b410358b39923291ace2903d",
"templateCredsSetupCompleted": true
},
"name": "đïž News Summarizer & Auto-Poster for Social Media - Late",
"tags": [
{
"id": "L5OfKYUAxU0VDZh3",
"name": "Content",
"createdAt": "2025-07-02T08:32:59.389Z",
"updatedAt": "2025-07-02T08:32:59.389Z"
}
],
"nodes": [
{
"id": "38daed7e-5981-48b0-9dd4-b5dc4da09cbb",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
-752,
-240
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "{\n \"urls\": [\n \"URL1\",\n \"URL2\",\n\"URL3\"\n ]\n}"
},
"typeVersion": 3.4
},
{
"id": "0c3c6494-b0d5-4e8c-838c-7c0d83ed2ac9",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-304,
-240
],
"parameters": {
"url": "={{ $json.urls }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "da58c23f-1a20-45f1-ab4b-f65f14bdae91",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
-80,
-144
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "// INPUTS\nconst html = $json.data; // HTML complet\nconst articleUrl = $('Split Out').item.json.urls || \"\"; // URL de lâarticle (pour les URLs relatives)\n\n// ------------------ Utils ------------------\nfunction decodeEntities(text) {\n return text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/ /g, ' ')\n .replace(/é/g, 'Ă©')\n .replace(/è/g, 'Ăš')\n .replace(/à/g, 'Ă ');\n}\n\nfunction resolveUrl(baseUrl, src) {\n if (!src) return null;\n // //cdn⊠â https:\n if (src.startsWith('//')) return 'https:' + src;\n // absolute\n try {\n return new URL(src, baseUrl).href;\n } catch {\n return src;\n }\n}\n\n// Supprime blocs connus de âparasitesâ (share, related, newsletter, footerâŠ)\nfunction stripNoise(htmlChunk) {\n let s = htmlChunk;\n\n // blocs âshare/socialâ\n s = s.replace(/<aside[\\s\\S]*?<\\/aside>/gi, '');\n s = s.replace(/<section[^>]*?(?:share|social|related|newsletter|comments)[^>]*>[\\s\\S]*?<\\/section>/gi, '');\n s = s.replace(/<div[^>]*?(?:share|social|related|newsletter|comments|social-tools|meta-social)[^>]*>[\\s\\S]*?<\\/div>/gi, '');\n\n // scripts/styles\n s = s.replace(/<script[\\s\\S]*?<\\/script>/gi, '');\n s = s.replace(/<style[\\s\\S]*?<\\/style>/gi, '');\n\n // nav/footer/header souvent non-article\n s = s.replace(/<(?:nav|footer|header)[\\s\\S]*?<\\/(?:nav|footer|header)>/gi, '');\n\n return s;\n}\n\n// Extrait tous les <p> dâun bloc HTML (en gardant lâordre)\nfunction extractParagraphs(htmlChunk) {\n const ps = [];\n const re = /<p[^>]*>([\\s\\S]*?)<\\/p>/gi;\n let m;\n while ((m = re.exec(htmlChunk)) !== null) {\n // retire tags rĂ©siduels dans <p>\n let t = m[1]\n .replace(/<figure[\\s\\S]*?<\\/figure>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n if (t) ps.push(t);\n }\n return ps;\n}\n\n// Cherche une image principale : og:image > twitter:image > figure > img dans article/main\nfunction findMainImage(html, baseUrl) {\n let imageMatch =\n html.match(/<meta[^>]+property=[\"']og:image[\"'][^>]+content=[\"']([^\"']+)[\"']/i) ||\n html.match(/<meta[^>]+name=[\"']twitter:image[\"'][^>]+content=[\"']([^\"']+)[\"']/i);\n\n if (imageMatch) return resolveUrl(baseUrl, imageMatch[1]);\n\n // image dans <figure>\n imageMatch =\n html.match(/<figure[\\s\\S]*?<img[^>]+src=[\"']([^\"']+)[\"'][\\s\\S]*?<\\/figure>/i) ||\n html.match(/<(?:article|main)[^>]*>[\\s\\S]*?<img[^>]+src=[\"']([^\"']+)[\"']/i) ||\n html.match(/<img[^>]+src=[\"']([^\"']+)[\"']/i);\n\n return imageMatch ? resolveUrl(baseUrl, imageMatch[1]) : null;\n}\n\n// ------------------ Titre ------------------\nlet titleMatch =\n html.match(/<meta[^>]+property=[\"']og:title[\"'][^>]+content=[\"']([^\"']+)[\"']/i) ||\n html.match(/<meta[^>]+name=[\"']twitter:title[\"'][^>]+content=[\"']([^\"']+)[\"']/i) ||\n html.match(/<title>([\\s\\S]*?)<\\/title>/i);\nlet title = titleMatch ? titleMatch[1] : \"\";\n\n// ------------------ Corps de lâarticle ------------------\n// 1) PrivilĂ©gie <article>, sinon <main>, sinon grands conteneurs classiques\nconst candidatePatterns = [\n /<article[^>]*>([\\s\\S]*?)<\\/article>/i,\n /<main[^>]*>([\\s\\S]*?)<\\/main>/i,\n /<div[^>]+class=[\"'][^\"']*(?:article__body|article-body|articleBody|content-article|story|post-content|post__content|entry-content|main-content|content__body)[^\"']*[\"'][^>]*>([\\s\\S]*?)<\\/div>/i,\n // fallback : gros container central (layout courant)\n /<div[^>]+class=[\"'][^\"']*(?:container|content|wrapper)[^\"']*[\"'][^>]*>([\\s\\S]*?)<\\/div>/i,\n];\n\nlet articleHtml = \"\";\nfor (const p of candidatePatterns) {\n const m = html.match(p);\n if (m && m[1]) {\n articleHtml = m[1];\n break;\n }\n}\n// Si encore vide, on prend tout le HTML (on filtrera)\nif (!articleHtml) articleHtml = html;\n\n// 2) Nettoyage âbruitâ (share, related, scripts, etc.)\narticleHtml = stripNoise(articleHtml);\n\n// 3) RĂ©cupĂšre beaucoup plus de texte : on concatĂšne les <p>\nlet paragraphs = extractParagraphs(articleHtml);\n\n// Si on nâa quasiment rien, tente aussi les <h2>/<h3> comme âparagraphesâ\nif (paragraphs.length < 3) {\n const hx = [];\n const reHx = /<(?:h2|h3)[^>]*>([\\s\\S]*?)<\\/(?:h2|h3)>/gi;\n let m;\n while ((m = reHx.exec(articleHtml)) !== null) {\n const t = m[1].replace(/<[^>]+>/g, '').replace(/\\s+/g, ' ').trim();\n if (t) hx.push(t);\n }\n paragraphs = paragraphs.concat(hx);\n}\n\n// 4) Filtrage lĂ©ger : on retire les lignes trop courtes (menus, miettes)\nparagraphs = paragraphs.filter(p => p.length > 40);\n\n// 5) Limites souples (Ă©vite dâavaler lâentier du site)\nconst MAX_PARAGRAPHS = 20; // augmente si tu veux encore plus\nconst MAX_CHARS = 8000; // coupe si trop long\nlet content = \"\";\nfor (const p of paragraphs.slice(0, MAX_PARAGRAPHS)) {\n if ((content + p + \"\\n\\n\").length > MAX_CHARS) break;\n content += p + \"\\n\\n\";\n}\ncontent = content.trim();\n\n// 6) Coupe les blocs âparasitesâ sâils apparaissent *plus loin* dans lâarticle\nconst breakMarkers = [\n \"Partager\", \"Commenter\", \"Partagez sur\", \"Lire aussi\", \"Sur le mĂȘme sujet\",\n \"Voir aussi\", \"Suivez-nous\", \"Retrouvez-nous\", \"Contactez\", \"RĂ©daction\",\n \"lire plus tard\", \"newsletter\", \"publicitĂ©\", \"nos autres articles\"\n];\n// coupe uniquement aprĂšs un petit seuil pour ne pas tronquer lâintro\nfor (const marker of breakMarkers) {\n const idx = content.indexOf(marker);\n if (idx > 300) {\n content = content.slice(0, idx).trim();\n break;\n }\n}\n\n// ------------------ Image principale ------------------\nlet imageUrl = findMainImage(html, articleUrl);\n\n// ------------------ Finalisation ------------------\ntitle = decodeEntities(title);\ncontent = decodeEntities(content);\n\nreturn {\n json: {\n title,\n urls: articleUrl,\n content,\n imageUrl\n }\n};\n"
},
"typeVersion": 2
},
{
"id": "d8ba2c62-a400-4634-b0b6-08ce3f1ead6f",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
144,
-144
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-5",
"cachedResultName": "GPT-5"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "Tu es un assistant chargé de résumer des articles de presse de maniÚre factuelle, synthétique et hiérarchisée. Tu n'as pas le droit d'inventer quoi que ce soit qui ne soit pas écrit dans le contenu initial"
},
{
"content": "=Voici un article d'actualité à résumer de maniÚre claire, synthétique et détaillé en ne gardant que les informations en rapport avec le titre.\n\nTITRE : {{$json.title}}\n\nCONTENU : {{ $json.content }}"
}
]
}
},
"typeVersion": 1.8
},
{
"id": "f1f69341-f3f5-4fa5-a920-0937da06f643",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
-528,
-240
],
"parameters": {
"options": {},
"fieldToSplitOut": "=urls"
},
"typeVersion": 1
},
{
"id": "25152ee0-5ccc-4946-96d1-3004094bcb11",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
496,
-144
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "message.content"
}
]
}
},
"typeVersion": 1
},
{
"id": "a1ac8d77-76d3-4e98-87cd-ca741123d24b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1024,
-304
],
"parameters": {
"width": 400,
"height": 220,
"content": "## Test mode"
},
"typeVersion": 1
},
{
"id": "d7d70ef4-ac43-408f-85f2-aeee25030189",
"name": "When clicking âExecute workflowâ",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-976,
-240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6905d681-6b32-4fda-a9ea-3fc39aa81ce8",
"name": "HTML1",
"type": "n8n-nodes-base.html",
"position": [
336,
-464
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "figure_img",
"attribute": "content",
"cssSelector": "meta[property=\"og:image\"]",
"returnValue": "attribute"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "f6fd3ca8-7c3d-412a-b1d2-4bcedf3a4dfe",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
-576
],
"parameters": {
"color": 4,
"width": 932,
"height": 260,
"content": "## Images downloading"
},
"typeVersion": 1
},
{
"id": "fcd4a0f2-4cef-42ae-bfd8-bbe9fc3d33ed",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"position": [
624,
-464
],
"parameters": {
"url": "={{ $json.figure_img }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "15bd8581-6713-4421-9c4e-5ba194fa536a",
"name": "Message a model",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
720,
-144
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"role": "assistant",
"content": "Tu es un assistant qui rĂ©sume de maniĂšre journalistique pour les jeunes des articles dâactualitĂ©, sans Ă©mojis, sans interprĂ©tation."
},
{
"content": "=Voici les articles :\n{{ $json.content }}\n\nRĂ©alise une synthĂšse structurĂ©e pour des jeunes lecteurs, formatĂ©e comme ce JSON :\n\n{\n \"titre\": \"âŠ\", // min 45 caractĂšres, max 60 caractĂšres\n \"sous_titre\": \"âŠ\", // min 150 caractĂšres, max 220 caractĂšres, ton journalistique et accrocheur\n \"parties\": [\n {\n \"titre_1\": \"âŠ\", // max 60 caractĂšres ton journalistique et accrocheur qui rĂ©sume la description\n \"description\": \"âŠ\" // max 500 caractĂšres, avec faits et chiffres\n },\n {\n \"titre_2\": \"âŠ\", // idem\n \"description\": \"âŠ\"\n }\n // etc.\n ]\n}\n\nExemple de consignes Ă inclure en dĂ©but de prompt :\n\n« **Attention** : \n- il doit y avoir exactement {{ $('Webhook').item.json.body.pages }} pages- `titre` ne doit pas dĂ©passer 60 caractĂšres \n- `sous_titre` ne doit pas dĂ©passer 220 caractĂšres \n- pour chaque objet de `parties`, `titre_X` †60 caractĂšres et `description` †500 caractĂšres \nRĂ©pond strictement au format JSON ci-dessus, sans explications additionnelles, sans commencer par \"json\". »\n"
},
{
"role": "system",
"content": "Respecte strictement la structure JSON, sans texte avant ou aprÚs. N'invente rien. Ne répÚte pas d'information. Utilise uniquement le contenu fourni."
}
]
}
},
"credentials": {
"openAiApi": {
"id": "xj6uZG7I9SYg1Ypb",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "4972cdd6-c3fd-4d1e-95e4-8a1684d5bd66",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
-272
],
"parameters": {
"color": 5,
"width": 1140,
"height": 308,
"content": "## Social Networks posting"
},
"typeVersion": 1
},
{
"id": "ba945e0a-5aa4-4601-a6b2-8c73bb725232",
"name": "Message a model1",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1072,
-144
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=Tu es un assistant spĂ©cialisĂ© dans la crĂ©ation de descriptions impactantes pour les rĂ©seaux sociaux, Ă destination des 18-25 ans. Voici le texte de lâarticle Ă rĂ©sumerâŻ:\n\" {{ $json.message.content }} \"\n\n\nGĂ©nĂšre une description prĂȘte Ă poster sur Instagram, TikTok et autres rĂ©seaux, au format suivantâŻ:\n\n- Hook dâaccroche (1 phrase qui donne envie de lire le post, max 80 caractĂšres)\n- RĂ©sumĂ© de lâactu (2 Ă 4 phrases synthĂ©tiques et factuelles, 200 Ă 250 caractĂšres max)\n- Question ou call-to-action pour inciter Ă commenter ou rĂ©agir (max 80 caractĂšres)\n- Hashtags (5 Ă 8, sĂ©parĂ©s par des espaces, mĂ©lange de #actu #news #jeunes #actualitĂ© + sujets du texte + toujours #pikor)\n\nContraintesâŻ:\n- Pas dâĂ©mojis ou juste un seul, jamais au dĂ©but du texte.\n- Aucune inventionâŻ: tu utilises uniquement les infos de lâarticle.\n- Le ton doit rester journalistique, mais accrocheur, Ă©crit pour des jeunes adultes (jamais infantilisant).\n- Pas de rĂ©pĂ©tition, ni dâauto-promo, ni de lien externe.\n- Jamais plus de 450 caractĂšres au total."
},
{
"role": "system",
"content": "Tu es un assistant Ă©ditorial qui gĂ©nĂšre des descriptions prĂȘtes Ă publier sur les rĂ©seaux sociaux pour une application dâactualitĂ© destinĂ©e aux 18-25 ans. \n\nTa missionâŻ: \n- Structurer la description comme demandĂ© (hook, rĂ©sumĂ©, call-to-action, hashtags)\n- Toujours respecter les consignes de format, de longueur et de tonâŻ: journalistique, accrocheur, jamais infantilisant.\n- Aucune invention ni ajout extĂ©rieurâŻ: uniquement des faits prĂ©sents dans lâarticle.\n- Pas de rĂ©pĂ©tition, pas dâauto-promo, pas de lien externe, pas plus dâun Ă©moji.\n- Si lâinformation manque dans lâarticle, nâajoute rien et passe Ă la suite.\n- La sortie doit ĂȘtre claire, prĂȘte Ă lâemploi et strictement respecter la structure demandĂ©e dans le prompt utilisateur."
}
]
}
},
"credentials": {
"openAiApi": {
"id": "xj6uZG7I9SYg1Ypb",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "01102406-10d0-424f-9f60-69717e87dc9c",
"name": "Upload file",
"type": "n8n-nodes-base.googleDrive",
"position": [
976,
-464
],
"parameters": {
"name": "={{$now.format('f') }}_{{ $json[\"source\"] || \"image\" }}_{{$itemIndex}}.jpg",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "191yh8eb9mx8wykfpGXJNVy9F9IWgDZxz",
"cachedResultUrl": "https://drive.google.com/drive/folders/191yh8eb9mx8wykfpGXJNVy9F9IWgDZxz",
"cachedResultName": "Pikor - Images articles"
}
},
"typeVersion": 3
},
{
"id": "1cfd0408-80e4-411e-9c9b-130a327be710",
"name": "GetLate multipublishing",
"type": "n8n-nodes-base.httpRequest",
"position": [
1424,
-240
],
"parameters": {
"url": "https://getlate.dev/api/v1/post",
"method": "POST",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={\n \"content\": \"{{ $('Message a model1').item.json.message.content }}\",\n \"platforms\": [\n {\"platform\": \"twitter\", \"accountId\": \"TWITTER_ACCOUNT_ID\"},\n {\"platform\": \"instagram\", \"accountId\": \"INSTAGRAM_ACCOUNT_ID\"},\n {\"platform\": \"linkedin\", \"accountId\": \"LINKEDIN_ACCOUNT_ID\"},\n {\"platform\": \"threads\", \"accountId\": \"THREADS_ACCOUNT_ID\"},\n {\"platform\": \"youtube\", \"accountId\": \"YOUTUBE_ACCOUNT_ID\"}\n ],\n \"scheduledFor\": \"today\",\n \"timezone\": \"America/New_York\",\n \"publishNow\": false,\n \"isDraft\": false,\n \"visibility\": \"public\",\n \"tags\": [\"programming\", \"tutorial\", \"api\", \"coding\"],\n \"mediaItems\": [\n {\n \"type\": \"image\",\n \"url\": \"{{ $('HTTP Request1').item.json.figure_img }}\",\n \"filename\": \"optional_filename\"\n }\n ]\n}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d5abfc93-9f61-4c24-b577-4cf7fef2e35f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
-944
],
"parameters": {
"color": 7,
"width": 384,
"height": 544,
"content": "## Different Articles Summarizer & Social Media Auto-Poster\n\nThis n8n template demonstrates how to extract full-text articles from different news websites, summarize them with AI, and automatically generate content for social networks (Twitter, Instagram, Threads, LinkedIn, YouTube).\n\nYou can use it for any news topic. Example: posting summaries of breaking news articles.\n\nPossible use cases :\n* Automate press article summarization with GPT.\n* Create social media posts optimized for young audiences.\n* Publish content simultaneously across multiple platforms with Late API."
},
"typeVersion": 1
},
{
"id": "92d59f4a-125b-4579-b842-345ff18e1936",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-848,
-944
],
"parameters": {
"color": 7,
"width": 384,
"height": 544,
"content": "## How it works\n\n* The workflow starts manually or with a trigger.\n* URLs of news articles are defined in the Edit Fields node.\n* Each URL is processed separately via Split Out.\n* HTTP Request fetches the article HTML.\n* Custom Code node extracts clean text (title, content, main image).\n* OpenAI summarizes each article factually.\n* Aggregate combines results.\n* Another OpenAI node (Message a model) creates structured JSON summaries for young readers.\n* A final OpenAI node (Message a model1) generates short social media posts (hook, summary, CTA, hashtags).\n* Images are extracted via HTML1 and uploaded to Google Drive.\n* Posts (text + image) are sent to Late API for multi-platform scheduling (Twitter, Instagram, Threads, LinkedIn, YouTube)."
},
"typeVersion": 1
},
{
"id": "90105c8e-5fb0-4626-a18a-41f3aa05e5b2",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
-944
],
"parameters": {
"color": 7,
"width": 384,
"height": 544,
"content": "## Requirements\n\n* OpenAI API key connected to n8n.\n\n* Google Drive account (for storing article images).\n\n* Late API credentials with platform account IDs.\n\n* Valid list of article URLs."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c968e6b7-0af4-4269-b953-2961c85e7f67",
"connections": {
"Code": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"HTML1": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[
{
"node": "GetLate multipublishing",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
},
{
"node": "HTML1",
"type": "main",
"index": 0
}
],
[]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Message a model1",
"type": "main",
"index": 0
}
]
]
},
"Message a model1": {
"main": [
[
{
"node": "GetLate multipublishing",
"type": "main",
"index": 0
}
]
]
},
"GetLate multipublishing": {
"main": [
[]
]
},
"When clicking âExecute workflowâ": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
}
}
}