8
n8n 中文网amn8n.com

基于URL使用AI、Telegram和多平台发布自动生成社交媒体帖子

高级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 42 个节点。主要使用 If, Set, Code, Merge, Function 等节点。 基于URL使用AI、Telegram和多平台发布自动生成社交媒体帖子

前置要求
  • LinkedIn API 凭证
  • Telegram Bot Token
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
  • Google Gemini API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移

无法加载工作流预览

导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "nodes": [
    {
      "name": "Telegram 机器人触发器",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        0,
        544
      ],
      "webhookId": "9ea69b50-b6ca-4968-918a-8ca35b8ad7d7",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "",
          "name": "YOUR_TELEGRAM_API_CREDENTIAL"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "工作流概览",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -576,
        336
      ],
      "parameters": {
        "width": 389,
        "height": 384,
        "content": "# 📱 Telegram URL 处理器"
      },
      "typeVersion": 1
    },
    {
      "name": "提取 URL",
      "type": "n8n-nodes-base.function",
      "position": [
        448,
        448
      ],
      "parameters": {
        "functionCode": "// Extract URL from Telegram message\nconst message = $json.message.text;\nconst urlRegex = /(https?:\\/\\/[^\\s]+)/g;\nconst urls = message.match(urlRegex);\n\nif (!urls || urls.length === 0) {\n  throw new Error('No URL found in the message');\n}\n\nconst extractedUrl = urls[0];\nconst chatId = $json.message.chat.id;\nconst messageId = $json.message.message_id;\nconst timestamp = new Date().toISOString();\n\nreturn {\n  json: {\n    url: extractedUrl,\n    chatId: chatId,\n    messageId: messageId,\n    timestamp: timestamp,\n    originalMessage: message\n  }\n};"
      },
      "typeVersion": 1
    },
    {
      "name": "获取 URL 内容",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        896,
        448
      ],
      "parameters": {
        "url": "={{ $node['Extract URL'].json.url }}",
        "options": {
          "redirect": {
            "redirect": {}
          },
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "提取文本内容",
      "type": "n8n-nodes-base.function",
      "position": [
        1120,
        448
      ],
      "parameters": {
        "functionCode": "// Extract text content from HTML\nconst html = $json.data;\nconst url = $node['Extract URL'].json.url;\n\n// Simple HTML to text conversion\nlet textContent = html\n  .replace(/<script[^>]*>.*?<\\/script>/gi, '')\n  .replace(/<style[^>]*>.*?<\\/style>/gi, '')\n  .replace(/<[^>]*>/g, ' ')\n  .replace(/\\s+/g, ' ')\n  .trim();\n\n// Extract title (simple approach)\nconst titleMatch = html.match(/<title[^>]*>([^<]+)<\\/title>/i);\nconst title = titleMatch ? titleMatch[1].trim() : 'Article';\n\n// Limit content length for AI processing\nif (textContent.length > 8000) {\n  textContent = textContent.substring(0, 8000) + '...';\n}\n\nif (textContent.length < 100) {\n  throw new Error('Could not extract meaningful content from the URL');\n}\n\nreturn {\n  json: {\n    url: url,\n    title: title,\n    content: textContent,\n    wordCount: textContent.split(' ').length\n  }\n};"
      },
      "typeVersion": 1
    },
    {
      "name": "AI 处理",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        64
      ],
      "parameters": {
        "width": 280,
        "height": 864,
        "content": "# 🤖 AI 内容生成"
      },
      "typeVersion": 1
    },
    {
      "name": "发布到 Facebook",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3520,
        276
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v19.0/[INSERT_YOUR_SITE_ID]/photos",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "caption",
              "value": "={{ $input.first().json.message.content }}"
            },
            {
              "name": "=url",
              "value": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}"
            },
            {
              "value": "="
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "nodeCredentialType": "facebookGraphApi"
      },
      "credentials": {
        "facebookGraphApi": {
          "id": "",
          "name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "发布到 Instagram",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3520,
        468
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v23.0/[INSERT_YOUR_SITE_ID]/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "image_url",
              "value": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}"
            },
            {
              "name": "caption",
              "value": "={{ $input.first().json.message.content }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "nodeCredentialType": "facebookGraphApi"
      },
      "credentials": {
        "facebookGraphApi": {
          "id": "",
          "name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "最终状态更新",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4864,
        448
      ],
      "parameters": {
        "columns": {
          "value": {
            "Image URL": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}",
            "Source URL": "={{ $node[\"Telegram Bot Trigger\"].json.message.text }}",
            "Facebook URL": "={{ $json.facebook_post_url }}",
            "LinkedIn URL": "={{ $json.linkedin_post_url }}",
            "Instagram URL": "={{ $json.instagram_post_url }}",
            "Facebook Content": "={{ $node[\"Facebook Post\"].json.message.content }}",
            "Instagram Content": "={{ $node[\"Instagram Post\"].json.message.content }}",
            "LinkedIn Content ": "={{ $node[\"LinkedIn Post\"].json.message.content }}"
          },
          "schema": [
            {
              "id": "Source URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Source URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Facebook Content",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Facebook Content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Facebook URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Facebook URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Instagram Content",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Instagram Content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Instagram URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Instagram URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn Content ",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn Content ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Image URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Source URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit#gid=0",
          "cachedResultName": "Arkusz1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit?usp=drivesdk",
          "cachedResultName": "n8n - Telegram Social Media Content Automation"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "YOUR_GOOGLE_SHEETS_OAUTH2_API_CREDENTIAL"
        }
      },
      "typeVersion": 4,
      "alwaysOutputData": true
    },
    {
      "name": "发布阶段",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4568,
        -44
      ],
      "parameters": {
        "height": 652,
        "content": "# 📱 社交媒体发布"
      },
      "typeVersion": 1
    },
    {
      "name": "发布到 Instagram1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3744,
        468
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v23.0/[INSERT_YOUR_SITE_ID]/media_publish",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "creation_id",
              "value": "={{ $json.id }}"
            },
            {
              "name": "access_token",
              "value": "={{ $credentials.facebookGraph.accessToken }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "nodeCredentialType": "facebookGraphApi"
      },
      "credentials": {
        "facebookGraphApi": {
          "id": "",
          "name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "Facebook 帖子",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1344,
        368
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "GPT-4.1-NANO"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Based on the provided article content, create a Facebook post that is professional yet approachable, ranging from 100-200 words. The tone should be informative and engaging, with occasional light humor when appropriate to the topic. Focus on the key takeaway or most interesting insight from the article. Include a clear call-to-action that encourages meaningful discussion in the comments. The post should feel conversational and relatable while maintaining credibility. If the topic allows, incorporate a subtle touch of humor or a relatable analogy that your professional network would appreciate. Keep the language of the original text. End with a thoughtful question to spark engagement.:  {{ $('Extract Text Content').item.json.content }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "YOUR_OPEN_AI_API_CREDENTIAL"
        }
      },
      "typeVersion": 1.8
    },
    {
      "name": "Instagram 帖子",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1344,
        560
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "GPT-4.1-NANO"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Transform the article content into a punchy Instagram post of 50-80 words maximum. Use a casual, energetic tone with 2-3 relevant emojis strategically placed. Include wordplay, puns, or clever turns of phrase when they fit naturally. Focus on one compelling hook or surprising fact from the article. Write in short, impactful sentences that work well with Instagram's visual-first format. Include 3-5 relevant hashtags at the end. The post should feel fresh, scrollable, and shareable while still delivering value from the original content. Keep the languafe of the original:  {{ $('Extract Text Content').item.json.content }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "YOUR_OPEN_AI_API_CREDENTIAL"
        }
      },
      "typeVersion": 1.8
    },
    {
      "name": "LinkedIn 帖子",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1344,
        744
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "GPT-4.1-NANO"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Create an engaging, professional LinkedIn post (max 400 characters) based on this article:  {{ $('Extract Text Content').item.json.content }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "YOUR_OPEN_AI_API_CREDENTIAL"
        }
      },
      "typeVersion": 1.8
    },
    {
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        3296,
        276
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "name": "合并1",
      "type": "n8n-nodes-base.merge",
      "position": [
        3296,
        468
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "name": "合并2",
      "type": "n8n-nodes-base.merge",
      "position": [
        3296,
        888
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "name": "如果消息包含 URL",
      "type": "n8n-nodes-base.if",
      "position": [
        224,
        544
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "dc0117b8-213b-4c6f-934e-583fe2ec7d45",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "=={{ ($json.message.text || '').match(/https?:\\/\\/\\S+/) !== null }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        448,
        640
      ],
      "webhookId": "7e3d2ccb-9161-43d5-99c6-a2286541886a",
      "parameters": {
        "text": "You can't do this here. You need to upload a URL with an article.",
        "chatId": "={{ $json.message.chat.id }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "",
          "name": "YOUR_TELEGRAM_API_CREDENTIAL"
        }
      },
      "typeVersion": 1.2
    },
    {
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "position": [
        3968,
        272
      ],
      "parameters": {
        "jsCode": "const id = $json.post_id || $json.id || '';\nconst parts = id.split('_');\nconst postId = parts.length > 1 ? parts[1] : '';\nconst facebookUsername = '<YOUR_FACEBOOK_PAGE_USERNAME>';\nconst facebookPostUrl = postId\n  ? `https://facebook.com/${facebookUsername}/posts/${postId}`\n  : '';\n\nreturn {\n  json: {\n    facebook_post_id: postId,\n    facebook_post_url: facebookPostUrl,\n    facebook_published: !!postId\n  }\n};\n"
      },
      "typeVersion": 2
    },
    {
      "name": "代码1",
      "type": "n8n-nodes-base.code",
      "position": [
        4192,
        468
      ],
      "parameters": {
        "jsCode": "const mediaId = $json.id || '';\nreturn {\n  json: {\n    instagram_post_id: mediaId,\n    instagram_post_url: $input.first().json.permalink, // nie mamy shortcode :(\n    instagram_published: !!mediaId\n  }\n};\n"
      },
      "typeVersion": 2
    },
    {
      "name": "LinkedIn",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        3744,
        888
      ],
      "parameters": {
        "text": "={{ $('LinkedIn Post').item.json.message.content }}",
        "person": "wZFKPz_aPr",
        "additionalFields": {},
        "shareMediaCategory": "IMAGE"
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "id": "",
          "name": "YOUR_LINKED_IN_OAUTH2_API_CREDENTIAL"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "二进制文件",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3520,
        888
      ],
      "parameters": {
        "url": "={{ $json.public_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "合并3",
      "type": "n8n-nodes-base.merge",
      "position": [
        4416,
        432
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "name": "获取帖子 URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3968,
        468
      ],
      "parameters": {
        "url": "={{ `https://graph.facebook.com/${$json.fbApiVersion || 'v19.0'}/${$json.id}?fields=permalink` }}",
        "options": {},
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {}
          ]
        },
        "nodeCredentialType": "facebookGraphApi"
      },
      "credentials": {
        "facebookGraphApi": {
          "id": "",
          "name": "YOUR_FACEBOOK_GRAPH_API_CREDENTIAL"
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "代码2",
      "type": "n8n-nodes-base.code",
      "position": [
        3968,
        888
      ],
      "parameters": {
        "jsCode": "const urn = $json.urn || ''; // example: urn:li:share:7342310895114420224\nconst postId = urn.split(':').pop(); // get the numeric ID\n\nconst linkedinPostUrl = postId \n  ? `https://www.linkedin.com/feed/update/${urn.replace('urn:li:', '').replace(/:/g, '%3A')}/`\n  : '';\n\nreturn {\n  json: {\n    linkedin_post_id: postId,\n    linkedin_post_url: linkedinPostUrl,\n    linkedin_published: !!postId\n  }\n};\n"
      },
      "typeVersion": 2
    },
    {
      "name": "代码3",
      "type": "n8n-nodes-base.code",
      "position": [
        4640,
        448
      ],
      "parameters": {
        "jsCode": "return [\n  {\n    json: Object.assign({}, ...items.map(item => item.json))\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "name": "编辑字段",
      "type": "n8n-nodes-base.set",
      "position": [
        2272,
        716
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "bb4004a1-9c8b-4603-b8ed-227e50940f87",
              "name": "filename",
              "type": "string",
              "value": "={{$now.toMillis()}}.png"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "name": "生成图片1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2048,
        716
      ],
      "parameters": {
        "model": "gpt-image-1",
        "prompt": "={{ $json.text }}",
        "options": {
          "size": "1024x1024",
          "quality": "high"
        },
        "resource": "image"
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "YOUR_OPEN_AI_API_CREDENTIAL"
        }
      },
      "typeVersion": 1.8
    },
    {
      "name": "基础 LLM 链2",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1696,
        716
      ],
      "parameters": {
        "text": "=Wygeneruj prompt dla Recraft, tak, aby wygenerował profesjonalny obraz na social media (Facebook, Instagram) do tego TEMATU: {{ $json.text }} Pamiętaj, że obraz ma być interesujący, pasujący do bloga technologicznego, na przykład fotorealistyczne fotki ekspertów w biurze, w terenie, zdjęcia konkretnych sprzetow, technologii czy koncepcji opisanych w artykule. Obrazki mają być esetyczne, wywołujące pozytywne uczucia. Tematyka i wygląd obrazka ma ściśle wiązać się z treścią zadanego TEMATU. W Prawym dolnym rogu ma być mały napis SmartCamp.AI. Pamiętaj, że to jest  prompt, który później będzie wklejany do body w api, wiec unikaj elementów, które moga popsuć json (Nie możesz używać cudzysłowów). Wygeneruj sam prompt, bez wstępu, bez cudzysłowów. Cała wiadomość musi mieć mniej niż 1000 znaków.",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "name": "发送照片消息",
      "type": "n8n-nodes-base.telegram",
      "position": [
        5088,
        448
      ],
      "webhookId": "90e30a0b-989d-4a48-9779-d83dda1ca336",
      "parameters": {
        "file": "={{ $item(0).$node[\"Supabase Public URL\"].json[\"public_url\"] }}",
        "chatId": "={{ $node[\"Telegram Bot Trigger\"].json.message.chat.id }}",
        "operation": "sendPhoto",
        "additionalFields": {
          "caption": "=Content published!\n\nFacebook Post: {{ $node[\"Code3\"].json.facebook_post_url }}\n\nInstagram Post: {{ $node[\"Code3\"].json.instagram_post_url }}\n\nLinkedIn Post: {{ $node[\"Code3\"].json.linkedin_post_url }}\n"
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "",
          "name": "YOUR_TELEGRAM_API_CREDENTIAL"
        }
      },
      "typeVersion": 1.2
    },
    {
      "name": "在表格中追加或更新行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        672,
        448
      ],
      "parameters": {
        "columns": {
          "value": {
            "Source URL": "={{ $json.url }}"
          },
          "schema": [
            {
              "id": "Source URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Source URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Facebook Content",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Facebook Content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Facebook URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Facebook URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Instagram Content",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Instagram Content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Instagram URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Instagram URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn Content ",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn Content ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Image URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Image URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Source URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit#gid=0",
          "cachedResultName": "Arkusz1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b7k0A06DY_oI3Ex6fR48FN0PXK6g59U4714wBYUCezw/edit?usp=drivesdk",
          "cachedResultName": "n8n - Telegram Social Media Content Automation"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "YOUR_GOOGLE_SHEETS_OAUTH2_API_CREDENTIAL"
        }
      },
      "typeVersion": 4.6
    },
    {
      "name": "凭据",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        768
      ],
      "parameters": {
        "width": 360,
        "height": 172,
        "content": "🔐 凭据"
      },
      "typeVersion": 1
    },
    {
      "name": "输入",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -132,
        316
      ],
      "parameters": {
        "width": 360,
        "height": 388,
        "content": "🧪 输入假设"
      },
      "typeVersion": 1
    },
    {
      "name": "图像流水线",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2240,
        592
      ],
      "parameters": {
        "width": 920,
        "height": 284,
        "content": "🖼️ 图像处理"
      },
      "typeVersion": 1
    },
    {
      "name": "表格映射",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        604,
        268
      ],
      "parameters": {
        "width": 232,
        "height": 340,
        "content": "📊 表格映射"
      },
      "typeVersion": 1
    },
    {
      "name": "Google Gemini",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1768,
        940
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "",
          "name": "YOUR_GOOGLE_PALM_API_CREDENTIAL"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "发布阶段1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4832,
        -48
      ],
      "parameters": {
        "width": 400,
        "height": 652,
        "content": "# 最终步骤"
      },
      "typeVersion": 1
    },
    {
      "name": "上传到 Supabase(使用凭据)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2720,
        716
      ],
      "parameters": {
        "url": "={{ ($json.supabase_base_url || '').trim().replace(/\\/+$/,'') + '/storage/v1/object/' + ($json.bucket || 'social-media-ai-generated') + '/' + $json.filename }}",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "=={{ $binary.data?.mimeType || 'application/octet-stream' }}"
            },
            {
              "name": "x-upsert",
              "value": "true"
            }
          ]
        },
        "inputDataFieldName": "data",
        "nodeCredentialType": "supabaseApi"
      },
      "credentials": {
        "supabaseApi": {
          "id": "",
          "name": "YOUR_SUPABASE_API_CREDENTIAL"
        }
      },
      "typeVersion": 4.2
    },
    {
      "name": "Supabase 配置",
      "type": "n8n-nodes-base.set",
      "position": [
        2496,
        716
      ],
      "parameters": {
        "options": {
          "stripBinary": false
        },
        "assignments": {
          "assignments": [
            {
              "id": "1dbcf7c4-2e01-4df2-874e-93868b74a519",
              "name": "bucket",
              "type": "string",
              "value": "social-media-ai-generated"
            },
            {
              "id": "4e88d63f-01de-4265-8271-fd0ed637b5fd",
              "name": "filename",
              "type": "string",
              "value": "={{ $json.filename }}"
            },
            {
              "id": "b5579b42-bc9e-44d9-b997-2f1e505c0692",
              "name": "link_ttl_seconds",
              "type": "string",
              "value": "3600"
            },
            {
              "id": "ab260017-3161-4cbf-ad86-84d23a94e780",
              "name": "supabase_base_url",
              "type": "string",
              "value": "https://api.supabase.smartcamp.ai"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "name": "Supabase 公共 URL",
      "type": "n8n-nodes-base.set",
      "position": [
        2960,
        720
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cdc9fb52-3d91-4af4-9ff4-8fb15e6543c4",
              "name": "public_url",
              "type": "string",
              "value": "={{ $node[\"Supabase Config\"].json.supabase_base_url.toString().trim().replace(/\\/+$/,'') + \"/storage/v1/object/public/\" + encodeURIComponent($node[\"Supabase Config\"].json.bucket) + \"/\" + encodeURIComponent($node[\"Supabase Config\"].json.filename) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "name": "发布阶段2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3456,
        -16
      ],
      "parameters": {
        "width": 432,
        "height": 652,
        "content": "# Instagram 和 Facebook 站点 ID"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "timezone": "Europe/Warsaw",
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "yGK0VwXqcskQjGJG",
    "executionOrder": "v1",
    "timeSavedPerExecution": 20
  },
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Code2": {
      "main": [
        [
          {
            "node": "Merge3",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Code3": {
      "main": [
        [
          {
            "node": "Final Status Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Post to Facebook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Post to Instagram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge2": {
      "main": [
        [
          {
            "node": "Binary File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge3": {
      "main": [
        [
          {
            "node": "Code3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn": {
      "main": [
        [
          {
            "node": "Code2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Binary File": {
      "main": [
        [
          {
            "node": "LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Supabase Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract URL": {
      "main": [
        [
          {
            "node": "Append or update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Post URL": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Facebook Post": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn Post": {
      "main": [
        [
          {
            "node": "Basic LLM Chain2",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram Post": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Config": {
      "main": [
        [
          {
            "node": "Upload to Supabase (uses credentials)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain2": {
      "main": [
        [
          {
            "node": "Generate an image1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to Facebook": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch URL Content": {
      "main": [
        [
          {
            "node": "Extract Text Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to Instagram": {
      "main": [
        [
          {
            "node": "Post to Instagram1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate an image1": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to Instagram1": {
      "main": [
        [
          {
            "node": "Get Post URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Final Status Update": {
      "main": [
        [
          {
            "node": "Send a photo message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Public URL": {
      "main": [
        [
          {
            "node": "Merge2",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Extract Text Content": {
      "main": [
        [
          {
            "node": "Facebook Post",
            "type": "main",
            "index": 0
          },
          {
            "node": "Instagram Post",
            "type": "main",
            "index": 0
          },
          {
            "node": "LinkedIn Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Bot Trigger": {
      "main": [
        [
          {
            "node": "If message contains URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If message contains URL": {
      "main": [
        [
          {
            "node": "Extract URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or update row in sheet": {
      "main": [
        [
          {
            "node": "Fetch URL Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Supabase (uses credentials)": {
      "main": [
        [
          {
            "node": "Supabase Public URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

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

需要付费吗?

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

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

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 查看

分享此工作流