8
n8n 中文网amn8n.com

人工介入式帖子设计器(Mistral AI、ImageKit 和 LinkedIn 发布)

高级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 25 个节点。主要使用 S3, Set, Gmail, Merge, Switch 等节点。 结合 Mistral AI、ImageKit 和 LinkedIn 发布的人工介入式帖子设计器

前置要求
  • Google 账号和 Gmail API 凭证
  • LinkedIn API 凭证
  • 可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "d2787088d49a05164783f5a9fa37e1730a27b190e51881d2128ba2bcd8c2656e",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "a171f8ee-c782-4e49-8725-4c4da246a72d",
      "name": "当收到聊天消息时",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -2880,
        3980
      ],
      "webhookId": "1754b88b-6591-4373-a595-78c638e915b5",
      "parameters": {
        "options": {
          "allowFileUploads": true
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "19f45580-6118-4fa9-bbeb-3cce50066b07",
      "name": "编辑字段",
      "type": "n8n-nodes-base.set",
      "position": [
        -2600,
        3980
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6ccb2d73-64ec-48d0-8f91-3221176cd821",
              "name": "post",
              "type": "string",
              "value": "={{ $json.chatInput }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "90736b86-55b7-4cfe-95a6-7a1534801d06",
      "name": "Mistral Cloud Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
      "position": [
        -2340,
        4180
      ],
      "parameters": {
        "model": "mistral-small-latest",
        "options": {}
      },
      "credentials": {
        "mistralCloudApi": {
          "id": "mRwBaVJZsN6hIzkX",
          "name": "Mistral Cloud account 2"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "547da51e-321c-451a-b96d-84fe6d7600f2",
      "name": "编辑字段6",
      "type": "n8n-nodes-base.set",
      "position": [
        -1840,
        3980
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ee05a8b8-0010-4f6a-ae59-9acd4cda9c5c",
              "name": "line1",
              "type": "string",
              "value": "={{ $json.output.line1 }}"
            },
            {
              "id": "d7579879-3c87-47bf-904e-fd984265631a",
              "name": "safeName",
              "type": "string",
              "value": "={{ $('AI Agent').item.json.output.line1.split(' ')[0].replace(/[^a-zA-Z0-9]/g, '') + '_' + new Date().toISOString().slice(0,10).replace(/-/g, '') }}"
            },
            {
              "id": "9d254a6b-e6eb-4df4-a771-e03a829ac4d8",
              "name": "line2",
              "type": "string",
              "value": "={{ $json.output.line2 }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "294d48b7-6da6-419d-8c1d-4a2f2078193d",
      "name": "发送内容以供批准1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -760,
        4080
      ],
      "webhookId": "a23938a4-fc6c-4445-8dee-17e501e92e06",
      "parameters": {
        "sendTo": "= {{ $json.email }}",
        "message": "=your post is ready\n{{ $json.output }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "Approval Required for LinkedIn post",
        "operation": "sendAndWait",
        "formFields": {
          "values": [
            {
              "fieldType": "dropdown",
              "fieldLabel": "Approve Content?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Yes"
                  },
                  {
                    "option": "No"
                  },
                  {
                    "option": "Cancel"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Content Feedback"
            }
          ]
        },
        "responseType": "customForm"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "WuamtxlwHxi5NKfr",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3a9acbcd-710d-4a28-adf8-eb366afb93de",
      "name": "批准结果1",
      "type": "n8n-nodes-base.switch",
      "position": [
        -560,
        4100
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Yes",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "317039f4-754e-4cb0-a674-eb8d26c9ed27",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data['Approve Content?'] }}",
                    "rightValue": "Yes"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "No",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "caace3ea-4ca0-40de-84fb-5a8fd809a0eb",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data['Approve Content?'] }}",
                    "rightValue": "No"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Cancel",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f93e5649-6a21-49a9-9993-85f1323139b0",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data['Approve Content?'] }}",
                    "rightValue": "Cancel"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "c8e6149c-36f2-456e-8925-ae55e2ad5cb7",
      "name": "基于反馈进行修订",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -60,
        4220
      ],
      "parameters": {
        "text": "=##role\nyou are assistant to make LinkedIn post based on user response\npost :{{ $('AI Agent').item.json.output.postclean }}\nchanges :{{ $json.data['Content Feedback'] }}\nDon't make drastic changes — only needed edits for grammar, clarity, or flow.\nReturn the post back in the same tone and structure.\n\n##input",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "f405cc1c-e824-46b2-8440-9562086bc3a6",
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        200,
        3980
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.1
    },
    {
      "id": "cd07964b-d52f-4ca6-acfe-50abbc9a08bc",
      "name": "S32",
      "type": "n8n-nodes-base.s3",
      "position": [
        -1280,
        4080
      ],
      "parameters": {
        "fileName": "={{ $json.safeName }}",
        "operation": "upload",
        "bucketName": "rag",
        "additionalFields": {}
      },
      "credentials": {
        "s3": {
          "id": "kxM6BjwCa2LsVIgl",
          "name": "S3 account 4 working"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5c75e862-459d-44c9-9d66-b0b2fb4931a3",
      "name": "文本转 HTML",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1120,
        4080
      ],
      "parameters": {
        "text": "={{ $('AI Agent').item.json.output.postclean }}",
        "options": {
          "systemMessage": "=  You are a precise HTML formatter.\n\nConvert the following LinkedIn-style post written in Markdown into valid, semantic HTML suitable for sending as the body of a professional marketing email.\n\nRequirements:\n\n- Keep the structure and tone of a LinkedIn post (short paragraphs, emojis, clear headers, bullets, numbered lists, line breaks)\n- Use semantic HTML: <p>, <br>, <ul>, <ol>, <li>, <strong>, <em>, <blockquote>, <a>, etc.\n- Apply minimal inline CSS to enhance readability (font size, spacing, alignment) so it's visually polished when viewed in email\n- Do NOT include <html>, <head>, or <body> tags\n- Do NOT use any JavaScript\n-all hastag in one lines dont use break\n- At the bottom, embed this image:\n  <img src=\"https://rmlkaysgqjrtjedpopha.supabase.co/storage/v1/object/public/rag/{{ $('Edit Fields6').item.json.safeName }}\" alt=\"Image\" style=\"max-width:100%; height:auto; margin-top:20px;\" />\n\n- Output only raw HTML with no extra explanation or text or tags \n "
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "83c4c1ad-ab47-49dd-a99f-eb4dced153db",
      "name": "Mistral Cloud Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
      "position": [
        -1060,
        4340
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "mistralCloudApi": {
          "id": "mRwBaVJZsN6hIzkX",
          "name": "Mistral Cloud account 2"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c790feae-4889-432b-a13a-caf36a88134e",
      "name": "编辑字段8",
      "type": "n8n-nodes-base.set",
      "position": [
        -200,
        4000
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c253ac6b-6f2f-4505-8b54-2a253900280b",
              "name": "output",
              "type": "string",
              "value": "={{ $('AI Agent').item.json.output.postclean }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7d73414b-9542-4e11-aa0a-b7595d8d916f",
      "name": "AI 代理",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2300,
        3980
      ],
      "parameters": {
        "text": "={{ $json.post }}",
        "options": {
          "systemMessage": "##Role\nYou are an assistant with the role of data formatter and banner caption creator.\n\n##Instructions\n1. For any given user query or post, remove only formatting issues such as \\n, **. The output should be clean, grammatically correct, and naturally readable. Important: don't remove emojis.\n2. Based on the cleaned input, create a catchy, relevant, and impactful banner text.\n   -If the banner text is 5 words or less, it will be a single line.\n   -important If it's more than 5 words, it will be split into line1 and line2. Each line will contain a maximum of 5 words.\n3. All banner text (single line or split lines) will be URL-encoded.\n4. Respond ONLY with a JSON object.\n5. only use %20 instead of space\n\nExample Input:\n\"This is a **really** awesome new product launch! Get ready for innovation!\\n🚀\"\n\nExample Output:\n```json\n{\n  \"postclean\": \"This is a really awesome new product launch!  ready innovation! \",\n  \"banner_text\": {\n    \"line1\": \"Awesome%20New%20Product%20Launch\", only 5 words allowed\n    \"line2\":\"Ready%20Innovation\" should start with word\n  }\n}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "638009af-4a55-4bfe-819d-a41c23c5e2a5",
      "name": "多表:您可以连接多个表以实现有组织的数据结构",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -2100,
        4180
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"postclean\": \"\",\n  \"line1\": \"\",\n  \"line2\":\"\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "f87da4d5-e5ca-481f-b1d1-7486eb996a5c",
      "name": "LinkedIn",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        400,
        3980
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "person": "agyagEHVK-",
        "additionalFields": {},
        "shareMediaCategory": "IMAGE"
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "id": "DfM7WZl5s1WKM5JY",
          "name": "LinkedIn account 2 working"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "27b8d834-ee20-4b4b-9a2c-2507db4e0975",
      "name": "HTTP 请求6",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1640,
        3980
      ],
      "parameters": {
        "url": "=https://ik.imagekit.io/(imagekit image link).png?updatedAt=1751960203232&tr=l-text,i-{{ $json.line1 }},fs-30,co-FFFFFF,ff-Montserrat,tg-b,lx-20,ly-85,l-end:l-text,i-{{ $json.line2 }},fs-30,co-FFFFFF,ff-Montserrat,tg-b,lx-20,ly-130,l-end",
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "012d2ec7-ec5a-4c5c-9cdc-2fa642eec2b9",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        4140
      ],
      "parameters": {
        "width": 460,
        "height": 300,
        "content": "## 修订循环"
      },
      "typeVersion": 1
    },
    {
      "id": "6e3d5da2-371a-4c3f-bd55-fff9a007a2a4",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -820,
        3980
      ],
      "parameters": {
        "width": 520,
        "height": 320,
        "content": "## 审批(人工介入循环)"
      },
      "typeVersion": 1
    },
    {
      "id": "a36f9d02-4700-4ada-96f9-505d7d62abb5",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        3900
      ],
      "parameters": {
        "width": 320,
        "height": 260,
        "content": "## 发布到 LinkedIn"
      },
      "typeVersion": 1
    },
    {
      "id": "4b6474db-7de3-4785-9b91-4317cf855368",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2720,
        3940
      ],
      "parameters": {
        "color": 5,
        "width": 280,
        "height": 240,
        "content": "输入帖子"
      },
      "typeVersion": 1
    },
    {
      "id": "91adb84b-d475-4146-8b46-fd677fadddea",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2400,
        3920
      ],
      "parameters": {
        "color": 5,
        "width": 460,
        "height": 380,
        "content": "清理帖子并添加图片横幅"
      },
      "typeVersion": 1
    },
    {
      "id": "5ec5abfc-a7db-4df5-abc0-a255d0be9649",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1860,
        3880
      ],
      "parameters": {
        "width": 420,
        "height": 420,
        "content": "## 用于在图片上添加文字的 image kit io https://imagekit.io/"
      },
      "typeVersion": 1
    },
    {
      "id": "b35ef162-5ef0-4145-881b-d29200c79a62",
      "name": "便签6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1380,
        3980
      ],
      "parameters": {
        "height": 280,
        "content": "用于动态显示图片的 s3 存储桶"
      },
      "typeVersion": 1
    },
    {
      "id": "48530c19-c87a-4187-a813-38c9d7cf4ac6",
      "name": "便签7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        4180
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "49ec908f-4ceb-44cc-9dc4-1cbea5ed4176",
      "name": "便签8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        4180
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "S32": {
      "main": [
        [
          {
            "node": "text to html",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Edit Fields6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields6": {
      "main": [
        [
          {
            "node": "HTTP Request6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields8": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "text to html": {
      "main": [
        [
          {
            "node": "Send Content for Approval1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request6": {
      "main": [
        [
          {
            "node": "S32",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Approval Result1": {
      "main": [
        [
          {
            "node": "Edit Fields8",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Revision based on feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mistral Cloud Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Mistral Cloud Chat Model4": {
      "ai_languageModel": [
        [
          {
            "node": "Revision based on feedback",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "text to html",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Revision based on feedback": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Content for Approval1": {
      "main": [
        [
          {
            "node": "Approval Result1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

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

需要付费吗?

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

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

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

外部链接
在 n8n.io 查看

分享此工作流