This workflow follows the Gmail → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Blog Post \u2192 Social Media",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 1
}
]
}
},
"id": "a1b2c3d4-0000-0001-0000-a1b2c3d40001",
"name": "Every Hour",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-3152,
96
]
},
{
"parameters": {
"url": "https://teddyspark.co/blog/index.xml"
},
"id": "a1b2c3d4-0000-0002-0000-a1b2c3d40002",
"name": "Fetch RSS Feed",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1,
"position": [
-2912,
96
]
},
{
"parameters": {
"jsCode": "const staticData = $getWorkflowStaticData('global');\nconst isFirstRun = !staticData.seenLinks;\nif (!staticData.seenLinks) staticData.seenLinks = [];\n\nconst items = $input.all();\nconst newItems = isFirstRun ? [] : items.filter(item => !staticData.seenLinks.includes(item.json.link));\n\nconst allLinks = items.map(i => i.json.link).filter(Boolean);\nstaticData.seenLinks = [...new Set([...staticData.seenLinks, ...allLinks])].slice(-200);\n\nreturn newItems;"
},
"id": "a1b2c3d4-0000-0003-0000-a1b2c3d40003",
"name": "Filter New Posts",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-2672,
96
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "f1",
"name": "postTitle",
"value": "={{ $json.title }}",
"type": "string"
},
{
"id": "f2",
"name": "postUrl",
"value": "={{ $json.link }}",
"type": "string"
},
{
"id": "f3",
"name": "postDescription",
"value": "={{ $json.contentSnippet || $json.description || '' }}",
"type": "string"
},
{
"id": "f4",
"name": "postCategories",
"value": "={{ Array.isArray($json.categories) ? $json.categories.join(', ') : ($json.categories || '') }}",
"type": "string"
}
]
},
"options": {}
},
"id": "e31081a3-b1fc-41c5-9928-05d2f95711af",
"name": "Prepare Post Data",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-2432,
96
]
},
{
"parameters": {
"jsCode": "const d = $input.first().json;\n\nreturn [{\n json: {\n ...d,\n anthropicBody: JSON.stringify({\n model: 'claude-sonnet-4-6',\n max_tokens: 1024,\n messages: [{\n role: 'user',\n content: [\n 'You are the social media manager for Teddy Spark (teddyspark.co), a maker, tech, and DIY blog.',\n '',\n 'A new blog post has just been published. Draft three platform-specific posts to promote it. Each post should be written for a different audience and context \u2014 not just the same text reformatted.',\n '',\n 'Post details:',\n 'Title: ' + d.postTitle,\n 'URL: ' + d.postUrl,\n 'Description: ' + d.postDescription,\n 'Categories: ' + d.postCategories,\n '',\n 'Platform requirements:',\n '- facebook: Audience is hobbyists, makers, and general tech enthusiasts. Conversational and personal. Tell the story behind the build or problem solved. 100-200 words. Include the URL at the end.',\n '- linkedin: Audience is professionals and engineers. Lead with the insight or skill. Highlight what someone could learn or apply. Professional but not corporate. Include the URL at the end. 150-250 words.',\n '- bluesky: Audience is tech-forward early adopters and the open web crowd. Punchy, opinionated, slightly nerdy. Under 240 characters total including URL and 2-3 hashtags.',\n '',\n 'Return ONLY a valid JSON object with exactly three keys: facebook, linkedin, bluesky.',\n 'No markdown code fences. No explanation. Just the raw JSON object.'\n ].join('\\n')\n }]\n })\n }\n}];"
},
"id": "01306e17-767a-4cf9-a0aa-da66f9e082d8",
"name": "Build Claude Request",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-2192,
96
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "anthropic-version",
"value": "2023-06-01"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={{ $json.anthropicBody }}",
"options": {}
},
"id": "bc45bf06-1ab2-47c0-9e0b-f477f9163855",
"name": "Draft with Claude",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1952,
96
]
},
{
"parameters": {
"jsCode": "const apiResp = $input.first().json;\nconst postData = $('Prepare Post Data').first().json;\n\nlet drafts;\ntry {\n const text = apiResp.content[0].text;\n const cleaned = text.replace(/^```(?:json)?\\s*/i, '').replace(/\\s*```$/i, '').trim();\n drafts = JSON.parse(cleaned);\n} catch (e) {\n throw new Error('Failed to parse Claude response as JSON. Raw: ' + apiResp.content[0].text);\n}\n\nreturn [{\n json: {\n postTitle: postData.postTitle,\n postUrl: postData.postUrl,\n facebook: drafts.facebook,\n linkedin: drafts.linkedin,\n bluesky: drafts.bluesky\n }\n}];"
},
"id": "51d98b50-665b-42fe-9fcc-38238f701252",
"name": "Parse Drafts",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-1712,
96
]
},
{
"parameters": {
"method": "POST",
"url": "https://ntfy.tail5017c.ts.net/blog-reviews",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ 'Bearer ' + $env.NTFY_TOKEN }}"
},
{
"name": "Title",
"value": "=[Facebook] Review: {{ $json.postTitle }}"
},
{
"name": "Tags",
"value": "thumbsup,thumbsdown"
},
{
"name": "Priority",
"value": "high"
},
{
"name": "Actions",
"value": "=view, Open Review Form, {{ $execution.resumeUrl }}"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "text/plain",
"body": "={{ $json.facebook }}"
},
"id": "be0e883d-2c32-45ba-81f3-bb1839b08506",
"name": "Facebook: Notify",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1424,
-80
]
},
{
"parameters": {
"resume": "form",
"formTitle": "Facebook Post Review",
"formDescription": "={{ 'Draft:\\n\\n' + $('Parse Drafts').first().json.facebook + '\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nApprove, edit, or reject below. To edit: select \"Approve with edits\" and paste your revised text.' }}",
"formFields": {
"values": [
{
"fieldLabel": "Decision",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Approve"
},
{
"option": "Approve with edits"
},
{
"option": "Reject"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Edited text",
"fieldType": "textarea",
"placeholder": "Leave blank to use the AI draft. Paste your revised text here if editing."
}
]
},
"options": {}
},
"id": "eddacb56-5f0f-4cd1-85c8-ee014670c258",
"name": "Facebook Form",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-1184,
-80
]
},
{
"parameters": {
"jsCode": "const form = $input.first().json;\nconst drafts = $('Parse Drafts').first().json;\n\nconst editedText = (form['Edited text'] || '').trim();\nconst decision = form.Decision;\n\nreturn [{\n json: {\n decision,\n shouldPost: decision !== 'Reject',\n postText: editedText || drafts.facebook,\n postUrl: drafts.postUrl,\n postTitle: drafts.postTitle\n }\n}];"
},
"id": "c146fd2e-0297-4ee8-b4db-64ae5b7ba6b1",
"name": "Resolve Facebook Text",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-944,
-80
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "fb-condition",
"leftValue": "={{ $json.decision }}",
"rightValue": "Reject",
"operator": {
"type": "string",
"operation": "notEquals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "8943acab-023e-4007-9440-d5d20589ed3a",
"name": "IF: Post to Facebook",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-704,
-80
]
},
{
"parameters": {
"method": "POST",
"url": "=https://graph.facebook.com/v19.0/{{ $vars.FACEBOOK_PAGE_ID }}/feed",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "message",
"value": "={{ $json.postText }}"
},
{
"name": "link",
"value": "={{ $json.postUrl }}"
}
]
},
"options": {}
},
"id": "6f09ba61-3937-4e94-a802-5e357dc924b4",
"name": "Facebook: Post",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-464,
-96
]
},
{
"parameters": {
"method": "POST",
"url": "https://ntfy.tail5017c.ts.net/blog-reviews",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ 'Bearer ' + $env.NTFY_TOKEN }}"
},
{
"name": "Title",
"value": "=[LinkedIn] Review: {{ $('Parse Drafts').first().json.postTitle }}"
},
{
"name": "Tags",
"value": "thumbsup,thumbsdown"
},
{
"name": "Priority",
"value": "high"
},
{
"name": "Actions",
"value": "=view, Open Review Form, {{ $execution.resumeUrl }}"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "text/plain",
"body": "={{ $('Parse Drafts').first().json.linkedin }}"
},
"id": "820d7a5c-bdaa-43dc-be45-ca6e3447b99d",
"name": "LinkedIn: Notify",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1424,
96
]
},
{
"parameters": {
"resume": "form",
"formTitle": "LinkedIn Post Review",
"formDescription": "={{ 'Draft:\\n\\n' + $('Parse Drafts').first().json.linkedin + '\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nApprove, edit, or reject below. To edit: select \"Approve with edits\" and paste your revised text.' }}",
"formFields": {
"values": [
{
"fieldLabel": "Decision",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Approve"
},
{
"option": "Approve with edits"
},
{
"option": "Reject"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Edited text",
"fieldType": "textarea",
"placeholder": "Leave blank to use the AI draft. Paste your revised text here if editing."
}
]
},
"options": {}
},
"id": "934f479d-7bc9-40b5-9ddf-17b05a2a6edb",
"name": "LinkedIn Form",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-1184,
96
]
},
{
"parameters": {
"jsCode": "const form = $input.first().json;\nconst drafts = $('Parse Drafts').first().json;\n\nconst editedText = (form['Edited text'] || '').trim();\nconst decision = form.Decision;\n\nreturn [{\n json: {\n decision,\n shouldPost: decision !== 'Reject',\n postText: editedText || drafts.linkedin,\n postUrl: drafts.postUrl,\n postTitle: drafts.postTitle\n }\n}];"
},
"id": "b173dbc4-02c9-493b-b675-cf97b730835a",
"name": "Resolve LinkedIn Text",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-944,
96
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "li-condition",
"leftValue": "={{ $json.decision }}",
"rightValue": "Reject",
"operator": {
"type": "string",
"operation": "notEquals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "036cf144-da88-4f8e-814a-6b99fcc9db9a",
"name": "IF: Post to LinkedIn",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-704,
96
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.linkedin.com/v2/ugcPosts",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Restli-Protocol-Version",
"value": "2.0.0"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={{ JSON.stringify({ author: 'urn:li:person:' + $vars.LINKEDIN_PERSON_ID, lifecycleState: 'PUBLISHED', specificContent: { 'com.linkedin.ugc.ShareContent': { shareCommentary: { text: $json.postText }, shareMediaCategory: 'ARTICLE', media: [{ status: 'READY', originalUrl: $json.postUrl, title: { text: $json.postTitle } }] } }, visibility: { 'com.linkedin.ugc.MemberNetworkVisibility': 'PUBLIC' } }) }}",
"options": {}
},
"id": "e8dad6d4-f053-4a3f-8c79-946f2ab05338",
"name": "LinkedIn: Post",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-464,
80
]
},
{
"parameters": {
"method": "POST",
"url": "https://ntfy.tail5017c.ts.net/blog-reviews",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ 'Bearer ' + $env.NTFY_TOKEN }}"
},
{
"name": "Title",
"value": "=[Bluesky] Review: {{ $('Parse Drafts').first().json.postTitle }}"
},
{
"name": "Tags",
"value": "thumbsup,thumbsdown"
},
{
"name": "Priority",
"value": "high"
},
{
"name": "Actions",
"value": "=view, Open Review Form, {{ $execution.resumeUrl }}"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "text/plain",
"body": "={{ $('Parse Drafts').first().json.bluesky }}"
},
"id": "18895a14-9183-41c3-b307-9e75b0c90e77",
"name": "Bluesky: Notify",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1424,
272
]
},
{
"parameters": {
"resume": "form",
"formTitle": "Bluesky Post Review",
"formDescription": "={{ 'Draft (' + $('Parse Drafts').first().json.bluesky.length + '/240 chars):\\n\\n' + $('Parse Drafts').first().json.bluesky + '\\n\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\nApprove, edit, or reject below. Keep edits under 240 characters.' }}",
"formFields": {
"values": [
{
"fieldLabel": "Decision",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Approve"
},
{
"option": "Approve with edits"
},
{
"option": "Reject"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Edited text",
"fieldType": "textarea",
"placeholder": "Leave blank to use the AI draft. Keep under 240 characters."
}
]
},
"options": {}
},
"id": "38ed7a4b-fcc7-4470-99e7-8a0191ab47d5",
"name": "Bluesky Form",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-1184,
272
]
},
{
"parameters": {
"jsCode": "const form = $input.first().json;\nconst drafts = $('Parse Drafts').first().json;\n\nconst editedText = (form['Edited text'] || '').trim();\nconst decision = form.Decision;\n\nreturn [{\n json: {\n decision,\n shouldPost: decision !== 'Reject',\n postText: editedText || drafts.bluesky,\n postUrl: drafts.postUrl,\n postTitle: drafts.postTitle\n }\n}];"
},
"id": "9799679d-47cc-4b13-baea-fd3f2c7a64f8",
"name": "Resolve Bluesky Text",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-944,
272
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "bs-condition",
"leftValue": "={{ $json.decision }}",
"rightValue": "Reject",
"operator": {
"type": "string",
"operation": "notEquals"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "9b377da5-9aa6-44d8-b551-87b1a52d4e2d",
"name": "IF: Post to Bluesky",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-704,
272
]
},
{
"parameters": {
"method": "POST",
"url": "https://bsky.social/xrpc/com.atproto.server.createSession",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "identifier",
"value": "={{ $vars.BLUESKY_HANDLE }}"
},
{
"name": "password",
"value": "={{ $env.BLUESKY_APP_PASSWORD }}"
}
]
},
"options": {}
},
"id": "7b2bce5d-eaeb-419d-9c7d-0970937520af",
"name": "Bluesky: Auth",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-464,
256
]
},
{
"parameters": {
"jsCode": "const session = $input.first().json;\nconst resolved = $('Resolve Bluesky Text').first().json;\n\nreturn [{\n json: {\n accessJwt: session.accessJwt,\n did: session.did,\n blueskyBody: JSON.stringify({\n repo: session.did,\n collection: 'app.bsky.feed.post',\n record: {\n '$type': 'app.bsky.feed.post',\n text: resolved.postText,\n createdAt: new Date().toISOString()\n }\n })\n }\n}];"
},
"id": "71049d2f-8c1d-455a-be1e-e1ccace64b92",
"name": "Build Bluesky Post",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-224,
256
]
},
{
"parameters": {
"method": "POST",
"url": "https://bsky.social/xrpc/com.atproto.repo.createRecord",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $json.accessJwt }}"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={{ $json.blueskyBody }}",
"options": {}
},
"id": "551f52f9-8f2d-4f34-b150-39e73fceae60",
"name": "Bluesky: Post",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
16,
256
]
}
],
"connections": {
"Every Hour": {
"main": [
[
{
"node": "Fetch RSS Feed",
"type": "main",
"index": 0
}
]
]
},
"Fetch RSS Feed": {
"main": [
[
{
"node": "Filter New Posts",
"type": "main",
"index": 0
}
]
]
},
"Filter New Posts": {
"main": [
[
{
"node": "Prepare Post Data",
"type": "main",
"index": 0
}
]
]
},
"Prepare Post Data": {
"main": [
[
{
"node": "Build Claude Request",
"type": "main",
"index": 0
}
]
]
},
"Build Claude Request": {
"main": [
[
{
"node": "Draft with Claude",
"type": "main",
"index": 0
}
]
]
},
"Draft with Claude": {
"main": [
[
{
"node": "Parse Drafts",
"type": "main",
"index": 0
}
]
]
},
"Parse Drafts": {
"main": [
[
{
"node": "Facebook: Notify",
"type": "main",
"index": 0
},
{
"node": "LinkedIn: Notify",
"type": "main",
"index": 0
},
{
"node": "Bluesky: Notify",
"type": "main",
"index": 0
}
]
]
},
"Facebook: Notify": {
"main": [
[
{
"node": "Facebook Form",
"type": "main",
"index": 0
}
]
]
},
"Facebook Form": {
"main": [
[
{
"node": "Resolve Facebook Text",
"type": "main",
"index": 0
}
]
]
},
"Resolve Facebook Text": {
"main": [
[
{
"node": "IF: Post to Facebook",
"type": "main",
"index": 0
}
]
]
},
"IF: Post to Facebook": {
"main": [
[
{
"node": "Facebook: Post",
"type": "main",
"index": 0
}
]
]
},
"LinkedIn: Notify": {
"main": [
[
{
"node": "LinkedIn Form",
"type": "main",
"index": 0
}
]
]
},
"LinkedIn Form": {
"main": [
[
{
"node": "Resolve LinkedIn Text",
"type": "main",
"index": 0
}
]
]
},
"Resolve LinkedIn Text": {
"main": [
[
{
"node": "IF: Post to LinkedIn",
"type": "main",
"index": 0
}
]
]
},
"IF: Post to LinkedIn": {
"main": [
[
{
"node": "LinkedIn: Post",
"type": "main",
"index": 0
}
]
]
},
"Bluesky: Notify": {
"main": [
[
{
"node": "Bluesky Form",
"type": "main",
"index": 0
}
]
]
},
"Bluesky Form": {
"main": [
[
{
"node": "Resolve Bluesky Text",
"type": "main",
"index": 0
}
]
]
},
"Resolve Bluesky Text": {
"main": [
[
{
"node": "IF: Post to Bluesky",
"type": "main",
"index": 0
}
]
]
},
"IF: Post to Bluesky": {
"main": [
[
{
"node": "Bluesky: Auth",
"type": "main",
"index": 0
}
]
]
},
"Bluesky: Auth": {
"main": [
[
{
"node": "Build Bluesky Post",
"type": "main",
"index": 0
}
]
]
},
"Build Bluesky Post": {
"main": [
[
{
"node": "Bluesky: Post",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"meta": {
"templateCredsSetupCompleted": true
},
"tags": []
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Effortlessly amplify your blog's reach by automatically generating tailored social media posts whenever you publish new content, saving hours of manual promotion and boosting audience engagement across platforms. This workflow suits content creators, marketers, and bloggers who maintain an active online presence and want to streamline sharing without constant oversight. It kicks off with an RSS feed trigger that detects fresh blog posts, then leverages AI via an HTTP request to Claude for drafting custom messages, before dispatching them through Gmail for review and posting to Facebook.
Use this workflow for event-driven automation that handles one-off posts reliably, especially if your blog updates sporadically and you prioritise quality over speed. Avoid it for high-volume sites needing real-time sharing or complex multi-platform scheduling, as it focuses on a single chain without built-in queuing. Common variations include swapping Claude for another AI service or adding Twitter integration via additional HTTP requests for broader distribution.
About this workflow
Blog Post → Social Media. Uses rssFeedTrigger, httpRequest, gmail. Event-driven trigger; 22 nodes.
Source: https://github.com/buzzsurfr/site/blob/172598e20b109182c83da0c08b064079790bd7f5/.n8n/workflows/blog-social-media.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.
Automate CSV imports into HubSpot without the mess. Powered by n8n. Supercharged by Pollup AI.
Echo Brand Voice Analysis (Processor) - TASK-074 Dec 10 Fix. Uses formTrigger, httpRequest, executeWorkflowTrigger, moveBinaryData. Event-driven trigger; 40 nodes.
AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.
Tiktok to video copy (paylaşılacak). Uses httpRequest, googleDrive, googleSheets, gmail. Event-driven trigger; 39 nodes.