8
n8n 中文网amn8n.com

博客文章转换为多平台内容(GPT-4o、Unsplash 和 Airtable)

中级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 14 个节点。主要使用 Code, Slack, Twitter, Airtable, LinkedIn 等节点。 使用 GPT-4o、Unsplash 和 Airtable 将博客文章转换为多平台内容

前置要求
  • Slack Bot Token 或 Webhook URL
  • Twitter API 凭证
  • Airtable API Key
  • LinkedIn API 凭证
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "d23ca638a83fba54c06ee57ee6430730afe25e4177b234d2a702bd83cbe8f349"
  },
  "nodes": [
    {
      "id": "573faa7c-5f37-404c-b02d-7bc722a5ec1b",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        11168,
        11216
      ],
      "parameters": {
        "width": 912,
        "height": 1056,
        "content": "## 🤖 AI 内容再利用引擎"
      },
      "typeVersion": 1
    },
    {
      "id": "dfd2b2e0-b0c5-4d35-9fe4-b57e8d29d60f",
      "name": "新博客文章4",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        12336,
        11552
      ],
      "parameters": {
        "url": "https://yourblog.com/feed",
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "c874f911-4d0d-4c79-8f52-6171f4bec485",
      "name": "获取完整内容4",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        12544,
        11552
      ],
      "parameters": {
        "url": "={{ $json.link }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "239ce056-5b8e-4207-8935-f00a656b55df",
      "name": "清理和提取内容4",
      "type": "n8n-nodes-base.code",
      "position": [
        12768,
        11552
      ],
      "parameters": {
        "jsCode": "// Extract and clean blog content\nconst html = $input.first().json.data;\nconst blogData = $('New Blog Post4').first().json;\n\n// Remove HTML tags\nconst cleanText = html\n  .replace(/<script[^>]*>.*?<\\/script>/gi, '')\n  .replace(/<style[^>]*>.*?<\\/style>/gi, '')\n  .replace(/<[^>]+>/g, ' ')\n  .replace(/\\s+/g, ' ')\n  .trim();\n\n// Extract first 2000 chars for AI processing\nconst contentPreview = cleanText.substring(0, 2000);\n\nreturn {\n  json: {\n    title: blogData.title,\n    url: blogData.link,\n    author: blogData.creator || 'Unknown',\n    published_date: blogData.pubDate,\n    content: contentPreview,\n    full_content: cleanText,\n    excerpt: cleanText.substring(0, 300) + '...'\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "9004171e-7be2-4010-82f9-0ebe2061b7f3",
      "name": "AI 内容再利用链4",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        12992,
        11552
      ],
      "parameters": {
        "text": "=You are a professional content marketer. Repurpose this blog post into 5 different formats optimized for social media platforms.\n\nBlog Title: {{ $json.title }}\nContent: {{ $json.content }}\nURL: {{ $json.url }}\n\nCreate the following in JSON format:\n\n{\n  \"linkedin_post\": {\n    \"text\": \"Professional LinkedIn post (1300 chars max, engaging hook, 3 key insights, CTA)\",\n    \"hashtags\": [\"5 relevant hashtags\"]\n  },\n  \"twitter_thread\": {\n    \"tweets\": [\n      \"Tweet 1: Hook (280 chars)\",\n      \"Tweet 2: Key point 1 (280 chars)\",\n      \"Tweet 3: Key point 2 (280 chars)\",\n      \"Tweet 4: Conclusion + link (280 chars)\"\n    ],\n    \"hashtags\": [\"3 trending hashtags\"]\n  },\n  \"instagram_caption\": {\n    \"text\": \"Engaging Instagram caption (2000 chars max, storytelling format, emoji-friendly)\",\n    \"hashtags\": [\"10 relevant hashtags\"],\n    \"cta\": \"Call-to-action\"\n  },\n  \"email_snippet\": {\n    \"subject\": \"Compelling email subject line\",\n    \"preview_text\": \"Email preview text (100 chars)\",\n    \"body\": \"Email newsletter section (300 words, conversational tone)\"\n  },\n  \"video_script\": {\n    \"hook\": \"First 5 seconds hook for TikTok/YouTube Shorts\",\n    \"main_points\": [\"3 key talking points\"],\n    \"cta\": \"Ending call-to-action\",\n    \"duration\": \"30-60 seconds\"\n  }\n}\n\nEnsure each format:\n- Maintains the core message\n- Optimized for platform-specific best practices\n- Includes engaging hooks and CTAs\n- Uses appropriate tone for each platform",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.4
    },
    {
      "id": "6d293490-a188-4471-ad80-9ecd0567ce54",
      "name": "OpenAI 聊天模型5",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        13008,
        11824
      ],
      "parameters": {
        "model": "gpt-4o",
        "options": {
          "maxTokens": 3000,
          "temperature": 0.7,
          "responseFormat": "json_object"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b295aa4c-5df9-4f1a-a0aa-4b6bba6c3fe2",
      "name": "结构化输出解析器5",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        13120,
        11744
      ],
      "parameters": {
        "autoFix": true,
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"linkedin_post\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"text\": {\n          \"type\": \"string\",\n          \"description\": \"Professional LinkedIn post (1300 chars max)\"\n        },\n        \"hashtags\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"5 relevant hashtags\"\n        }\n      },\n      \"required\": [\"text\", \"hashtags\"]\n    },\n    \"twitter_thread\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"tweets\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"4 tweets, 280 chars each\"\n        },\n        \"hashtags\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"3 trending hashtags\"\n        }\n      },\n      \"required\": [\"tweets\", \"hashtags\"]\n    },\n    \"instagram_caption\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"text\": {\n          \"type\": \"string\",\n          \"description\": \"Engaging Instagram caption (2000 chars max)\"\n        },\n        \"hashtags\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"10 relevant hashtags\"\n        },\n        \"cta\": {\n          \"type\": \"string\",\n          \"description\": \"Call-to-action\"\n        }\n      },\n      \"required\": [\"text\", \"hashtags\", \"cta\"]\n    },\n    \"email_snippet\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"subject\": {\n          \"type\": \"string\",\n          \"description\": \"Compelling email subject line\"\n        },\n        \"preview_text\": {\n          \"type\": \"string\",\n          \"description\": \"Email preview text (100 chars)\"\n        },\n        \"body\": {\n          \"type\": \"string\",\n          \"description\": \"Email newsletter section (300 words)\"\n        }\n      },\n      \"required\": [\"subject\", \"preview_text\", \"body\"]\n    },\n    \"video_script\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"hook\": {\n          \"type\": \"string\",\n          \"description\": \"First 5 seconds hook\"\n        },\n        \"main_points\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"3 key talking points\"\n        },\n        \"cta\": {\n          \"type\": \"string\",\n          \"description\": \"Ending call-to-action\"\n        },\n        \"duration\": {\n          \"type\": \"string\",\n          \"description\": \"Video duration (30-60 seconds)\"\n        }\n      },\n      \"required\": [\"hook\", \"main_points\", \"cta\", \"duration\"]\n    }\n  },\n  \"required\": [\"linkedin_post\", \"twitter_thread\", \"instagram_caption\", \"email_snippet\", \"video_script\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "6cc0265d-5c0f-491b-b575-7373e44fdca1",
      "name": "结构化输出4",
      "type": "n8n-nodes-base.code",
      "position": [
        13344,
        11552
      ],
      "parameters": {
        "jsCode": "// Parse AI-generated content\nconst aiResponse = JSON.parse($input.first().json.text);\nconst blogData = $('Clean & Extract Content4').first().json;\n\nreturn {\n  json: {\n    // Original content\n    original_title: blogData.title,\n    original_url: blogData.url,\n    published_date: blogData.published_date,\n    \n    // Repurposed content\n    linkedin: aiResponse.linkedin_post,\n    twitter: aiResponse.twitter_thread,\n    instagram: aiResponse.instagram_caption,\n    email: aiResponse.email_snippet,\n    video: aiResponse.video_script,\n    \n    // Metadata\n    repurposed_date: new Date().toISOString(),\n    status: 'ready_for_review'\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "f931e171-820d-46c9-95a6-c7d1c7d954d4",
      "name": "获取图片 (Unsplash)4",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        13552,
        11552
      ],
      "parameters": {
        "url": "=https://api.unsplash.com/search/photos?query={{ $json.original_title.split(' ').slice(0, 3).join(' ') }}&per_page=3",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "exVxOWDpxBu7XVql",
          "name": "nithichote.com header auth key"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e24a03c0-4cf6-4b89-aedf-17d6c26c8be3",
      "name": "添加图片建议4",
      "type": "n8n-nodes-base.code",
      "position": [
        13776,
        11552
      ],
      "parameters": {
        "jsCode": "// Add image suggestions to content\nconst content = $('Structure Output4').first().json;\nconst images = $input.first().json.results || [];\n\nreturn {\n  json: {\n    ...content,\n    suggested_images: images.slice(0, 3).map(img => ({\n      url: img.urls.regular,\n      thumb: img.urls.thumb,\n      alt: img.alt_description,\n      photographer: img.user.name,\n      download_url: img.links.download\n    }))\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "b72f9a26-60e3-4764-8f92-9499481ac249",
      "name": "通知内容团队4",
      "type": "n8n-nodes-base.slack",
      "position": [
        14000,
        11552
      ],
      "webhookId": "347a6932-5b69-4a86-b033-6a591c84b0da",
      "parameters": {
        "text": "=📝 *New Content Ready for Multi-Platform Publishing*\n\n*Original Article:*\n• Title: {{ $json.original_title }}\n• URL: {{ $json.original_url }}\n• Published: {{ new Date($json.published_date).toLocaleDateString() }}\n\n*Repurposed Formats Ready:*\n✅ LinkedIn Post ({{ $json.linkedin.text.length }} chars)\n✅ Twitter Thread ({{ $json.twitter.tweets.length }} tweets)\n✅ Instagram Caption ({{ $json.instagram.text.length }} chars)\n✅ Email Newsletter Snippet\n✅ Video Script ({{ $json.video.duration }})\n\n*Preview - LinkedIn:*\n{{ $json.linkedin.text.substring(0, 200) }}...\n\n*Hashtags:* {{ $json.linkedin.hashtags.join(' ') }}\n\n*Suggested Images:* {{ $json.suggested_images.length }} options available\n\n👀 Review and approve to publish →",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "REPLACE_WITH_SLACK_CONTENT_CHANNEL_ID"
        },
        "otherOptions": {
          "includeLinkToWorkflow": false
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "AziwZo3O6NXOdbLM",
          "name": "x-agent"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "7f8ab89a-16f4-4084-9b26-7ae26aa74d94",
      "name": "保存到内容库4",
      "type": "n8n-nodes-base.airtable",
      "position": [
        14224,
        11552
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "REPLACE_WITH_AIRTABLE_BASE_ID"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "REPLACE_WITH_AIRTABLE_TABLE_ID"
        },
        "columns": {
          "value": {
            "Status": "Pending Review",
            "Email_Body": "={{ $json.email.body }}",
            "Created_Date": "={{ $json.repurposed_date }}",
            "Original_URL": "={{ $json.original_url }}",
            "Video_Script": "={{ $json.video.main_points.join('\\n') }}",
            "Email_Subject": "={{ $json.email.subject }}",
            "LinkedIn_Post": "={{ $json.linkedin.text }}",
            "Original_Title": "={{ $json.original_title }}",
            "Twitter_Thread": "={{ $json.twitter.tweets.join('\\n\\n') }}",
            "Instagram_Caption": "={{ $json.instagram.text }}",
            "LinkedIn_Hashtags": "={{ $json.linkedin.hashtags.join(', ') }}",
            "Instagram_Hashtags": "={{ $json.instagram.hashtags.join(', ') }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "create"
      },
      "typeVersion": 2
    },
    {
      "id": "1b3f2deb-15af-47d3-8ab2-5015142950ce",
      "name": "发布到 LinkedIn (可选)4",
      "type": "n8n-nodes-base.linkedIn",
      "disabled": true,
      "position": [
        14432,
        11456
      ],
      "parameters": {
        "text": "={{ $json.linkedin.text }}\\n\\n{{ $json.linkedin.hashtags.map(h => '#' + h).join(' ') }}\\n\\nRead more: {{ $json.original_url }}",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "1105860e-c1cd-41ff-916e-7a7fff417d62",
      "name": "发布到 Twitter (可选)4",
      "type": "n8n-nodes-base.twitter",
      "disabled": true,
      "position": [
        14432,
        11664
      ],
      "parameters": {
        "text": "={{ $json.twitter.tweets[0] }}",
        "additionalFields": {}
      },
      "typeVersion": 2
    }
  ],
  "pinData": {},
  "connections": {
    "New Blog Post4": {
      "main": [
        [
          {
            "node": "Fetch Full Content4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structure Output4": {
      "main": [
        [
          {
            "node": "Fetch Images (Unsplash)4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model5": {
      "ai_languageModel": [
        [
          {
            "node": "AI Content Repurposing Chain4",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Structured Output Parser5",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Full Content4": {
      "main": [
        [
          {
            "node": "Clean & Extract Content4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notify Content Team4": {
      "main": [
        [
          {
            "node": "Save to Content Library4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Image Suggestions4": {
      "main": [
        [
          {
            "node": "Notify Content Team4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean & Extract Content4": {
      "main": [
        [
          {
            "node": "AI Content Repurposing Chain4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Images (Unsplash)4": {
      "main": [
        [
          {
            "node": "Add Image Suggestions4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save to Content Library4": {
      "main": [
        [
          {
            "node": "Post to LinkedIn (Optional)4",
            "type": "main",
            "index": 0
          },
          {
            "node": "Post to Twitter (Optional)4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser5": {
      "ai_outputParser": [
        [
          {
            "node": "AI Content Repurposing Chain4",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "AI Content Repurposing Chain4": {
      "main": [
        [
          {
            "node": "Structure Output4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - 内容创作, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量14
分类2
节点类型11
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Greypillar

Greypillar

@greypillar

We design AI systems that fix hidden revenue leaks in service businesses. Every engagement starts with one guaranteed win in 30 days — no risk, just results.

外部链接
在 n8n.io 查看

分享此工作流