Created
June 11, 2025 09:51
-
-
Save wottpal/8c3a767c07dd37007375b1c8bad5985c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "SEO Articles to Github Publish Workflow", | |
"nodes": [ | |
{ | |
"parameters": { | |
"httpMethod": "POST", | |
"path": "e4e6a932-b0a7-4434-9fa9-ac63500743ac", | |
"authentication": "headerAuth", | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.webhook", | |
"typeVersion": 2, | |
"position": [ | |
-300, | |
0 | |
], | |
"id": "42f5c392-7993-4f5c-964e-0b24af9e2727", | |
"name": "Webhook", | |
"webhookId": "e4e6a932-b0a7-4434-9fa9-ac63500743ac", | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"fieldToSplitOut": "body.data.articles", | |
"options": { | |
"disableDotNotation": false | |
} | |
}, | |
"type": "n8n-nodes-base.splitOut", | |
"typeVersion": 1, | |
"position": [ | |
20, | |
0 | |
], | |
"id": "c780d15a-98e5-46fd-9dd3-e4db45962aee", | |
"name": "Split Out" | |
}, | |
{ | |
"parameters": { | |
"options": {} | |
}, | |
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing", | |
"typeVersion": 1, | |
"position": [ | |
380, | |
100 | |
], | |
"id": "1273be83-2e42-49ce-84b7-b0c131427c62", | |
"name": "Auto-fixing Output Parser" | |
}, | |
{ | |
"parameters": { | |
"schemaType": "manual", | |
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"subtitle\": {\n\t\t\t\"type\": \"string\",\n \"description\": \"Short article subtile (shorter than meta_description). Engaging, should motivate to read but don't repeat content in title. (MAX 10 words)\"\n\t\t},\n\t\t\"short_title\": {\n\t\t\t\"type\": \"string\",\n \"description\": \"Short version of the original article title in. (MAX 3 words)\"\n\t\t},\n\t\t\"content_markdown\": {\n\t\t\t\"type\": \"string\",\n \"description\": \"New and revised markdown article body with the changes applied as instructed in the prompt. Don't miss anything. Don't change anything else.\"\n\t\t}\n\t}\n}" | |
}, | |
"type": "@n8n/n8n-nodes-langchain.outputParserStructured", | |
"typeVersion": 1.2, | |
"position": [ | |
440, | |
240 | |
], | |
"id": "3d53f04f-1c40-45bc-80ef-2b35ed30f84f", | |
"name": "Structured Output Parser" | |
}, | |
{ | |
"parameters": { | |
"mode": "combine", | |
"combineBy": "combineByPosition", | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.merge", | |
"typeVersion": 3.2, | |
"position": [ | |
780, | |
-80 | |
], | |
"id": "eda1b6a9-de03-4a10-b2d1-43e8278bc832", | |
"name": "Merge" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "2f0a7b9e-f7c8-43e5-98e2-aca917dc44d3", | |
"name": "id", | |
"value": "={{ $json.id }}", | |
"type": "string" | |
}, | |
{ | |
"id": "58cf4bc2-d179-49fd-91bf-84b8e272e021", | |
"name": "locale", | |
"value": "en", | |
"type": "string" | |
}, | |
{ | |
"id": "d803816b-650d-4f2a-a33c-71fbf7043d60", | |
"name": "slug", | |
"value": "={{ $json.slug }}", | |
"type": "string" | |
}, | |
{ | |
"id": "3628a5df-40d1-4819-808a-afbc343b1985", | |
"name": "created_at", | |
"value": "={{ $json.created_at }}", | |
"type": "string" | |
}, | |
{ | |
"id": "66408fe6-d5e1-4db2-a491-8a83c047e668", | |
"name": "title", | |
"value": "={{ $json.title }}", | |
"type": "string" | |
}, | |
{ | |
"id": "a42b101b-3daf-4b8e-a449-4d12477188f2", | |
"name": "subtitle", | |
"value": "={{ $json.output.subtitle }}", | |
"type": "string" | |
}, | |
{ | |
"id": "f2d4eb70-8768-487b-a7b8-7180fb429abc", | |
"name": "short_title", | |
"value": "={{ $json.output.short_title }}", | |
"type": "string" | |
}, | |
{ | |
"id": "871fdf7a-31c6-4ea5-9f99-b6129e002ba4", | |
"name": "image_url", | |
"value": "={{ $json.image_url }}", | |
"type": "string" | |
}, | |
{ | |
"id": "0eb1c511-22bd-4754-80b1-aeb585faab97", | |
"name": "meta_description", | |
"value": "={{ $json.meta_description }}", | |
"type": "string" | |
}, | |
{ | |
"id": "7992993b-ad6d-4e4d-a79c-f26fcb301458", | |
"name": "tags", | |
"value": "={{ $json.tags }}", | |
"type": "array" | |
}, | |
{ | |
"id": "bd12a1d6-5320-4c1c-bce3-292b9a1fcc59", | |
"name": "content_markdown", | |
"value": "={{ $json.output.content_markdown }}", | |
"type": "string" | |
} | |
] | |
}, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
1000, | |
-80 | |
], | |
"id": "ffd2c0d0-4f5c-4fd1-896e-d18bf8355e59", | |
"name": "Edit Fields" | |
}, | |
{ | |
"parameters": { | |
"resource": "file", | |
"operation": "get", | |
"owner": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"repository": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"filePath": "={{ $('Compose File').item.json.file_name }}", | |
"asBinaryProperty": false, | |
"additionalParameters": { | |
"reference": "outrank" | |
} | |
}, | |
"type": "n8n-nodes-base.github", | |
"typeVersion": 1.1, | |
"position": [ | |
3600, | |
420 | |
], | |
"id": "fc26ae11-1adf-4324-b32c-91cdc9961378", | |
"name": "GitHub Read File", | |
"webhookId": "00edddcd-a84b-49e7-b2f9-2490e45b5358", | |
"alwaysOutputData": true, | |
"credentials": {}, | |
"onError": "continueRegularOutput" | |
}, | |
{ | |
"parameters": { | |
"resource": "file", | |
"owner": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"repository": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"filePath": "={{ $('Compose File').item.json.file_name }}", | |
"fileContent": "={{ $('Compose File').item.json.file_content }}", | |
"commitMessage": "=outrank: Publish article '{{ $('Compose File').item.json.slug }}' ({{ $('Compose File').item.json.locale }})", | |
"additionalParameters": { | |
"branch": { | |
"branch": "outrank" | |
} | |
} | |
}, | |
"type": "n8n-nodes-base.github", | |
"typeVersion": 1.1, | |
"position": [ | |
4020, | |
520 | |
], | |
"id": "6d46d98e-b0bf-4f65-a42d-b55f52da3b51", | |
"name": "GitHub Create File", | |
"webhookId": "1b0db29d-e297-4ca6-9dc7-31a61df481a7", | |
"notesInFlow": false, | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"resource": "file", | |
"operation": "edit", | |
"owner": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"repository": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"filePath": "={{ $('Compose File').item.json.file_name }}", | |
"fileContent": "={{ $('Compose File').item.json.file_content }}", | |
"commitMessage": "=outrank: Update article '{{ $('Compose File').item.json.slug }}' ({{ $('Compose File').item.json.locale }})", | |
"additionalParameters": { | |
"branch": { | |
"branch": "outrank" | |
} | |
} | |
}, | |
"type": "n8n-nodes-base.github", | |
"typeVersion": 1.1, | |
"position": [ | |
4020, | |
320 | |
], | |
"id": "2218b587-81cc-450a-b98b-8dcef46a7a00", | |
"name": "GitHub Edit File", | |
"webhookId": "800734a0-da66-42f4-a3fe-202d02c3daf3", | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "2d4e481a-21d1-4d21-96b5-5e9378eedb5a", | |
"name": "file_name", | |
"value": "=content/{{ $json.locale }}/grow/{{ new Date($json.created_at).format('yyyy-MM-dd') }}-{{ $('Edit Fields').item.json.slug }}.mdx", | |
"type": "string" | |
}, | |
{ | |
"id": "2e2c4a18-4341-45de-95af-7ce12f240393", | |
"name": "file_content", | |
"value": "=---\n{{ $json.content_frontmatter }}\n---\n\n{{ $json.content_markdown }}", | |
"type": "string" | |
}, | |
{ | |
"id": "53e35ba6-f93f-48b3-aa4d-6e883a28eac6", | |
"name": "url_preview", | |
"value": "=https://preview.viral.app/{{ $json.locale }}/grow/{{ $json.slug }}", | |
"type": "string" | |
}, | |
{ | |
"id": "f0ca327a-ffee-4fc0-b20e-ce82f9d160a4", | |
"name": "url_production", | |
"value": "=https://viral.app/{{ $json.locale }}/grow/{{ $json.slug }}", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
3260, | |
420 | |
], | |
"id": "382f80e2-c5fc-4c8a-acdf-75ca7064efc3", | |
"name": "Compose File" | |
}, | |
{ | |
"parameters": { | |
"modelName": "models/gemini-2.5-pro-preview-06-05", | |
"options": {} | |
}, | |
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini", | |
"typeVersion": 1, | |
"position": [ | |
1020, | |
840 | |
], | |
"id": "f83670c9-c411-4e9c-adb9-709119eed2ce", | |
"name": "Google Gemini 2.5 Pro Model", | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"modelName": "models/gemini-2.5-flash-preview-05-20", | |
"options": {} | |
}, | |
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini", | |
"typeVersion": 1, | |
"position": [ | |
1240, | |
840 | |
], | |
"id": "2319fbd0-6da8-4e0a-8c5d-77c8a55d42a0", | |
"name": "Google Gemini 2.5 Flash Model", | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "e0db71c6-6dd8-4176-b8c9-e0569eff8a9d", | |
"name": "content_frontmatter", | |
"value": "=slug: /grow/{{ $json.slug }}\ntitle: \"{{ $json.title.replaceAll('\"', \"'\") }}\"\nshortTitle: \"{{ $json.short_title.replaceAll('\"', \"'\") }}\"\nsubtitle: \"{{ $json.subtitle.replaceAll('\"', \"'\") }}\"\ntags: \"{{ $json.tags.join(',').replaceAll('\"', \"'\") }}\"\n\ndatePublished: {{new Date($json.created_at).format('yyyy-MM-dd') }}\ndateModified: {{new Date($json.created_at).format('yyyy-MM-dd') }}\n\nmetaTitle: \"{{ $json.title.replaceAll('\"', \"'\") }}\"\nmetaDescription: \"{{ $json.meta_description.replaceAll('\"', \"'\") }}\"\n\nimage: {{ $json.image_url }}\n\noutrankId: {{ $json.id }}", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
3060, | |
420 | |
], | |
"id": "efd385ed-b917-4f0c-a2c2-0b0040218594", | |
"name": "Compose Frontmatter" | |
}, | |
{ | |
"parameters": { | |
"promptType": "define", | |
"text": "=<TASKS>\nTranslate all fields of the given English article into German. Strictly all given rules and the defined output schema.\n</TASKS>\n\n<ARTICLE_JSON>\n{{ JSON.stringify($json, null, 2) }}\n</ARTICLE_JSON>", | |
"hasOutputParser": true, | |
"messages": { | |
"messageValues": [ | |
{ | |
"message": "You are a professional translator, technical writer, SEO expert, and Markdown & MDX expert. You are translating articles for a blog about TikTok/Instagram/Youtube growth with short-form content (\"viral.app Growth Guide\"). You are translating from English to German content. You always go through each field up for translation consciously and translate, verify, repeat, โฆ. You always think harder. You never do syntax errors.\n\n## CONTEXT\n\"viral.app\" (lowercased) is a suite of tools (e.g. advanced analytics dashboard) to manage marketing on short-form video platforms like TikTok, Instagram, and Youtube to go viral. Get deep AI-powered marketing insights and let AI agents automate anything. Manage UGC creator campaigns. It's specifically targeted towards app developer studios and agencies marketing consumer software (i.e. mobile apps) on TikTok. \n\n## INSTRUCTIONS\nYou translate each field required by the output schema into German from it's given English counterpart. The translation must be as good as written by a native speaker. Proper names or technical terms which are also used in German can be kept as is. The written German content must be as written by a human (humanize!) and should sound native (adapt sentence structure). Keep hyperlinks and image urls unchanged and NEVER hallucinate \"German\" ones. Keep the lengths of field values and paragraphs almost identical or shorter.\n\n## TRANSLATION STYLE\n- In German, be sure to ALWAYS use \"Du\" instead of \"Sie\" (Duzen statt Siezen). \n- In German, all field value lengths and paragraph lengths must be almost EQUAL to their English counterparts. If not possible, ALWAYS prefer shorter translations. Otherwise you will get fired.\n- The writing style should be concise/helpful/technical but informal. We're still a cool startup.\n\n## IMPORTANT RULES\n- You are ONLY allowed to perform the requested translations on the requested fields, nothing else, otherwise you will get fired.\n- You MUST translate each requested field, don't miss a single one, otherwise you will get fired.\n- NEVER change/break the Markdown nor MDX nor HTML syntax.\n- Don't change heading's hierarchy, hyperlinks, image urls, otherwise you will get fired.\n- Don't add title nor tags to the content_markdown output.\n- NEVER hallucinate or change to non-existing hyperlinks nor image URLs.\n- If you are finished at the end, you MUST quadruple-check that your output translation is perfect and matches all the requirements. If not, revise.\n- If you are finished at the end, you MUST quadruple-check that the markdown and mdx syntax is correct EVERYWHERE. If not, revise." | |
} | |
] | |
}, | |
"batching": {} | |
}, | |
"type": "@n8n/n8n-nodes-langchain.chainLlm", | |
"typeVersion": 1.7, | |
"position": [ | |
1500, | |
240 | |
], | |
"id": "e946037e-9fa1-4dc4-b46d-d7f1cd794726", | |
"name": "LLM Translation Chain" | |
}, | |
{ | |
"parameters": { | |
"options": {} | |
}, | |
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing", | |
"typeVersion": 1, | |
"position": [ | |
1580, | |
420 | |
], | |
"id": "96928d00-ba2b-4cc7-bd22-7fd1522cfa43", | |
"name": "Auto-fixing Output Parser1" | |
}, | |
{ | |
"parameters": { | |
"schemaType": "manual", | |
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"slug\": {\n \"type\": \"string\",\n \"description\": \"[Translated to German] URL-friendly article identifier (lowercased, only with hyphens, trimmed, SHORT).\"\n },\n \"title\": {\n \"type\": \"string\",\n \"description\": \"[Translated to German] Main article title\"\n },\n \"subtitle\": {\n \"type\": \"string\",\n \"description\": \"[Translated to German] Short Article subtitle/description (MAX 10 words)\"\n },\n \"short_title\": {\n \"type\": \"string\",\n \"description\": \"[Translated to German] Short Abbreviated title (MAX 3 words)\"\n },\n \"meta_description\": {\n \"type\": \"string\",\n \"description\": \"[Translated to German] SEO meta description\"\n },\n \"content_markdown\": {\n \"type\": \"string\",\n \"description\": \"[Translated to German] Article content in valid markdown format\"\n }\n }\n}" | |
}, | |
"type": "@n8n/n8n-nodes-langchain.outputParserStructured", | |
"typeVersion": 1.2, | |
"position": [ | |
1640, | |
580 | |
], | |
"id": "07a97509-4717-4aac-85de-8bb9f6da1061", | |
"name": "Structured Output Parser1" | |
}, | |
{ | |
"parameters": { | |
"promptType": "define", | |
"text": "=<SANITIZATION_TASKS>\n\n1. Replace YouTube <iframe>'s completely with a custom, self-closing <Embed type=\"youtube\" url=\"https://youtube.com/watch?v={VIDEO_ID}\" /> MDX element. The type must be \"youtube\" and the \"url\" is based on the iframe's src. If the src is already in the \"https://youtube.com/watch?v={VIDEO_ID}\" format: Use the identical one. If it's in the \"https://www.youtube.com/embed/{VIDEO_ID}\" format transform it to \"https://youtube.com/watch?v={VIDEO_ID}\" while keeping the VIDEO_ID identical (important!).\n\n2. Replace all Markdown-style images (e.g. \"\") with custom self-closing MDX `<Image src=\"โฆ\" caption=\"โฆ\" />` components. Make sure to exactly(!) reuse the same image url as `src`. Use the provided alt-text as `caption` property, and if it's just a placeholder like \"Image\" make something SEO-friendly up.\n\n3. Double-check each Markdown-formatted Table syntax. If there is an issue with a table definition, you MUST fix it. Be sure to check well. Keep it semantically/content-wise exactly the same.\n\n4. Double-check Markdown syntax in general. If there are irregularities (e.g. too remove extraenous spaces after list indicator `- Item`). Prefer `_italic_` and `**bold**` syntax.\n\n5. When having \"<\" signs and they are NOT MDX components (e.g. \"< 1%\") you MUST place a space after \"<\" (i.e. \"<\" -> \"< \") to not falsely indicate React components.\n\n</SANITIZATION_TASKS>\n\n<CONTENT_TASKS>\n\n1. At the beginning, if there is an image immediately under the first headline, completely remove it. Only this image at the very top, none else.\n\n2. Almost at the bottom, if there's a call-to-action line emphasizing to register at viral.app, make sure to update the hyperlink to: \"https://viral.app/auth/sign-up\" (exact).\n\n3. If applicable, but not too often, refer to our product/page (viral.app) in the text. E.g. in a competitor comparison (can also only be only loosely matching). Refer to the context about our product in the system prompt. Just 100% make sure not to hallucinate non-existent hyperlinks or image urls (important).\n\n4. Based on the content in the article create a <FAQSection โฆ /> MDX element at the very bottom of the file. It should contain max 5 questions/answers matching the content in the same tone as the article but without duplications. Should be conscise and you can also leave it out if you doesn't think it's applicable. The `FAQSection` must follow this EXACT syntax and must be 100% stricly valid React (without the comments):\n\n```\n// Example:\n<FAQSection \n tagline=\"About โฆ\" \n title=\"Questions & Answers\"\n content={[ \n {\n question: 'โฆ?', \n answer: 'โฆ'\n }\n ]}\n/>\n\n// Important Syntax Notes:\n// โ ๏ธ Do NOT escape double quotes (e.g. `tagline=\"About\"`, NOT `tagline=\\\"About\\\"`) of content attributes and use curly braces for content attribute\n// โ ๏ธ Use a short tagline, e.g. \"About TikTok Marketing\"\n// โ ๏ธ content { โฆ } - NOT content=\"โฆ\"\n// โ ๏ธ Within the nested content-fields (i.e. question & answer) use single quotes and you MUST escape all single quotes in the content itself. Or even better, don't use single quotes within question & answer in the first place\n```\n\n</CONTENT_TASKS>\n\n***\n\n<ARTICLE_TITLE>\n{{ $('Split Out').item.json.title }}\n</ARTICLE_TITLE>\n\n<ARTICLE_TAGS>\n{{ $('Split Out').item.json.tags }}\n</ARTICLE_TAGS>\n\n<ARTICLE_CONTENT_MARKDOWN>\n{{ $('Split Out').item.json.content_markdown }}\n</ARTICLE_CONTENT_MARKDOWN>", | |
"hasOutputParser": true, | |
"messages": { | |
"messageValues": [ | |
{ | |
"message": "You are a professional technical writer, SEO expert, and Markdown & MDX expert. You are revising articles for a blog about TikTok/Instagram/Youtube growth with short-form content (\"viral.app Growth Guide\"). You always go through each task step-by-step consciously and execute, verify, repeat, โฆ. You always think harder. You never do syntax errors.\n\n## INSTRUCTIONS\n1. You revise the given markdown content (under 'content_markdown') based on the given tasks in the prompt as string.\n2. You add new fields (e.g. 'subtitle') as requested in the output schema.\n\n## CONTEXT\n\"viral.app\" (lowercased) is a suite of tools (e.g. advanced analytics dashboard) to manage marketing on short-form video platforms like TikTok, Instagram, and Youtube to go viral. Get deep AI-powered marketing insights and let AI agents automate anything. Manage UGC creator campaigns. It's specifically targeted towards app developer studios and agencies marketing consumer software (i.e. mobile apps) on TikTok. \n\n## IMPORTANT RULES\n- You are ONLY allowed to change what was requested, otherwise you will get fired.\n- You MUST execute each requested task, don't miss a single one, otherwise you will get fired.\n- Don't change heading's hierarchy, hyperlinks, image urls, etc. unless requested, otherwise you will get fired.\n- Don't add title nor tags to the content_markdown output.\n- NEVER hallucinate or change to non-existing hyperlinks nor image URLs.\n- If you are finished at the end, you MUST quadruple-check that you executed each task. And executed each task correctly. If not, revise.\n- If you are finished at the end, you MUST quadruple-check that the markdown and mdx syntax is correct EVERYWHERE. If not, revise." | |
} | |
] | |
} | |
}, | |
"type": "@n8n/n8n-nodes-langchain.chainLlm", | |
"typeVersion": 1.6, | |
"position": [ | |
300, | |
-80 | |
], | |
"id": "5a76bafa-d31a-4f87-b23c-eb37d0fd52c5", | |
"name": "LLM Hydration Chain", | |
"retryOnFail": true | |
}, | |
{ | |
"parameters": { | |
"mode": "combine", | |
"combineBy": "combineByPosition", | |
"options": { | |
"clashHandling": { | |
"values": { | |
"resolveClash": "preferLast" | |
} | |
} | |
} | |
}, | |
"type": "n8n-nodes-base.merge", | |
"typeVersion": 3.2, | |
"position": [ | |
2100, | |
240 | |
], | |
"id": "d8a742eb-3192-44ca-bca2-1ad4612a7d76", | |
"name": "Merge-back Static Fields" | |
}, | |
{ | |
"parameters": { | |
"includeOtherFields": true, | |
"include": "except", | |
"excludeFields": "id,locale,created_at,image_url,tags", | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
1240, | |
240 | |
], | |
"id": "357ade79-7023-4ebb-93bc-f5a3eca5212a", | |
"name": "Remove Static Fields" | |
}, | |
{ | |
"parameters": { | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.splitInBatches", | |
"typeVersion": 3, | |
"position": [ | |
2760, | |
-60 | |
], | |
"id": "fd5d014c-4393-48f4-a2bb-b4e995b119d3", | |
"name": "Loop Over Items" | |
}, | |
{ | |
"parameters": { | |
"conditions": { | |
"options": { | |
"caseSensitive": true, | |
"leftValue": "", | |
"typeValidation": "strict", | |
"version": 2 | |
}, | |
"conditions": [ | |
{ | |
"id": "66532a65-f724-435c-9950-b5fe594fa5a9", | |
"leftValue": "={{ $json.hasField('sha') }}", | |
"rightValue": "", | |
"operator": { | |
"type": "boolean", | |
"operation": "true", | |
"singleValue": true | |
} | |
} | |
], | |
"combinator": "and" | |
}, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.if", | |
"typeVersion": 2.2, | |
"position": [ | |
3780, | |
420 | |
], | |
"id": "06a1040b-f0ce-46f7-9baa-48479eab5fec", | |
"name": "If File Exists", | |
"alwaysOutputData": false | |
}, | |
{ | |
"parameters": {}, | |
"type": "n8n-nodes-base.merge", | |
"typeVersion": 3.2, | |
"position": [ | |
2580, | |
-60 | |
], | |
"id": "081829e0-9c8c-443e-8394-e4d6751c00cc", | |
"name": "Merge1" | |
}, | |
{ | |
"parameters": { | |
"unit": "minutes" | |
}, | |
"type": "n8n-nodes-base.wait", | |
"typeVersion": 1.1, | |
"position": [ | |
3760, | |
-220 | |
], | |
"id": "d464e656-3636-4e4f-bc69-73f3b94033c6", | |
"name": "Wait", | |
"webhookId": "3417ec60-c880-4da3-a87c-a112027b1186" | |
}, | |
{ | |
"parameters": { | |
"select": "channel", | |
"channelId": { | |
"__rl": true, | |
"value": "C08NZ1436TU", | |
"mode": "id" | |
}, | |
"text": "=*Successfully Completed Workflow ๐*\n\n\n{{ $if(!!$json.createdItems.length,`๐ข Published *${$json.createdItems.length}* new article(s): ${$json.createdItems.map((i) => `\\nโข ${i.localeEmoji} ${i.title} (<${i.url_preview}|Preview>)`).join('')}`, 'No articles published.')}}\n\n\n{{ $if(!!$json.editedItems.length,`โ๏ธ Updated *${$json.editedItems.length}* existing article(s):\n${$json.editedItems.map((i) => `\\nโข ${i.localeEmoji} ${i.title} (<${i.url_preview}|Preview>)`).join('')}`, '')}}", | |
"otherOptions": { | |
"includeLinkToWorkflow": false, | |
"mrkdwn": true, | |
"unfurl_links": true | |
} | |
}, | |
"type": "n8n-nodes-base.slack", | |
"typeVersion": 2.3, | |
"position": [ | |
4200, | |
-220 | |
], | |
"id": "6a8b37e5-cab7-471b-af49-87af6a162b8e", | |
"name": "Slack", | |
"webhookId": "6bc0432b-5b7c-4006-88c6-9c8a193c9de0", | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"aggregate": "aggregateAllItemData", | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.aggregate", | |
"typeVersion": 1, | |
"position": [ | |
3260, | |
-220 | |
], | |
"id": "2684b74f-637b-4036-a7e8-29d2171f78f7", | |
"name": "Aggregate" | |
}, | |
{ | |
"parameters": { | |
"content": "## Content Hydration โป๏ธ\n", | |
"height": 900, | |
"width": 940, | |
"color": 4 | |
}, | |
"type": "n8n-nodes-base.stickyNote", | |
"position": [ | |
220, | |
-160 | |
], | |
"typeVersion": 1, | |
"id": "5e6f5f07-4d65-4b04-a758-8283416e02b7", | |
"name": "Sticky Note" | |
}, | |
{ | |
"parameters": { | |
"content": "## Internationalization ๐", | |
"height": 900, | |
"width": 1320 | |
}, | |
"type": "n8n-nodes-base.stickyNote", | |
"position": [ | |
1180, | |
-160 | |
], | |
"typeVersion": 1, | |
"id": "59b359de-cd55-45a3-a422-17bcb65d50fd", | |
"name": "Sticky Note1" | |
}, | |
{ | |
"parameters": { | |
"content": "## Upsert File in Version Control ๐", | |
"height": 700, | |
"width": 1480, | |
"color": 6 | |
}, | |
"type": "n8n-nodes-base.stickyNote", | |
"position": [ | |
2960, | |
40 | |
], | |
"typeVersion": 1, | |
"id": "b53c4326-d83b-4211-9bc6-fcce6c37042f", | |
"name": "Sticky Note2" | |
}, | |
{ | |
"parameters": { | |
"content": "## Live Deployment & Notifications ๐ข ", | |
"height": 360, | |
"width": 1480, | |
"color": 3 | |
}, | |
"type": "n8n-nodes-base.stickyNote", | |
"position": [ | |
2960, | |
-340 | |
], | |
"typeVersion": 1, | |
"id": "5e1e557f-e3c8-414a-b825-3d47869fa533", | |
"name": "Sticky Note3" | |
}, | |
{ | |
"parameters": { | |
"mode": "raw", | |
"jsonOutput": "={{ $json.output }}", | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
1880, | |
240 | |
], | |
"id": "dc95ec14-e813-440b-bd43-d1563cd1fe46", | |
"name": "Map Output" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "84e1ff9b-7e5d-410d-a55c-1438eff89bdc", | |
"name": "locale", | |
"value": "de", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
2320, | |
240 | |
], | |
"id": "eb3bad3d-36e8-4004-8466-da91feab862f", | |
"name": "Update Locale" | |
}, | |
{ | |
"parameters": { | |
"resource": "workflow", | |
"owner": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"repository": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"workflowId": { | |
"__rl": true, | |
"value": "todo.yml", | |
"mode": "filename" | |
}, | |
"ref": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
} | |
}, | |
"type": "n8n-nodes-base.github", | |
"typeVersion": 1.1, | |
"position": [ | |
3560, | |
-220 | |
], | |
"id": "bc69b7e5-a82a-4fd6-8589-e73287a40c70", | |
"name": "GitHub Trigger Merge Workflow", | |
"webhookId": "c4351c84-526e-4c18-bb3e-3ae7a0754b28", | |
"credentials": {} | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "95f0ec20-0730-46cb-a135-51735e61c67d", | |
"name": "action", | |
"value": "edit", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
4220, | |
320 | |
], | |
"id": "9cf77fb9-b9f2-48f7-a6eb-2826cff87c37", | |
"name": "Edit Fields (Edit)" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "95f0ec20-0730-46cb-a135-51735e61c67d", | |
"name": "action", | |
"value": "create", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
4220, | |
520 | |
], | |
"id": "ffff3745-67df-43ac-bf2f-371441b08e08", | |
"name": "Edit Fields (Create)" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "95f0ec20-0730-46cb-a135-51735e61c67d", | |
"name": "action", | |
"value": "noop", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
4220, | |
120 | |
], | |
"id": "f2ace3e3-00c5-4eae-843c-ff992e3a1519", | |
"name": "Edit Fields (Noop)" | |
}, | |
{ | |
"parameters": { | |
"conditions": { | |
"options": { | |
"caseSensitive": true, | |
"leftValue": "", | |
"typeValidation": "strict", | |
"version": 2 | |
}, | |
"conditions": [ | |
{ | |
"id": "bde28c81-1514-4f90-9956-00c265433dd0", | |
"leftValue": "={{ $('GitHub Read File ๐ฉ๐ช').item.json.hasField('sha') }}", | |
"rightValue": false, | |
"operator": { | |
"type": "boolean", | |
"operation": "false", | |
"singleValue": true | |
} | |
}, | |
{ | |
"id": "f52c6326-0171-4b92-809f-1550132fcc96", | |
"leftValue": "={{ $('GitHub Read File ๐บ๐ธ').item.json.hasField('sha') }}", | |
"rightValue": "", | |
"operator": { | |
"type": "boolean", | |
"operation": "false", | |
"singleValue": true | |
} | |
}, | |
{ | |
"id": "5d77318a-c4c5-4062-be98-58ab83c3b0ea", | |
"leftValue": "={{ $('ENV').item.json.UPDATE_EXISTING }}", | |
"rightValue": "", | |
"operator": { | |
"type": "boolean", | |
"operation": "true", | |
"singleValue": true | |
} | |
} | |
], | |
"combinator": "or" | |
}, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.filter", | |
"typeVersion": 2.2, | |
"position": [ | |
-20, | |
480 | |
], | |
"id": "a0c36aeb-8f92-4dcc-a9a2-a55e6b94d983", | |
"name": "Filter" | |
}, | |
{ | |
"parameters": { | |
"content": "## Input Webhook ๐ฅ", | |
"height": 440, | |
"width": 560, | |
"color": 7 | |
}, | |
"type": "n8n-nodes-base.stickyNote", | |
"position": [ | |
-360, | |
-160 | |
], | |
"typeVersion": 1, | |
"id": "9166a630-25ce-4c70-ab65-f0c473883554", | |
"name": "Sticky Note4" | |
}, | |
{ | |
"parameters": { | |
"content": "## Optionally Filter out Existing Articles ๐", | |
"height": 440, | |
"width": 560, | |
"color": 7 | |
}, | |
"type": "n8n-nodes-base.stickyNote", | |
"position": [ | |
-360, | |
300 | |
], | |
"typeVersion": 1, | |
"id": "a6fce23d-fcda-47f0-9bcd-8510e08a9dd0", | |
"name": "Sticky Note5" | |
}, | |
{ | |
"parameters": { | |
"resource": "file", | |
"operation": "get", | |
"owner": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"repository": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"filePath": "=content/de/grow/{{ new Date($('Split Out').item.json.created_at).format('yyyy-MM-dd') }}-{{ $('Split Out').item.json.slug }}.mdx", | |
"asBinaryProperty": false, | |
"additionalParameters": { | |
"reference": "outrank" | |
} | |
}, | |
"type": "n8n-nodes-base.github", | |
"typeVersion": 1.1, | |
"position": [ | |
-240, | |
400 | |
], | |
"id": "c01c23c5-f2ff-49fa-adf8-fe31b47b9036", | |
"name": "GitHub Read File ๐ฉ๐ช", | |
"webhookId": "c5503414-4519-4564-ab60-9717d280485e", | |
"alwaysOutputData": true, | |
"credentials": {}, | |
"onError": "continueRegularOutput" | |
}, | |
{ | |
"parameters": { | |
"resource": "file", | |
"operation": "get", | |
"owner": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"repository": { | |
"__rl": true, | |
"value": "TODO", | |
"mode": "name" | |
}, | |
"filePath": "=content/en/grow/{{ new Date($('Split Out').item.json.created_at).format('yyyy-MM-dd') }}-{{ $('Split Out').item.json.slug }}.mdx", | |
"asBinaryProperty": false, | |
"additionalParameters": { | |
"reference": "outrank" | |
} | |
}, | |
"type": "n8n-nodes-base.github", | |
"typeVersion": 1.1, | |
"position": [ | |
-240, | |
560 | |
], | |
"id": "50f3b733-02eb-476f-9caf-f61f96f13493", | |
"name": "GitHub Read File ๐บ๐ธ", | |
"webhookId": "1b5555dc-673f-4642-bb39-399a30d7cbf1", | |
"alwaysOutputData": true, | |
"credentials": {}, | |
"onError": "continueRegularOutput" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "b7e108db-d6e6-4510-888d-3335a3d35503", | |
"name": "UPDATE_EXISTING", | |
"value": false, | |
"type": "boolean" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
-140, | |
0 | |
], | |
"id": "ebf929b9-b6a4-4809-8bfb-b41046f43a1b", | |
"name": "ENV" | |
}, | |
{ | |
"parameters": { | |
"conditions": { | |
"options": { | |
"caseSensitive": true, | |
"leftValue": "", | |
"typeValidation": "strict", | |
"version": 2 | |
}, | |
"conditions": [ | |
{ | |
"id": "fece80ce-d33d-4ed5-a272-dd4dc5508e8f", | |
"leftValue": "={{ $('ENV').item.json.UPDATE_EXISTING }}", | |
"rightValue": "", | |
"operator": { | |
"type": "boolean", | |
"operation": "true", | |
"singleValue": true | |
} | |
} | |
], | |
"combinator": "and" | |
}, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.if", | |
"typeVersion": 2.2, | |
"position": [ | |
4020, | |
120 | |
], | |
"id": "bcdc617b-5052-4870-8676-5ba5d4a9c565", | |
"name": "If Should Update Existing" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "23936a60-116a-4dc8-9b97-66c95f738865", | |
"name": "editedItems", | |
"value": "={{ \n$('Aggregate').item.json.data\n .filter((i) => i.action === 'edit')\n .map((i) => ({\n ...i, \n localeEmoji: i.locale === 'de' ? '๐ฉ๐ช' : '๐บ๐ธ',\n }))\n}}", | |
"type": "array" | |
}, | |
{ | |
"id": "eab8ae86-5033-4870-8a66-2d3f6da5307e", | |
"name": "createdItems", | |
"value": "={{ \n$('Aggregate').item.json.data\n .filter((i) => i.action === 'create')\n .map((i) => ({\n ...i, \n localeEmoji: i.locale === 'de' ? '๐ฉ๐ช' : '๐บ๐ธ',\n }))\n}}", | |
"type": "array" | |
} | |
] | |
}, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
4020, | |
-220 | |
], | |
"id": "b424631c-b83d-47e3-9af8-efc2befbe181", | |
"name": "Edit Fields for Slack" | |
}, | |
{ | |
"parameters": { | |
"assignments": { | |
"assignments": [ | |
{ | |
"id": "74afdd0c-610b-4113-82d1-f79f5110fe33", | |
"name": "url_preview", | |
"value": "={{ $('Compose File').item.json.url_preview }}", | |
"type": "string" | |
}, | |
{ | |
"id": "745e8811-170b-4c8f-94a2-79fa9848e733", | |
"name": "url_production", | |
"value": "={{ $('Compose File').item.json.url_production }}", | |
"type": "string" | |
}, | |
{ | |
"id": "d3119ed4-bd0c-465e-87a2-e3c136f220bf", | |
"name": "title", | |
"value": "={{ $('Compose File').item.json.title }}", | |
"type": "string" | |
}, | |
{ | |
"id": "902eec9d-be18-4dd5-b99b-a01c7a24e36f", | |
"name": "locale", | |
"value": "={{ $('Compose File').item.json.locale }}", | |
"type": "string" | |
} | |
] | |
}, | |
"includeOtherFields": true, | |
"options": {} | |
}, | |
"type": "n8n-nodes-base.set", | |
"typeVersion": 3.4, | |
"position": [ | |
3060, | |
-220 | |
], | |
"id": "499cc30d-c531-4a03-941a-1f5f581d43b2", | |
"name": "Item Display Fields" | |
} | |
], | |
"pinData": {}, | |
"connections": { | |
"Webhook": { | |
"main": [ | |
[ | |
{ | |
"node": "ENV", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Split Out": { | |
"main": [ | |
[ | |
{ | |
"node": "GitHub Read File ๐ฉ๐ช", | |
"type": "main", | |
"index": 0 | |
}, | |
{ | |
"node": "Merge", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Auto-fixing Output Parser": { | |
"ai_outputParser": [ | |
[ | |
{ | |
"node": "LLM Hydration Chain", | |
"type": "ai_outputParser", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Structured Output Parser": { | |
"ai_outputParser": [ | |
[ | |
{ | |
"node": "Auto-fixing Output Parser", | |
"type": "ai_outputParser", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Merge": { | |
"main": [ | |
[ | |
{ | |
"node": "Edit Fields", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Edit Fields": { | |
"main": [ | |
[ | |
{ | |
"node": "Remove Static Fields", | |
"type": "main", | |
"index": 0 | |
}, | |
{ | |
"node": "Merge-back Static Fields", | |
"type": "main", | |
"index": 0 | |
}, | |
{ | |
"node": "Merge1", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"GitHub Read File": { | |
"main": [ | |
[ | |
{ | |
"node": "If File Exists", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"GitHub Create File": { | |
"main": [ | |
[ | |
{ | |
"node": "Edit Fields (Create)", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Compose File": { | |
"main": [ | |
[ | |
{ | |
"node": "GitHub Read File", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Google Gemini 2.5 Pro Model": { | |
"ai_languageModel": [ | |
[ | |
{ | |
"node": "LLM Hydration Chain", | |
"type": "ai_languageModel", | |
"index": 0 | |
}, | |
{ | |
"node": "LLM Translation Chain", | |
"type": "ai_languageModel", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Google Gemini 2.5 Flash Model": { | |
"ai_languageModel": [ | |
[ | |
{ | |
"node": "Auto-fixing Output Parser", | |
"type": "ai_languageModel", | |
"index": 0 | |
}, | |
{ | |
"node": "Auto-fixing Output Parser1", | |
"type": "ai_languageModel", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Compose Frontmatter": { | |
"main": [ | |
[ | |
{ | |
"node": "Compose File", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Auto-fixing Output Parser1": { | |
"ai_outputParser": [ | |
[ | |
{ | |
"node": "LLM Translation Chain", | |
"type": "ai_outputParser", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Structured Output Parser1": { | |
"ai_outputParser": [ | |
[ | |
{ | |
"node": "Auto-fixing Output Parser1", | |
"type": "ai_outputParser", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"LLM Hydration Chain": { | |
"main": [ | |
[ | |
{ | |
"node": "Merge", | |
"type": "main", | |
"index": 1 | |
} | |
] | |
] | |
}, | |
"LLM Translation Chain": { | |
"main": [ | |
[ | |
{ | |
"node": "Map Output", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Merge-back Static Fields": { | |
"main": [ | |
[ | |
{ | |
"node": "Update Locale", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Remove Static Fields": { | |
"main": [ | |
[ | |
{ | |
"node": "LLM Translation Chain", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Loop Over Items": { | |
"main": [ | |
[ | |
{ | |
"node": "Item Display Fields", | |
"type": "main", | |
"index": 0 | |
} | |
], | |
[ | |
{ | |
"node": "Compose Frontmatter", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"GitHub Edit File": { | |
"main": [ | |
[ | |
{ | |
"node": "Edit Fields (Edit)", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"If File Exists": { | |
"main": [ | |
[ | |
{ | |
"node": "If Should Update Existing", | |
"type": "main", | |
"index": 0 | |
} | |
], | |
[ | |
{ | |
"node": "GitHub Create File", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Merge1": { | |
"main": [ | |
[ | |
{ | |
"node": "Loop Over Items", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Wait": { | |
"main": [ | |
[ | |
{ | |
"node": "Edit Fields for Slack", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Aggregate": { | |
"main": [ | |
[ | |
{ | |
"node": "GitHub Trigger Merge Workflow", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Slack": { | |
"main": [ | |
[] | |
] | |
}, | |
"Map Output": { | |
"main": [ | |
[ | |
{ | |
"node": "Merge-back Static Fields", | |
"type": "main", | |
"index": 1 | |
} | |
] | |
] | |
}, | |
"Update Locale": { | |
"main": [ | |
[ | |
{ | |
"node": "Merge1", | |
"type": "main", | |
"index": 1 | |
} | |
] | |
] | |
}, | |
"GitHub Trigger Merge Workflow": { | |
"main": [ | |
[ | |
{ | |
"node": "Wait", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Edit Fields (Edit)": { | |
"main": [ | |
[ | |
{ | |
"node": "Loop Over Items", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Edit Fields (Create)": { | |
"main": [ | |
[ | |
{ | |
"node": "Loop Over Items", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Edit Fields (Noop)": { | |
"main": [ | |
[ | |
{ | |
"node": "Loop Over Items", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Filter": { | |
"main": [ | |
[ | |
{ | |
"node": "LLM Hydration Chain", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"GitHub Read File ๐ฉ๐ช": { | |
"main": [ | |
[ | |
{ | |
"node": "GitHub Read File ๐บ๐ธ", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"GitHub Read File ๐บ๐ธ": { | |
"main": [ | |
[ | |
{ | |
"node": "Filter", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"ENV": { | |
"main": [ | |
[ | |
{ | |
"node": "Split Out", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"If Should Update Existing": { | |
"main": [ | |
[ | |
{ | |
"node": "GitHub Edit File", | |
"type": "main", | |
"index": 0 | |
} | |
], | |
[ | |
{ | |
"node": "Edit Fields (Noop)", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Edit Fields for Slack": { | |
"main": [ | |
[ | |
{ | |
"node": "Slack", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Item Display Fields": { | |
"main": [ | |
[ | |
{ | |
"node": "Aggregate", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
} | |
}, | |
"active": false, | |
"settings": { | |
"executionOrder": "v1", | |
"callerPolicy": "workflowsFromSameOwner" | |
}, | |
"versionId": "97b13ed6-ff6d-4acf-b364-46ead6c89217", | |
"meta": { | |
"templateCredsSetupCompleted": true, | |
"instanceId": "" | |
}, | |
"id": "", | |
"tags": [] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment