AutomationFlowsData & Sheets › Create AI Short Videos From Feishu with Deepseek, Minimax and Blotato

Create AI Short Videos From Feishu with Deepseek, Minimax and Blotato

Bysamxck @samxck on n8n.io

This workflow triggers from a Feishu bot message containing an image and topic, uses DeepSeek to generate trends, a script, captions, and a quality check, clones voice with MiniMax, creates a lip-sync video via FAL.ai/VEED, logs results to Google Sheets, and publishes to…

Webhook trigger★★★★★ complexity38 nodesHTTP RequestGoogle Sheets@Blotato/N8N Nodes Blotato
Data & Sheets Trigger: Webhook Nodes: 38 Complexity: ★★★★★ Added:
Create AI Short Videos From Feishu with Deepseek, Minimax and Blotato — n8n workflow card showing HTTP Request, Google Sheets, @Blotato/N8N Nodes Blotato integration

This workflow corresponds to n8n.io template #17994 — we link there as the canonical source.

This workflow follows the Blotaton8N Nodes Blotato → 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 →

Download .json
{
  "id": "RAHx8dhQ880mI6Q1",
  "name": "\ud83d\ude80 \u98de\u4e66\u89e6\u53d1 \u00b7 DeepSeek \u00b7 MiniMax\u58f0\u97f3\u514b\u9686 \u00b7 \u81ea\u52a8\u53d1\u5e03\u89c6\u9891 (\u4e2d\u6587\u7248)",
  "tags": [],
  "nodes": [
    {
      "id": "e3ed7f72-c9d2-4df9-b5d3-b8f85d4447ea",
      "name": "\ud83d\udccb \u5de5\u4f5c\u6d41\u603b\u89c8 - \u4ece\u8fd9\u91cc\u5f00\u59cb",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 520,
        "height": 780,
        "content": "# \ud83d\ude80 \u81ea\u52a8\u77ed\u89c6\u9891\u521b\u4f5c\u5de5\u4f5c\u6d41 \u00b7 \u4e2d\u6587\u7248\n\n## \ud83d\udcd6 \u672c\u5de5\u4f5c\u6d41\u505a\u4ec0\u4e48\uff1f\n\n\u4f60\u901a\u8fc7**\u98de\u4e66\u673a\u5668\u4eba**\u53d1\u9001\u4e00\u5f20\u56fe\u7247\u548c\u4e3b\u9898\u6587\u5b57\uff0c\u5de5\u4f5c\u6d41\u4f1a\u81ea\u52a8\u5b8c\u6210\uff1a\n\n1. \u63a5\u6536\u98de\u4e66\u6d88\u606f\uff08\u56fe\u7247 + \u4e3b\u9898\uff09\n2. DeepSeek \u641c\u7d22\u70ed\u70b9\u8d8b\u52bf\n3. DeepSeek \u751f\u6210\u77ed\u89c6\u9891\u811a\u672c\uff0830\u79d2\uff09\n4. MiniMax \u8bed\u97f3\u514b\u9686\u5408\u6210\u65c1\u767d\u97f3\u9891\n5. FAL.ai / VEED \u5408\u6210\u300c\u56fe\u7247\u8bf4\u8bdd\u300d\u89c6\u9891\n6. DeepSeek \u64b0\u5199\u53d1\u5e03\u6587\u6848 + \u6807\u7b7e\n7. \u98de\u4e66\u673a\u5668\u4eba\u56de\u4f20\u89c6\u9891\u9884\u89c8\n8. **AI \u8d28\u68c0** \u2014\u2014\u98de\u4e66\u673a\u5668\u4eba + DeepSeek \u5ba1\u67e5\u89c6\u9891\u8d28\u91cf\n9. \u4fdd\u5b58\u5230 Google Sheets \u8bb0\u5f55\n10. \u4e0a\u4f20 Blotato\uff0c\u81ea\u52a8\u5206\u53d1\u5230\u5404\u793e\u4ea4\u5e73\u53f0\n\n\u23f1\ufe0f \u5168\u7a0b\u7ea6 3-5 \u5206\u949f\n\n---\n## \ud83d\udd27 \u9700\u8981\u51c6\u5907\u7684\u8d26\u53f7\u548cKey\n\u2713 \u98de\u4e66\u5f00\u653e\u5e73\u53f0\u8d26\u53f7 + \u673a\u5668\u4eba App\n\u2713 DeepSeek API Key\n\u2713 MiniMax API Key + Group ID\n\u2713 FAL.ai API Key\uff08\u542bVEED\u8bbf\u95ee\u6743\uff09\n\u2713 Blotato API Key\n\u2713 Google Sheets\uff08\u7528\u4e8e\u8bb0\u5f55\uff09\n\n---\n\ud83d\udccc **\u4ece\u5de6\u4fa7 STEP 1 \u4fbf\u7b7e\u7eb8\u5f00\u59cb\u914d\u7f6e**"
      },
      "typeVersion": 1
    },
    {
      "id": "6b8a1c2e-ad06-4922-b6af-b02e092df46f",
      "name": "STEP 1 - \u98de\u4e66\u673a\u5668\u4eba\u914d\u7f6e",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 540,
        "height": 1000,
        "content": "# \ud83d\udcf1 STEP 1\uff1a\u98de\u4e66\u673a\u5668\u4eba\u89e6\u53d1\u5668\u914d\u7f6e\n\n## \u98de\u4e66\u5f00\u653e\u5e73\u53f0\u8bbe\u7f6e\u6b65\u9aa4\n\n### \u7b2c\u4e00\u6b65\uff1a\u521b\u5efa\u98de\u4e66\u5e94\u7528\n1. \u6253\u5f00 https://open.feishu.cn/app\n2. \u70b9\u51fb\u300c\u521b\u5efa\u4f01\u4e1a\u81ea\u5efa\u5e94\u7528\u300d\n3. \u586b\u5199\u5e94\u7528\u540d\u79f0\uff08\u5982\uff1a\u89c6\u9891\u521b\u4f5c\u52a9\u624b\uff09\n4. \u8bb0\u5f55 App ID \u548c App Secret\n\n### \u7b2c\u4e8c\u6b65\uff1a\u5f00\u542f\u673a\u5668\u4eba\u80fd\u529b\n1. \u8fdb\u5165\u5e94\u7528\u540e\u53f0 \u2192\u300c\u6dfb\u52a0\u5e94\u7528\u80fd\u529b\u300d\n2. \u9009\u62e9\u300c\u673a\u5668\u4eba\u300d\uff0c\u70b9\u51fb\u5f00\u542f\n3. \u8fdb\u5165\u300c\u4e8b\u4ef6\u8ba2\u9605\u300d\u2192\u300c\u6dfb\u52a0\u4e8b\u4ef6\u300d\n4. \u641c\u7d22\u5e76\u6dfb\u52a0\uff1a`\u63a5\u6536\u6d88\u606f (im.message.receive_v1)`\n\n### \u7b2c\u4e09\u6b65\uff1a\u914d\u7f6e Webhook \u56de\u8c03\n1. \u5728 N8N \u4e2d\u6253\u5f00\u300c\u98de\u4e66\u89e6\u53d1\u5668\u300d\u8282\u70b9\n2. \u590d\u5236\u8282\u70b9\u663e\u793a\u7684 Webhook URL\n3. \u56de\u5230\u98de\u4e66\u540e\u53f0 \u2192\u300c\u4e8b\u4ef6\u8ba2\u9605\u300d\n4. \u5c06 URL \u7c98\u8d34\u5230\u300c\u8bf7\u6c42\u7f51\u5740\u300d\n5. \u70b9\u51fb\u300c\u9a8c\u8bc1\u300d\uff08N8N \u4f1a\u81ea\u52a8\u54cd\u5e94\uff09\n\n### \u7b2c\u56db\u6b65\uff1a\u8bbe\u7f6e\u6743\u9650\n\u98de\u4e66\u5e94\u7528\u9700\u8981\u4ee5\u4e0b\u6743\u9650\uff08\u5728\u300c\u6743\u9650\u7ba1\u7406\u300d\u4e2d\u5f00\u542f\uff09\uff1a\n- `im:message`\uff08\u63a5\u6536\u548c\u53d1\u9001\u6d88\u606f\uff09\n- `im:message.group_at_msg`\uff08\u7fa4@\u6d88\u606f\uff09\n- `im:resource`\uff08\u63a5\u6536\u56fe\u7247\u8d44\u6e90\uff09\n\n### \u7b2c\u4e94\u6b65\uff1a\u53d1\u5e03\u5e94\u7528\n1. \u70b9\u51fb\u300c\u7248\u672c\u7ba1\u7406\u4e0e\u53d1\u5e03\u300d\n2. \u521b\u5efa\u7248\u672c\uff0c\u63d0\u4ea4\u5ba1\u6838\uff08\u4f01\u4e1a\u5185\u90e8\u5e94\u7528\u5ba1\u6838\u5f88\u5feb\uff09\n3. \u5728\u4f01\u4e1a\u901a\u8baf\u5f55\u4e2d\u5c06\u673a\u5668\u4eba\u6dfb\u52a0\u5230\u7fa4\u6216\u76f4\u63a5\u5bf9\u8bdd\n\n### \u4f7f\u7528\u65b9\u5f0f\n\u53d1\u9001\u683c\u5f0f\uff1a\u76f4\u63a5\u53d1\u9001\u56fe\u7247\uff0c\u56fe\u7247\u8bf4\u660e\u586b\u5199\u4e3b\u9898\n\u4f8b\uff1a\u4e0a\u4f20\u4e00\u5f20\u4eba\u7269\u56fe\u7247\uff0c\u8bf4\u660e\u5199\u300c\u5065\u5eb7\u751f\u6d3b\u65b9\u5f0f\u300d\n\n\u2705 \u914d\u7f6e\u5b8c\u6210\u6807\u5fd7\uff1a\u53d1\u6d88\u606f\u540e N8N \u80fd\u6536\u5230\u6570\u636e"
      },
      "typeVersion": 1
    },
    {
      "id": "ff38fc8c-c551-444c-969b-d8094f7a7b6a",
      "name": "STEP 2 - API \u5bc6\u94a5\u914d\u7f6e",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 540,
        "height": 980,
        "content": "# \ud83d\udd11 STEP 2\uff1aAPI \u5bc6\u94a5\u914d\u7f6e\n\n## \u5728\u300c\u5de5\u4f5c\u6d41\u914d\u7f6e\u300d\u8282\u70b9\u4e2d\u586b\u5165\u4ee5\u4e0b\u5185\u5bb9\n\n### DeepSeek API\n1. \u8bbf\u95ee https://platform.deepseek.com\n2. \u6ce8\u518c\u5e76\u5145\u503c\uff08\u6309Token\u8ba1\u8d39\uff0c\u975e\u5e38\u4fbf\u5b9c\uff09\n3. \u8fdb\u5165\u300cAPI Keys\u300d\u2192 \u521b\u5efa\u65b0\u5bc6\u94a5\n4. \u590d\u5236\u5bc6\u94a5 \u2192 \u586b\u5165 `deepseekApiKey`\n5. \u9ed8\u8ba4\u6a21\u578b\uff1a`deepseek-chat`\uff08\u5373DeepSeek-V3\uff09\n\n### MiniMax \u8bed\u97f3\u514b\u9686 API\n1. \u8bbf\u95ee https://platform.minimaxi.com\n2. \u6ce8\u518c\u5f00\u53d1\u8005\u8d26\u53f7\n3. \u8fdb\u5165\u63a7\u5236\u53f0 \u2192 \u83b7\u53d6 `Group ID` \u548c `API Key`\n4. \u8fdb\u5165\u300c\u8bed\u97f3\u514b\u9686\u300d\u529f\u80fd\uff1a\u4e0a\u4f20\u4f60\u7684\u58f0\u97f3\u6837\u672c\uff0830\u79d2\u4ee5\u4e0a\u6e05\u6670\u5f55\u97f3\uff09\n5. \u7b49\u5f85\u514b\u9686\u5b8c\u6210\uff0c\u8bb0\u5f55 `voice_id`\n6. \u5c06 GroupID\u3001API Key\u3001voice_id \u586b\u5165\u914d\u7f6e\u8282\u70b9\n\n\u26a0\ufe0f \u6ce8\u610f\uff1aMiniMax\u8bed\u97f3\u514b\u9686\u9700\u8981\u5b9e\u540d\u8ba4\u8bc1\n\n### FAL.ai API\uff08\u89c6\u9891\u751f\u6210\uff09\n1. \u8bbf\u95ee https://fal.ai\n2. \u6ce8\u518c\u5e76\u8fdb\u5165 Dashboard \u2192 API Keys\n3. \u521b\u5efa\u65b0 Key \u5e76\u590d\u5236\n4. \u586b\u5165 `falApiKey`\n5. VEED Fabric 1.0 \u6a21\u578b\u5730\u5740\uff1a\n   https://fal.ai/models/veed/fabric-1.0\n\n### Blotato API\uff08\u793e\u4ea4\u5a92\u4f53\u53d1\u5e03\uff09\n1. \u8bbf\u95ee https://blotato.com\n2. \u6ce8\u518c\u8d26\u53f7\uff0c\u8fdb\u5165 Settings \u2192 API Keys\n3. \u590d\u5236 API Key\n4. \u5728 N8N \u5b89\u88c5\u793e\u533a\u8282\u70b9\uff1a`@blotato/n8n-nodes-blotato`\n   \uff08Settings \u2192 Community Nodes \u2192 Install\uff09\n5. \u5728 N8N Credentials \u4e2d\u521b\u5efa Blotato API \u51ed\u636e\n\n\u2705 \u6240\u6709 Key \u586b\u5199\u5b8c\u6bd5\u540e\uff0c\u53ef\u8fdb\u884c\u7b2c\u4e00\u6b21\u6d4b\u8bd5"
      },
      "typeVersion": 1
    },
    {
      "id": "6ee04a9f-7e78-401e-b35d-19cdabef5d1a",
      "name": "STEP 3 - DeepSeek AI \u914d\u7f6e\u8bf4\u660e",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2112,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 540,
        "height": 900,
        "content": "# \ud83e\udd16 STEP 3\uff1aDeepSeek AI \u4e09\u5c42\u5904\u7406\n\n\u672c\u5de5\u4f5c\u6d41\u4f7f\u7528 DeepSeek \u66ff\u4ee3 GPT-4 \u548c Perplexity\uff0c\u5b8c\u6210\u4e09\u9879 AI \u4efb\u52a1\uff1a\n\n### \u4efb\u52a1A\uff1a\u70ed\u70b9\u8d8b\u52bf\u641c\u7d22\n- \u8282\u70b9\uff1a\u300c\u641c\u7d22\u70ed\u70b9\u8d8b\u52bf DeepSeek\u300d\n- \u6a21\u578b\uff1adeepseek-chat\n- \u4f5c\u7528\uff1a\u5206\u6790\u5f53\u524d\u77ed\u89c6\u9891\u5e73\u53f0\u70ed\u70b9\uff0c\u7ed3\u5408\u4f60\u7684\u4e3b\u9898\uff0c\u8f93\u51fa3\u4e2a\u7206\u6b3e\u65b9\u5411\n- \u65e0\u9700\u989d\u5916\u914d\u7f6e\uff0c\u4f7f\u7528 STEP 2 \u4e2d\u7684 deepseekApiKey\n\n### \u4efb\u52a1B\uff1a\u811a\u672c\u751f\u6210\n- \u8282\u70b9\uff1a\u300c\u751f\u6210\u89c6\u9891\u811a\u672c DeepSeek\u300d\n- \u6a21\u578b\uff1adeepseek-chat\n- \u4f5c\u7528\uff1a\u57fa\u4e8e\u70ed\u70b9\u8d8b\u52bf\uff0c\u751f\u621030\u79d2\u77ed\u89c6\u9891\u811a\u672c\n- \u811a\u672c\u683c\u5f0f\uff1a\u7eaf\u6587\u5b57\uff0c\u9002\u5408TTS\u8bed\u97f3\u5408\u6210\uff0c\u65e0\u6807\u70b9\u7b26\u53f7\n\n### \u4efb\u52a1C\uff1a\u6587\u6848\u548c\u6807\u9898\u751f\u6210\n- \u8282\u70b9\uff1a\u300c\u751f\u6210\u53d1\u5e03\u6587\u6848 DeepSeek\u300d\n- \u6a21\u578b\uff1adeepseek-chat\n- \u4f5c\u7528\uff1a\u751f\u6210\u89c6\u9891\u914d\u6587 + 5-8\u4e2a\u70ed\u95e8\u6807\u7b7e\n\n### \u4efb\u52a1D\uff1aAI \u89c6\u9891\u8d28\u68c0\uff08\u65b0\u589e\uff09\n- \u8282\u70b9\uff1a\u300cAI\u8d28\u68c0 DeepSeek\u300d\n- \u4f5c\u7528\uff1a\u68c0\u67e5\u811a\u672c\u548c\u89c6\u9891\u4fe1\u606f\u662f\u5426\u5408\u89c4\u3001\u6709\u5438\u5f15\u529b\n- \u8d28\u68c0\u901a\u8fc7\u540e\u624d\u53d1\u9001\u98de\u4e66\u901a\u77e5\u548c\u4e0a\u4f20Blotato\n\n\ud83d\udca1 DeepSeek \u4f18\u52bf\uff1a\n- \u4ef7\u683c\u7ea6\u4e3a GPT-4 \u7684 1/20\n- \u4e2d\u6587\u7406\u89e3\u80fd\u529b\u6781\u5f3a\n- API \u683c\u5f0f\u4e0e OpenAI \u5b8c\u5168\u517c\u5bb9\n\n\u2705 \u65e0\u9700\u989d\u5916\u914d\u7f6e\uff0c\u4f7f\u7528 STEP 2 \u7684 Key \u5373\u53ef"
      },
      "typeVersion": 1
    },
    {
      "id": "53bb6457-5592-4deb-9443-8e41067ad05b",
      "name": "STEP 4 - MiniMax\u58f0\u97f3\u514b\u9686 + \u89c6\u9891\u751f\u6210",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 540,
        "height": 1040,
        "content": "# \ud83c\udf99\ufe0f STEP 4\uff1aMiniMax \u58f0\u97f3\u514b\u9686 + \u89c6\u9891\u751f\u6210\n\n## MiniMax \u8bed\u97f3\u5408\u6210\u914d\u7f6e\n\n### \u63a5\u53e3\u8bf4\u660e\n- \u63a5\u53e3\u5730\u5740\uff1ahttps://api.minimaxi.com/v1/t2a_v2\n- \u9700\u8981\u5728\u8bf7\u6c42\u5934\u4e2d\u4f20\u5165 GroupID\n- \u652f\u6301\u4e2d\u6587\u53d1\u97f3\u3001\u60c5\u611f\u63a7\u5236\u3001\u8bed\u901f\u8c03\u8282\n\n### \u914d\u7f6e\u53c2\u6570\n\u5728\u300cMiniMax\u8bed\u97f3\u5408\u6210\u300d\u8282\u70b9\u4e2d\u786e\u8ba4\u4ee5\u4e0b\u53c2\u6570\uff1a\n- `model`: speech-02-hd\uff08\u9ad8\u6e05\u97f3\u8d28\uff09\n- `voice_id`: \u586b\u5165\u4f60\u514b\u9686\u7684\u58f0\u97f3ID\n- `speed`: 1.0\uff08\u6b63\u5e38\u8bed\u901f\uff0c\u53ef\u8c03 0.5-2.0\uff09\n- `vol`: 1.0\uff08\u97f3\u91cf\uff09\n- `pitch`: 0\uff08\u97f3\u8c03\uff0c-12\u523012\uff09\n\n### \u58f0\u97f3\u514b\u9686\u6b65\u9aa4\n1. \u51c6\u5907\u4e00\u6bb530\u79d2\u4ee5\u4e0a\u7684\u6e05\u6670\u5f55\u97f3\n2. \u767b\u5f55 https://platform.minimaxi.com\n3. \u8fdb\u5165\u300c\u8bed\u97f3\u514b\u9686\u300d\u2192\u300c\u4e0a\u4f20\u6837\u672c\u300d\n4. \u7b49\u5f85\u8bad\u7ec3\u5b8c\u6210\uff08\u7ea65-10\u5206\u949f\uff09\n5. \u590d\u5236\u751f\u6210\u7684 Voice ID\n\n## FAL.ai VEED \u89c6\u9891\u751f\u6210\n\n### \u5de5\u4f5c\u6d41\u7a0b\n1. \u56fe\u7247\u4e0a\u4f20\u5230 tmpfiles.org\uff08\u4e34\u65f6\u516c\u5f00URL\uff09\n2. \u97f3\u9891\u4e0a\u4f20\u5230 tmpfiles.org\n3. \u8c03\u7528 VEED Fabric 1.0 API\n4. \u7b49\u5f85 10 \u5206\u949f\u6e32\u67d3\u5b8c\u6210\n5. \u4e0b\u8f7d\u6700\u7ec8\u89c6\u9891\n\n### VEED \u751f\u6210\u6548\u679c\n- \u8f93\u5165\uff1a\u4e00\u5f20\u9759\u6001\u56fe\u7247 + \u4e00\u6bb5\u97f3\u9891\n- \u8f93\u51fa\uff1a\u56fe\u7247\u4eba\u7269\u300c\u8bf4\u8bdd\u300d\u7684\u89c6\u9891\uff08\u5634\u5507\u540c\u6b65\uff09\n- \u5206\u8fa8\u7387\uff1a480p\uff08\u53ef\u5347\u7ea7\uff09\n\n\u2705 \u786e\u8ba4\uff1aMiniMax voice_id \u586b\u5199\u6b63\u786e\u540e\u53ef\u6d4b\u8bd5"
      },
      "typeVersion": 1
    },
    {
      "id": "65a45ce6-2028-49c6-97a9-b3c1e669775b",
      "name": "STEP 5 - \u98de\u4e66\u56de\u4f20 + AI\u8d28\u68c0 + Blotato\u53d1\u5e03",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3312,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 540,
        "height": 1280,
        "content": "# \ud83d\udce4 STEP 5\uff1a\u98de\u4e66\u56de\u4f20 + AI\u8d28\u68c0 + Blotato\u53d1\u5e03\n\n## \u98de\u4e66\u89c6\u9891\u56de\u4f20\n\n### \u914d\u7f6e\u6b65\u9aa4\n1. \u6253\u5f00\u300c\u98de\u4e66\u53d1\u9001\u89c6\u9891\u9884\u89c8\u300d\u8282\u70b9\n2. \u586b\u5165\u98de\u4e66\u673a\u5668\u4eba\u7684 App ID \u548c App Secret\n3. \u7cfb\u7edf\u4f1a\u81ea\u52a8\u56de\u4f20\u89c6\u9891\u94fe\u63a5\u5230\u53d1\u6d88\u606f\u7684\u98de\u4e66\u7528\u6237\n\n### \u98de\u4e66\u6d88\u606f\u683c\u5f0f\n- \u56de\u4f20\u5185\u5bb9\uff1a\u89c6\u9891\u94fe\u63a5 + AI\u8d28\u68c0\u7ed3\u679c + \u53d1\u5e03\u6587\u6848\n- \u683c\u5f0f\uff1a\u5bcc\u6587\u672c\u6d88\u606f\u5361\u7247\n\n---\n## \ud83e\udd16 AI \u8d28\u68c0\u8282\u70b9\uff08\u65b0\u589e\uff09\n\n\u5728\u89c6\u9891\u53d1\u9001\u5230\u98de\u4e66\u540e\uff0cDeepSeek \u4f1a\u5bf9\u5185\u5bb9\u8fdb\u884c\u5ba1\u67e5\uff1a\n\n**\u8d28\u68c0\u7ef4\u5ea6\uff1a**\n- \u2705 \u811a\u672c\u662f\u5426\u6709\u5438\u5f15\u529b\uff08\u94a9\u5b50\u5f3a\u5ea6\uff09\n- \u2705 \u5185\u5bb9\u662f\u5426\u5408\u89c4\uff08\u65e0\u8fdd\u7981\u8bcd\uff09\n- \u2705 \u6807\u7b7e\u662f\u5426\u4e0e\u5185\u5bb9\u76f8\u5173\n- \u2705 \u6574\u4f53\u8d28\u91cf\u8bc4\u5206\uff080-10\u5206\uff09\n\n**\u8d28\u68c0\u7ed3\u679c\u5904\u7406\uff1a**\n- \u8bc4\u5206 \u2265 7\uff1a\u81ea\u52a8\u901a\u8fc7\uff0c\u7ee7\u7eed\u4e0a\u4f20Blotato\n- \u8bc4\u5206 < 7\uff1a\u98de\u4e66\u53d1\u9001\u8b66\u544a\u901a\u77e5\uff0c\u6682\u505c\u53d1\u5e03\n\n---\n## \ud83d\udce1 Blotato \u591a\u5e73\u53f0\u53d1\u5e03\n\n### \u5b89\u88c5\u793e\u533a\u8282\u70b9\n```\nSettings \u2192 Community Nodes \u2192 Install\n\u8f93\u5165\uff1a@blotato/n8n-nodes-blotato\n```\n\n### \u914d\u7f6e\u5404\u5e73\u53f0\u8d26\u53f7\n1. \u767b\u5f55 Blotato \u2192 \u8fde\u63a5\u5404\u5e73\u53f0\u8d26\u53f7\n2. \u5728\u6bcf\u4e2a\u5e73\u53f0\u8282\u70b9\u4e2d\u9009\u62e9\u4f60\u7684\u8d26\u53f7\n3. \u652f\u6301\uff1a\u6296\u97f3/TikTok\u3001Instagram\u3001YouTube\u3001\n   Twitter/X\u3001Facebook\u3001LinkedIn\u3001Threads\n\n### \u89c6\u9891\u4e0a\u4f20\u6d41\u7a0b\n1. Upload Video to BLOTATO\uff08\u4e0a\u4f20\u5a92\u4f53\uff09\n2. \u5404\u5e73\u53f0\u8282\u70b9\u8bfb\u53d6\u4e0a\u4f20\u540e\u7684 URL\n3. \u540c\u65f6\u5411\u6240\u6709\u5e73\u53f0\u53d1\u5e03\n\n\u2705 \u5168\u90e8\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u6fc0\u6d3b\u5de5\u4f5c\u6d41\uff01"
      },
      "typeVersion": 1
    },
    {
      "id": "c8932868-37a7-4119-863c-2fba06da5416",
      "name": "\u26a1 \u5b8c\u6574\u6d41\u7a0b\u8bf4\u660e",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        640
      ],
      "parameters": {
        "color": 3,
        "width": 440,
        "height": 1080,
        "content": "# \u26a1 \u5de5\u4f5c\u6d41\u5b8c\u6574\u6d41\u7a0b\u56fe\n\n1\ufe0f\u20e3 \u98de\u4e66\u673a\u5668\u4eba\u63a5\u6536\u56fe\u7247+\u4e3b\u9898\n   \u2193\n2\ufe0f\u20e3 \u5de5\u4f5c\u6d41\u914d\u7f6e\u8282\u70b9\uff08\u8bfb\u53d6\u6240\u6709API Key\uff09\n   \u2193\n3\ufe0f\u20e3 \u63d0\u53d6\u56fe\u7247ID\u548c\u4e3b\u9898\u6587\u5b57\n   \u2193\n4\ufe0f\u20e3 \u83b7\u53d6\u98de\u4e66\u56fe\u7247\u6587\u4ef6\uff08\u4e0b\u8f7d\u5230N8N\uff09\n   \u2193\n5\ufe0f\u20e3 \u4e0a\u4f20\u56fe\u7247\u5230\u4e34\u65f6\u516c\u5f00URL\n   \u2193\n6\ufe0f\u20e3 DeepSeek \u5206\u6790\u70ed\u70b9\u8d8b\u52bf\uff083\u4e2a\u65b9\u5411\uff09\n   \u2193\n7\ufe0f\u20e3 DeepSeek \u751f\u621030\u79d2\u89c6\u9891\u811a\u672c\n   \u2193\n8\ufe0f\u20e3 MiniMax \u8bed\u97f3\u514b\u9686\u5408\u6210\u97f3\u9891\n   \u2193\n9\ufe0f\u20e3 \u97f3\u9891\u683c\u5f0f\u8f6c\u6362\uff08mpga\u2192mp3\uff09\n   \u2193\n\ud83d\udd1f \u97f3\u9891\u4e0a\u4f20\u4e34\u65f6\u516c\u5f00URL\n   \u2193\n1\ufe0f\u20e31\ufe0f\u20e3 FAL.ai VEED \u5408\u6210\u89c6\u9891\uff08\u7b49\u5f8510\u5206\u949f\uff09\n   \u2193\n1\ufe0f\u20e32\ufe0f\u20e3 \u4e0b\u8f7d\u89c6\u9891\u6587\u4ef6\n   \u2193\n1\ufe0f\u20e33\ufe0f\u20e3 DeepSeek \u751f\u6210\u53d1\u5e03\u6587\u6848+\u6807\u7b7e\n   \u2193\n1\ufe0f\u20e34\ufe0f\u20e3 \u4fdd\u5b58\u8bb0\u5f55\u5230 Google Sheets\n   \u2193\n1\ufe0f\u20e35\ufe0f\u20e3 \u98de\u4e66\u673a\u5668\u4eba\u56de\u4f20\u89c6\u9891\u9884\u89c8\n   \u2193\n1\ufe0f\u20e36\ufe0f\u20e3 DeepSeek AI \u8d28\u68c0\u89c6\u9891\u5185\u5bb9\n   \u2193\uff08\u8d28\u68c0\u901a\u8fc7\uff09\n1\ufe0f\u20e37\ufe0f\u20e3 \u4e0a\u4f20\u89c6\u9891\u5230 Blotato\n   \u2193\n1\ufe0f\u20e38\ufe0f\u20e3 \u540c\u65f6\u53d1\u5e03\u5230\u591a\u4e2a\u793e\u4ea4\u5e73\u53f0\n   \u2193\n1\ufe0f\u20e39\ufe0f\u20e3 \u66f4\u65b0 Google Sheets \u72b6\u6001\u4e3a DONE\n\n\u23f1\ufe0f \u603b\u8017\u65f6\uff1a\u7ea6 3-5 \u5206\u949f\n\ud83c\udfaf \u7ed3\u679c\uff1a\u89c6\u9891\u81ea\u52a8\u53d1\u5e03\u5230\u6240\u6709\u5e73\u53f0\uff01"
      },
      "typeVersion": 1
    },
    {
      "id": "c54d3e67-3693-487a-91eb-704eab6ba60e",
      "name": "\u26a0\ufe0f \u5e38\u89c1\u95ee\u9898\u6392\u67e5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        864
      ],
      "parameters": {
        "color": 6,
        "width": 440,
        "height": 840,
        "content": "# \u26a0\ufe0f \u5e38\u89c1\u95ee\u9898\u6392\u67e5\n\n## Q1: \u98de\u4e66\u89e6\u53d1\u5668\u6536\u4e0d\u5230\u6d88\u606f\uff1f\n- \u68c0\u67e5\u98de\u4e66\u5e94\u7528\u662f\u5426\u5df2\u53d1\u5e03\n- \u786e\u8ba4 N8N Webhook URL \u662f\u5426\u586b\u5230\u98de\u4e66\u300c\u4e8b\u4ef6\u8ba2\u9605\u300d\n- N8N \u5fc5\u987b\u90e8\u7f72\u5728\u516c\u7f51\u53ef\u8bbf\u95ee\u7684\u670d\u52a1\u5668\n- \u672c\u5730\u8fd0\u884c\u9700\u8981\u7528 ngrok \u505a\u5185\u7f51\u7a7f\u900f\n\n## Q2: MiniMax \u8fd4\u56de\u9519\u8bef\uff1f\n- \u68c0\u67e5 Group ID \u662f\u5426\u6b63\u786e\uff08\u4e0d\u662f App ID\uff09\n- \u786e\u8ba4 voice_id \u5b58\u5728\u4e14\u5c5e\u4e8e\u8be5\u8d26\u53f7\n- \u4f59\u989d\u4e0d\u8db3\u4f1a\u5bfc\u81f4 402 \u9519\u8bef\uff0c\u9700\u5145\u503c\n\n## Q3: FAL.ai \u89c6\u9891\u751f\u6210\u5931\u8d25\uff1f\n- \u68c0\u67e5\u56fe\u7247URL\u548c\u97f3\u9891URL\u662f\u5426\u53ef\u516c\u7f51\u8bbf\u95ee\n- tmpfiles.org \u4e0a\u4f20\u6210\u529f\u540e\u9700\u8f6c\u6362URL\u683c\u5f0f\n  \u539f\u59cb\uff1ahttp://tmpfiles.org/123/file.jpg\n  \u9700\u6539\u4e3a\uff1ahttps://tmpfiles.org/dl/123/file.jpg\n- \u8fd9\u4e2a\u8f6c\u6362\u5728\u8282\u70b9\u4e2d\u5df2\u81ea\u52a8\u5904\u7406\n\n## Q4: Blotato \u53d1\u5e03\u5931\u8d25\uff1f\n- \u793e\u533a\u8282\u70b9\u5fc5\u987b\u5148\u5b89\u88c5\uff1a@blotato/n8n-nodes-blotato\n- \u5728 Blotato \u540e\u53f0\u786e\u8ba4\u5404\u5e73\u53f0\u8d26\u53f7\u5df2\u8fde\u63a5\n- \u89c6\u9891URL\u5fc5\u987b\u662f\u53ef\u76f4\u63a5\u8bbf\u95ee\u7684mp4\u94fe\u63a5\n\n## Q5: DeepSeek API \u62a5\u9519\uff1f\n- \u68c0\u67e5 API Key \u683c\u5f0f\u662f\u5426\u6b63\u786e\uff08\u4ee5 sk- \u5f00\u5934\uff09\n- \u786e\u8ba4\u8d26\u6237\u4f59\u989d\u5145\u8db3\n- DeepSeek API \u5730\u5740\uff1ahttps://api.deepseek.com\n- \u517c\u5bb9 OpenAI SDK\uff0c\u5728N8N\u4e2d\u9009 OpenAI \u8282\u70b9\u7c7b\u578b\n  \u4fee\u6539 Base URL \u4e3a\uff1ahttps://api.deepseek.com"
      },
      "typeVersion": 1
    },
    {
      "id": "a4ca1336-2047-4eb9-aacd-430dfcb21e4f",
      "name": "\u98de\u4e66\u673a\u5668\u4eba\u89e6\u53d1\u5668",
      "type": "n8n-nodes-base.webhook",
      "notes": "=== \u8282\u70b9\u914d\u7f6e\u8bf4\u660e ===\n\n\u98de\u4e66\u673a\u5668\u4eba\u901a\u8fc7 Webhook \u89e6\u53d1\u6b64\u8282\u70b9\u3002\n\n\u3010Webhook URL\u83b7\u53d6\u65b9\u5f0f\u3011\n1. \u4fdd\u5b58\u672c\u5de5\u4f5c\u6d41\n2. \u70b9\u51fb\u672c\u8282\u70b9\uff0c\u590d\u5236\u663e\u793a\u7684 Webhook URL\n3. \u5c06\u6b64URL\u586b\u5165\u98de\u4e66\u5f00\u653e\u5e73\u53f0 \u2192\u300c\u4e8b\u4ef6\u8ba2\u9605\u300d\n\n\u3010\u98de\u4e66\u6d88\u606f\u683c\u5f0f\u8bf4\u660e\u3011\n\u98de\u4e66\u53d1\u9001\u56fe\u7247+\u6587\u5b57\u65f6\uff0c\u6d88\u606f\u4f53\u7ed3\u6784\u5982\u4e0b\uff1a\n- \u6d88\u606f\u7c7b\u578b\uff1aimage\uff08\u56fe\u7247\uff09\n- \u56fe\u7247\u6d88\u606f\u4e2d\uff0c\u8bf4\u660e\u6587\u5b57\u5728 message.content \u7684 caption \u5b57\u6bb5\n- \u56fe\u7247\u6587\u4ef6ID\u5728 message.content \u7684 image_key \u5b57\u6bb5\n\n\u3010\u9a8c\u8bc1\u98de\u4e66\u56de\u8c03\u3011\n\u98de\u4e66\u5728\u7ed1\u5b9aURL\u65f6\u4f1a\u53d1\u9001 challenge \u53c2\u6570\u9a8c\u8bc1\uff0c\n\u672c\u5de5\u4f5c\u6d41\u4e2d\u300c\u98de\u4e66\u9a8c\u8bc1\u54cd\u5e94\u300d\u8282\u70b9\u4f1a\u81ea\u52a8\u5904\u7406\u9a8c\u8bc1\u3002\n\n\u3010\u91cd\u8981\u3011N8N\u5fc5\u987b\u90e8\u7f72\u5728\u516c\u7f51\uff0c\u98de\u4e66\u624d\u80fd\u56de\u8c03\u3002\n\u672c\u5730\u6d4b\u8bd5\u5efa\u8bae\u4f7f\u7528 ngrok\uff1a\nnpx ngrok http 5678",
      "position": [
        1808,
        1040
      ],
      "parameters": {
        "path": "feishu-video-trigger",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "a72c38a2-8cca-4dbc-9d55-2688ffe3716b",
      "name": "\u98de\u4e66\u9a8c\u8bc1\u54cd\u5e94",
      "type": "n8n-nodes-base.respondToWebhook",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u98de\u4e66\u5728\u9996\u6b21\u7ed1\u5b9aWebhook URL\u65f6\uff0c\u4f1a\u53d1\u9001\u4e00\u4e2a challenge \u53c2\u6570\u8fdb\u884c\u9a8c\u8bc1\u3002\n\u672c\u8282\u70b9\u81ea\u52a8\u5c06 challenge \u503c\u539f\u6837\u8fd4\u56de\uff0c\u5b8c\u6210\u9a8c\u8bc1\u63e1\u624b\u3002\n\n\u3010\u5de5\u4f5c\u539f\u7406\u3011\n\u98de\u4e66\u53d1\u9001\uff1a{ challenge: 'abc123', type: 'url_verification' }\n\u672c\u8282\u70b9\u8fd4\u56de\uff1a{ challenge: 'abc123' }\n\u98de\u4e66\u786e\u8ba4URL\u6709\u6548\uff0c\u6b63\u5f0f\u542f\u7528\u4e8b\u4ef6\u8ba2\u9605\u3002\n\n\u3010\u4ec5\u9a8c\u8bc1\u65f6\u89e6\u53d1\u3011\n\u6b63\u5e38\u4e1a\u52a1\u6d88\u606f\u4e0d\u4f1a\u7ecf\u8fc7\u6b64\u8282\u70b9\u3002",
      "position": [
        2000,
        944
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ challenge: $json.body.challenge }) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "c95e4314-07f5-444f-aa79-505eb8c514d8",
      "name": "\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09",
      "type": "n8n-nodes-base.set",
      "notes": "=== \ud83d\udd11 \u6240\u6709API Key\u5728\u8fd9\u91cc\u7edf\u4e00\u914d\u7f6e ===\n\n\u3010deepseekApiKey\u3011\n- \u83b7\u53d6\u5730\u5740\uff1ahttps://platform.deepseek.com \u2192 API Keys\n- \u683c\u5f0f\uff1ask-xxxxxxxxxxxxxxxx\n- \u7528\u9014\uff1a\u811a\u672c\u751f\u6210\u3001\u6587\u6848\u751f\u6210\u3001AI\u8d28\u68c0\n\n\u3010minimaxApiKey + minimaxGroupId\u3011\n- \u83b7\u53d6\u5730\u5740\uff1ahttps://platform.minimaxi.com \u2192 \u63a7\u5236\u53f0\n- GroupID \u5728\u63a7\u5236\u53f0\u9996\u9875\u53f3\u4e0a\u89d2\u53ef\u4ee5\u627e\u5230\n- \u4e24\u4e2a\u503c\u7f3a\u4e00\u4e0d\u53ef\n\n\u3010minimaxVoiceId\u3011\n- \u5728MiniMax\u300c\u8bed\u97f3\u514b\u9686\u300d\u529f\u80fd\u4e2d\u4e0a\u4f20\u4f60\u7684\u58f0\u97f3\n- \u514b\u9686\u5b8c\u6210\u540e\u4f1a\u751f\u6210\u4e00\u4e2avoice_id\n- \u4e5f\u53ef\u4f7f\u7528MiniMax\u5185\u7f6e\u97f3\u8272\uff08\u67e5\u770b\u6587\u6863\u83b7\u53d6ID\uff09\n\n\u3010falApiKey\u3011\n- \u83b7\u53d6\u5730\u5740\uff1ahttps://fal.ai \u2192 Dashboard \u2192 API Keys\n- \u683c\u5f0f\uff1axxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx\n\n\u3010feishuAppId + feishuAppSecret\u3011\n- \u5728\u98de\u4e66\u5f00\u653e\u5e73\u53f0\u521b\u5efa\u5e94\u7528\u540e\u83b7\u5f97\n- \u7528\u4e8e\u98de\u4e66\u673a\u5668\u4eba\u53d1\u9001\u6d88\u606f\u7ed9\u7528\u6237\n\n\u3010qualityThreshold\u3011\n- AI\u8d28\u68c0\u901a\u8fc7\u5206\u6570\u7ebf\uff08\u9ed8\u8ba47\u5206\uff0c\u6ee1\u520610\u5206\uff09\n- \u4f4e\u4e8e\u6b64\u5206\u6570\u7684\u89c6\u9891\u4e0d\u4f1a\u81ea\u52a8\u53d1\u5e03\uff0c\u4f1a\u98de\u4e66\u901a\u77e5\u4eba\u5de5\u5ba1\u6838",
      "position": [
        2208,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "deepseekApiKey",
              "type": "string",
              "value": "YOUR_DEEPSEEK_API_KEY"
            },
            {
              "id": "id-2",
              "name": "minimaxApiKey",
              "type": "string",
              "value": "YOUR_MINIMAX_API_KEY"
            },
            {
              "id": "id-3",
              "name": "minimaxGroupId",
              "type": "string",
              "value": "YOUR_MINIMAX_GROUP_ID"
            },
            {
              "id": "id-4",
              "name": "minimaxVoiceId",
              "type": "string",
              "value": "YOUR_CLONED_VOICE_ID"
            },
            {
              "id": "id-5",
              "name": "falApiKey",
              "type": "string",
              "value": "YOUR_FAL_API_KEY"
            },
            {
              "id": "id-6",
              "name": "feishuAppId",
              "type": "string",
              "value": "YOUR_FEISHU_APP_ID"
            },
            {
              "id": "id-7",
              "name": "feishuAppSecret",
              "type": "string",
              "value": "YOUR_FEISHU_APP_SECRET"
            },
            {
              "id": "id-8",
              "name": "scriptMaxSeconds",
              "type": "number",
              "value": 30
            },
            {
              "id": "id-9",
              "name": "deepseekModel",
              "type": "string",
              "value": "deepseek-chat"
            },
            {
              "id": "id-10",
              "name": "qualityThreshold",
              "type": "number",
              "value": 7
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "77acf079-14d3-47eb-a19c-10893cc539ca",
      "name": "\u63d0\u53d6\u98de\u4e66\u56fe\u7247\u548c\u4e3b\u9898",
      "type": "n8n-nodes-base.set",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u4ece\u98de\u4e66\u6d88\u606f\u4e2d\u63d0\u53d6\u5173\u952e\u4fe1\u606f\uff1a\n\n\u3010imageKey\u3011\n\u98de\u4e66\u56fe\u7247\u6d88\u606f\u7684\u56fe\u7247\u6807\u8bc6\u7b26\uff08image_key\uff09\uff0c\n\u540e\u7eed\u7528\u6b64Key\u901a\u8fc7\u98de\u4e66API\u4e0b\u8f7d\u56fe\u7247\u3002\n\n\u3010theme\u3011\n\u7528\u6237\u5728\u98de\u4e66\u53d1\u9001\u7684\u6587\u5b57\u8bf4\u660e = \u89c6\u9891\u4e3b\u9898\n\u4f8b\u5982\uff1a\u7528\u6237\u53d1\u9001\u56fe\u7247\uff0c\u9644\u5e26\u8bf4\u660e\u300c\u5065\u8eab\u52a8\u4f5c\u6559\u5b66\u300d\n\u5219 theme = \u300c\u5065\u8eab\u52a8\u4f5c\u6559\u5b66\u300d\n\n\u3010senderId\u3011\n\u98de\u4e66\u7528\u6237\u7684 open_id\uff0c\u7528\u4e8e\u6700\u540e\u56de\u4f20\u89c6\u9891\u6d88\u606f\u7ed9\u8be5\u7528\u6237\n\n\u3010chatId\u3011\n\u6d88\u606f\u6240\u5728\u7684\u98de\u4e66\u5bf9\u8bdd ID\uff08\u7fa4\u804a\u6216\u79c1\u804a\uff09\uff0c\n\u7528\u4e8e\u53d1\u9001\u56de\u590d\u6d88\u606f\n\n\u3010\u98de\u4e66\u6d88\u606f\u6570\u636e\u7ed3\u6784\u8bf4\u660e\u3011\n\u98de\u4e66\u4e8b\u4ef6\u6d88\u606f\u4f53\u7ed3\u6784\uff1a\nbody.event.message.content \u2192 JSON\u5b57\u7b26\u4e32\n  .image_key \u2192 \u56fe\u7247ID\n  .text \u2192 \u6587\u5b57\u5185\u5bb9\nbody.event.sender.sender_id.open_id \u2192 \u53d1\u9001\u8005ID",
      "position": [
        2400,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "imageKey",
              "type": "string",
              "value": "={{ $json.body.event && $json.body.event.message ? JSON.parse($json.body.event.message.content).image_key : '' }}"
            },
            {
              "id": "id-2",
              "name": "theme",
              "type": "string",
              "value": "={{ $json.body.event && $json.body.event.message ? ($json.body.event.message.mentions ? $json.body.event.message.mentions[0] && JSON.parse($json.body.event.message.content).text || '\u77ed\u89c6\u9891\u70ed\u95e8\u8bdd\u9898' : JSON.parse($json.body.event.message.content).text || '\u77ed\u89c6\u9891\u70ed\u95e8\u8bdd\u9898') : '\u77ed\u89c6\u9891\u70ed\u95e8\u8bdd\u9898' }}"
            },
            {
              "id": "id-3",
              "name": "senderId",
              "type": "string",
              "value": "={{ $json.body.event && $json.body.event.sender ? $json.body.event.sender.sender_id.open_id : '' }}"
            },
            {
              "id": "id-4",
              "name": "chatId",
              "type": "string",
              "value": "={{ $json.body.event && $json.body.event.message ? $json.body.event.message.chat_id : '' }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "deb69431-00e6-4916-8310-4f1c815b0d4e",
      "name": "\u83b7\u53d6\u98de\u4e66\u8bbf\u95ee\u4ee4\u724c",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u98de\u4e66 API \u9700\u8981\u5148\u83b7\u53d6 tenant_access_token \u624d\u80fd\u8c03\u7528\u5176\u4ed6\u63a5\u53e3\u3002\n\n\u3010\u63a5\u53e3\u8bf4\u660e\u3011\n- \u5730\u5740\uff1aPOST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal\n- \u5165\u53c2\uff1aapp_id + app_secret\n- \u8fd4\u56de\uff1atenant_access_token\uff08\u6709\u6548\u671f2\u5c0f\u65f6\uff09\n\n\u3010\u6b64Token\u7528\u4e8e\u3011\n1. \u4e0b\u8f7d\u56fe\u7247\u8d44\u6e90\uff08\u901a\u8fc7image_key\u83b7\u53d6\u5b9e\u9645\u56fe\u7247\uff09\n2. \u53d1\u9001\u56de\u590d\u6d88\u606f\u7ed9\u7528\u6237\n\n\u3010\u6ce8\u610f\u3011\n\u6bcf\u6b21\u5de5\u4f5c\u6d41\u6267\u884c\u90fd\u4f1a\u91cd\u65b0\u83b7\u53d6Token\uff0c\u65e0\u9700\u7f13\u5b58\u5904\u7406",
      "position": [
        2608,
        1040
      ],
      "parameters": {
        "url": "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "jsonBody": "={{ { \"app_id\": $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.feishuAppId, \"app_secret\": $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.feishuAppSecret } }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "60ce6638-0979-4ac5-b58b-7d4c96dcf4f0",
      "name": "\u4ece\u98de\u4e66\u4e0b\u8f7d\u56fe\u7247",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u901a\u8fc7\u98de\u4e66 API \u4e0b\u8f7d\u56fe\u7247\u5230 N8N \u672c\u5730\uff08\u4e8c\u8fdb\u5236\u6570\u636e\uff09\u3002\n\n\u3010\u63a5\u53e3\u8bf4\u660e\u3011\n- GET https://open.feishu.cn/open-apis/im/v1/images/{image_key}\n- \u9700\u8981 Authorization: Bearer {tenant_access_token}\n- \u8fd4\u56de\u56fe\u7247\u4e8c\u8fdb\u5236\u6587\u4ef6\n\n\u3010\u6ce8\u610f\u4e8b\u9879\u3011\n- \u56fe\u7247\u7c7b\u578b\u6d88\u606f\u7684 image_key \u683c\u5f0f\uff1aimg_xxxxx\n- \u5982\u679c\u7528\u6237\u53d1\u9001\u7684\u662f\u6587\u5b57\u800c\u975e\u56fe\u7247\uff0c\u6b64\u8282\u70b9\u4f1a\u62a5\u9519\n- \u5efa\u8bae\u5728\u98de\u4e66\u673a\u5668\u4eba\u8bf4\u660e\u4e2d\u63d0\u793a\u7528\u6237\uff1a\u8bf7\u53d1\u56fe\u7247+\u8bf4\u660e\u6587\u5b57\n\n\u3010\u8f93\u51fa\u3011\n\u56fe\u7247\u5b58\u50a8\u5728 binary.data \u5b57\u6bb5\u4e2d\uff0c\u540e\u7eed\u4e0a\u4f20\u8282\u70b9\u4f1a\u4f7f\u7528",
      "position": [
        2800,
        1040
      ],
      "parameters": {
        "url": "={{ 'https://open.feishu.cn/open-apis/im/v1/images/' + $('\u63d0\u53d6\u98de\u4e66\u56fe\u7247\u548c\u4e3b\u9898').first().json.imageKey }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $json.tenant_access_token }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9cf5650a-5321-4f16-981f-20098962e64e",
      "name": "\u4e0a\u4f20\u56fe\u7247\u5230\u516c\u5f00URL",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u5c06\u98de\u4e66\u56fe\u7247\u4e0a\u4f20\u5230 tmpfiles.org\uff0c\u83b7\u5f97\u516c\u5f00\u53ef\u8bbf\u95ee\u7684URL\u3002\nFAL.ai \u9700\u8981\u901a\u8fc7\u516c\u7f51URL\u8bbf\u95ee\u56fe\u7247\uff0c\u65e0\u6cd5\u76f4\u63a5\u5904\u7406\u672c\u5730\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002\n\n\u3010tmpfiles.org \u8bf4\u660e\u3011\n- \u514d\u8d39\u4e34\u65f6\u6587\u4ef6\u6258\u7ba1\u670d\u52a1\n- \u6587\u4ef6\u572824\u5c0f\u65f6\u540e\u81ea\u52a8\u5220\u9664\uff08\u8db3\u591f\u4f7f\u7528\uff09\n- \u8fd4\u56de\u683c\u5f0f\uff1a{ status: 'success', data: { url: 'http://...' } }\n\n\u3010\u91cd\u8981\uff1aURL\u683c\u5f0f\u8f6c\u6362\u3011\n\u539f\u59cbURL\uff1ahttp://tmpfiles.org/123456/image.jpg\n\u9700\u8f6c\u6362\u4e3a\uff1ahttps://tmpfiles.org/dl/123456/image.jpg\n\uff08\u52a0 /dl/ \u524d\u7f00\uff0c\u6539\u4e3a https\uff0c\u5426\u5219 FAL.ai \u65e0\u6cd5\u4e0b\u8f7d\uff09\n\u8fd9\u4e2a\u8f6c\u6362\u5728\u540e\u7eed\u300cFAL.ai\u89c6\u9891\u751f\u6210\u300d\u8282\u70b9\u7684\u53c2\u6570\u4e2d\u81ea\u52a8\u5904\u7406",
      "position": [
        3008,
        1040
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3b8bb789-a315-4323-945b-a487ecf1b915",
      "name": "DeepSeek\u641c\u7d22\u70ed\u70b9\u8d8b\u52bf",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u4f7f\u7528 DeepSeek \u66ff\u4ee3 Perplexity\uff0c\u641c\u7d22\u5f53\u524d\u70ed\u95e8\u8d8b\u52bf\u3002\n\n\u3010DeepSeek API \u517c\u5bb9\u8bf4\u660e\u3011\nDeepSeek \u7684 API \u683c\u5f0f\u4e0e OpenAI \u5b8c\u5168\u517c\u5bb9\uff0c\n\u53ea\u9700\u5c06 base URL \u6539\u4e3a https://api.deepseek.com \u5373\u53ef\u3002\n\n\u3010\u6a21\u578b\u8bf4\u660e\u3011\n- deepseek-chat\uff1a\u5373 DeepSeek-V3\uff0c\u7efc\u5408\u80fd\u529b\u5f3a\uff0c\u4e2d\u6587\u6781\u4f73\n- \u4ef7\u683c\u7ea6\u4e3a GPT-4o \u7684 1/30\uff0c\u6027\u4ef7\u6bd4\u6781\u9ad8\n\n\u3010Temperature 0.7\u3011\n\u8d8b\u52bf\u5206\u6790\u9700\u8981\u4e00\u5b9a\u521b\u610f\u6027\uff0c0.7\u662f\u5e73\u8861\u70b9\u3002\n\u5982\u679c\u60f3\u8981\u66f4\u7a33\u5b9a\u7684\u8f93\u51fa\uff0c\u53ef\u4ee5\u964d\u4f4e\u5230 0.4\u3002\n\n\u3010\u8f93\u51fa\u6570\u636e\u8def\u5f84\u3011\n$json.choices[0].message.content \u2192 \u8d8b\u52bf\u6587\u5b57",
      "position": [
        1808,
        1328
      ],
      "parameters": {
        "url": "https://api.deepseek.com/v1/chat/completions",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "jsonBody": "={{ {\n  \"model\": $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.deepseekModel,\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"\u4f60\u662f\u4e00\u4f4d\u4e13\u4e1a\u7684\u77ed\u89c6\u9891\u5185\u5bb9\u7b56\u7565\u5e08\uff0c\u7cbe\u901a\u6296\u97f3\u3001TikTok\u7684\u6d41\u91cf\u7b97\u6cd5\u548c\u7206\u6b3e\u89c4\u5f8b\u3002\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"\u8bf7\u9488\u5bf9\u4ee5\u4e0b\u4e3b\u9898\uff0c\u627e\u51fa\u5f53\u524d\u6700\u70ed\u95e8\u76843\u4e2a\u77ed\u89c6\u9891\u5185\u5bb9\u65b9\u5411\uff1a\" + $('\u63d0\u53d6\u98de\u4e66\u56fe\u7247\u548c\u4e3b\u9898').first().json.theme + \"\\n\\n\u8981\u6c42\uff1a\\n1. \u6bcf\u4e2a\u65b9\u5411\u7b80\u6d01\u63cf\u8ff0\uff08\u4e0d\u8d85\u8fc720\u5b57\uff09\\n2. \u8bf4\u660e\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u65b9\u5411\u73b0\u5728\u6d41\u884c\\n3. \u7ed9\u51fa\u4e00\u4e2a\u5177\u4f53\u7684\u5185\u5bb9\u5207\u5165\u89d2\u5ea6\\n4. \u8f93\u51fa\u683c\u5f0f\uff1a\u65b9\u54111/\u65b9\u54112/\u65b9\u54113\uff0c\u7eaf\u6587\u5b57\uff0c\u4e0d\u52a0\u5e8f\u53f7\u548c\u6807\u70b9\"\n    }\n  ],\n  \"max_tokens\": 500,\n  \"temperature\": 0.7\n} }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.deepseekApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ad6a01e8-c258-4853-9aca-5df3f176e8fd",
      "name": "DeepSeek\u751f\u6210\u89c6\u9891\u811a\u672c",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u57fa\u4e8e\u70ed\u70b9\u8d8b\u52bf\uff0c\u751f\u6210\u9002\u5408\u8bed\u97f3\u5408\u6210\u7684\u77ed\u89c6\u9891\u811a\u672c\u3002\n\n\u3010\u811a\u672c\u8981\u6c42\u8bf4\u660e\u3011\n- \u7eaf\u6587\u5b57\uff0c\u65e0\u6807\u70b9\u7b26\u53f7\uff1aMiniMax TTS\u8bfb\u5230\u6807\u70b9\u4f1a\u505c\u987f\uff0c\u5f71\u54cd\u6d41\u7545\u5ea6\n- 150\u5b57\u4ee5\u5185\uff1a\u63a7\u5236\u572830\u79d2\u5185\uff0c\u8bed\u901f\u7ea65\u5b57/\u79d2\n- \u5f3a\u529b\u94a9\u5b50\uff1a\u524d3\u79d2\u51b3\u5b9a\u7559\u5b58\u7387\n\n\u3010Temperature 0.85\u3011\n\u811a\u672c\u521b\u4f5c\u9700\u8981\u66f4\u9ad8\u521b\u610f\uff0c0.85\u8ba9\u8f93\u51fa\u66f4\u6709\u53d8\u5316\u548c\u6d3b\u529b\u3002\n\n\u3010\u8f93\u51fa\u6570\u636e\u8def\u5f84\u3011\n$json.choices[0].message.content \u2192 \u811a\u672c\u6587\u5b57\n\n\u3010\u540e\u7eed\u4f7f\u7528\u3011\n\u6b64\u811a\u672c\u76f4\u63a5\u4f20\u7ed9 MiniMax \u8fdb\u884c\u8bed\u97f3\u5408\u6210",
      "position": [
        2080,
        1328
      ],
      "parameters": {
        "url": "https://api.deepseek.com/v1/chat/completions",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "jsonBody": "={{ {\n  \"model\": $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.deepseekModel,\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"\u4f60\u662f\u4e00\u4f4d\u9876\u7ea7\u77ed\u89c6\u9891\u811a\u672c\u4f5c\u8005\uff0c\u64c5\u957f\u521b\u4f5c\u8ba9\u4eba\u505c\u4e0d\u4e0b\u6765\u7684\u77ed\u89c6\u9891\u5185\u5bb9\u3002\u4f60\u4e86\u89e3\u4eba\u6027\uff0c\u77e5\u9053\u4ec0\u4e48\u5185\u5bb9\u80fd\u8ba9\u4eba\u57283\u79d2\u5185\u505c\u4f4f\u5212\u5c4f\u7684\u624b\u6307\u3002\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"\u57fa\u4e8e\u4ee5\u4e0b\u70ed\u70b9\u8d8b\u52bf\uff1a\" + $('DeepSeek\u641c\u7d22\u70ed\u70b9\u8d8b\u52bf').first().json.choices[0].message.content + \"\\n\\n\u4e3a\u4e3b\u9898\u3010\" + $('\u63d0\u53d6\u98de\u4e66\u56fe\u7247\u548c\u4e3b\u9898').first().json.theme + \"\u3011\u521b\u4f5c\u4e00\u4e2a30\u79d2\u77ed\u89c6\u9891\u811a\u672c\u3002\\n\\n\u4e25\u683c\u8981\u6c42\uff1a\\n1. \u603b\u65f6\u957f\u4e0d\u8d85\u8fc730\u79d2\uff08\u7ea6150\u5b57\u4ee5\u5185\uff09\\n2. \u524d3\u79d2\u5fc5\u987b\u6709\u5f3a\u529b\u94a9\u5b50\uff08\u6570\u5b57/\u53cd\u5e38\u8bc6/\u5f15\u53d1\u597d\u5947\uff09\\n3. \u8bed\u8a00\u53e3\u8bed\u5316\uff0c\u50cf\u771f\u4eba\u8bf4\u8bdd\\n4. \u4e0d\u8981\u4efb\u4f55\u6807\u70b9\u7b26\u53f7\u3001\u5e8f\u53f7\u3001\u6362\u884c\uff0c\u53ea\u8f93\u51fa\u7eaf\u6587\u5b57\\n5. \u4e0d\u8981\u63d0\u4efb\u4f55\u5de5\u5177\u540d\u79f0\uff0c\u53ea\u8bf4\u7ed3\u679c\u548c\u611f\u53d7\"\n    }\n  ],\n  \"max_tokens\": 400,\n  \"temperature\": 0.85\n} }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.deepseekApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9e66950c-521a-407b-a580-e09ae82f3332",
      "name": "MiniMax\u8bed\u97f3\u514b\u9686\u5408\u6210",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u8c03\u7528 MiniMax TTS API\uff0c\u4f7f\u7528\u4f60\u514b\u9686\u7684\u58f0\u97f3\u5408\u6210\u97f3\u9891\u3002\n\n\u3010API \u7aef\u70b9\u8bf4\u660e\u3011\n- \u5730\u5740\uff1ahttps://api.minimaxi.com/v1/t2a_v2\n- GroupId \u9700\u8981\u4f5c\u4e3a URL \u67e5\u8be2\u53c2\u6570\u4f20\u5165\uff08\u4e0d\u662f\u653e\u5728\u8bf7\u6c42\u4f53\u4e2d\uff09\n\n\u3010\u6a21\u578b\u9009\u62e9\u3011\n- speech-02-hd\uff1a\u9ad8\u6e05\u97f3\u8d28\uff0c\u63a8\u8350\u7528\u4e8e\u89c6\u9891\u914d\u97f3\n- speech-01-turbo\uff1a\u5feb\u901f\u7248\u672c\uff0c\u8d28\u91cf\u7565\u4f4e\u4f46\u54cd\u5e94\u66f4\u5feb\n\n\u3010voice_id \u8bf4\u660e\u3011\n\u586b\u5165\u4f60\u5728 MiniMax \u5e73\u53f0\u514b\u9686\u7684\u58f0\u97f3ID\u3002\n\u5982\u679c\u6ca1\u6709\u514b\u9686\u58f0\u97f3\uff0c\u53ef\u4ee5\u4f7f\u7528 MiniMax \u5185\u7f6e\u97f3\u8272\uff1a\n- male-qn-qingse\uff1a\u9752\u6da9\u7537\u58f0\n- female-shaonv\uff1a\u5c11\u5973\u97f3\n- \u66f4\u591a\u97f3\u8272\uff1a\u67e5\u9605 MiniMax API \u6587\u6863\n\n\u3010\u97f3\u9891\u683c\u5f0f\u3011\n\u8f93\u51fa MP3\uff0c32000Hz \u91c7\u6837\u7387\uff0c\u9002\u5408\u77ed\u89c6\u9891\u4f7f\u7528\n\n\u3010\u8fd4\u56de\u6570\u636e\u3011\n\u97f3\u9891\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u5b58\u50a8\u5728 binary.audio \u5b57\u6bb5",
      "position": [
        2368,
        1328
      ],
      "parameters": {
        "url": "={{ 'https://api.minimaxi.com/v1/t2a_v2?GroupId=' + $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.minimaxGroupId }}",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "audio"
            }
          }
        },
        "jsonBody": "={{ {\n  \"model\": \"speech-02-hd\",\n  \"text\": $('DeepSeek\u751f\u6210\u89c6\u9891\u811a\u672c').first().json.choices[0].message.content,\n  \"stream\": false,\n  \"voice_setting\": {\n    \"voice_id\": $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.minimaxVoiceId,\n    \"speed\": 1.0,\n    \"vol\": 1.0,\n    \"pitch\": 0\n  },\n  \"audio_setting\": {\n    \"sample_rate\": 32000,\n    \"bitrate\": 128000,\n    \"format\": \"mp3\",\n    \"channel\": 1\n  }\n} }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.minimaxApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "dce5d49e-4ae2-4e53-9d63-14158ce66569",
      "name": "\u8f6c\u6362\u97f3\u9891\u683c\u5f0f",
      "type": "n8n-nodes-base.code",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u5c06\u97f3\u9891\u6587\u4ef6\u7684 MIME \u7c7b\u578b\u548c\u6587\u4ef6\u6269\u5c55\u540d\u7edf\u4e00\u4e3a .mp3 \u683c\u5f0f\u3002\n\n\u3010\u4e3a\u4ec0\u4e48\u9700\u8981\u8fd9\u4e2a\u6b65\u9aa4\uff1f\u3011\n\u67d0\u4e9b\u60c5\u51b5\u4e0b API \u8fd4\u56de\u7684\u97f3\u9891\u6587\u4ef6\u867d\u7136\u662f MP3 \u683c\u5f0f\uff0c\u4f46 MIME \u7c7b\u578b\u88ab\u6807\u8bb0\u4e3a audio/mpga\u3002\ntmpfiles.org \u4e0a\u4f20\u65f6\u4f9d\u8d56\u6b63\u786e\u7684 MIME \u7c7b\u578b\uff0c\u9519\u8bef\u7684\u7c7b\u578b\u53ef\u80fd\u5bfc\u81f4\u540e\u7eed FAL.ai \u65e0\u6cd5\u8bc6\u522b\u97f3\u9891\u3002\n\n\u3010\u64cd\u4f5c\u3011\n- \u91cd\u547d\u540d binary.audio \u2192 binary.audio_mp3\n- \u5f3a\u5236\u8bbe\u7f6e mimeType \u4e3a audio/mpeg\n- \u5f3a\u5236\u4fee\u6b63\u6587\u4ef6\u6269\u5c55\u540d\u4e3a .mp3\n\n\u3010\u4e0d\u5f71\u54cd\u539f\u59cb\u6570\u636e\u3011\n\u539f\u59cb binary.audio \u4fdd\u7559\uff0c\u65b0\u589e audio_mp3 \u5c5e\u6027",
      "position": [
        2560,
        1328
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const b = item.binary?.audio;\n  if (!b) return item;\n  item.binary.audio_mp3 = {\n    ...b,\n    fileName: (b.fileName || 'audio.mp3').replace(/\\.mpga$/i, '.mp3'),\n    mimeType: 'audio/mpeg'\n  };\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "c24b80c3-c410-449e-a900-0b732308956f",
      "name": "\u4e0a\u4f20\u97f3\u9891\u5230\u516c\u5f00URL",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u5c06 MiniMax \u5408\u6210\u7684\u97f3\u9891\u4e0a\u4f20\u5230 tmpfiles.org\uff0c\u83b7\u5f97\u516c\u5f00URL\u3002\nFAL.ai \u9700\u8981\u901a\u8fc7\u516c\u7f51URL\u8bbf\u95ee\u97f3\u9891\u6587\u4ef6\u3002\n\n\u3010\u8f93\u5165\u3011\nbinary.audio_mp3\uff08\u7531\u4e0a\u4e00\u4e2a\u300c\u8f6c\u6362\u97f3\u9891\u683c\u5f0f\u300d\u8282\u70b9\u521b\u5efa\uff09\n\n\u3010\u8f93\u51fa\u3011\n{ status: 'success', data: { url: 'http://tmpfiles.org/123/audio.mp3' } }\n\n\u3010URL\u683c\u5f0f\u8f6c\u6362\u8bf4\u660e\u3011\n\u548c\u56fe\u7247URL\u4e00\u6837\uff0c\u9700\u8981\u5c06\uff1a\nhttp://tmpfiles.org/ID/file.mp3\n\u8f6c\u6362\u4e3a\uff1a\nhttps://tmpfiles.org/dl/ID/file.mp3\n\n\u8fd9\u4e2a\u8f6c\u6362\u5728\u4e0b\u4e00\u4e2a\u300cFAL.ai\u89c6\u9891\u751f\u6210\u300d\u8282\u70b9\u4e2d\u81ea\u52a8\u5b8c\u6210",
      "position": [
        2768,
        1328
      ],
      "parameters": {
        "url": "https://tmpfiles.org/api/v1/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "audio_mp3"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9231440c-d513-4823-9a15-3852e810a39e",
      "name": "FAL.ai VEED\u89c6\u9891\u751f\u6210",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u8c03\u7528 FAL.ai \u7684 VEED Fabric 1.0 \u6a21\u578b\uff0c\u5c06\u9759\u6001\u56fe\u7247+\u97f3\u9891\u5408\u6210\u4e3a\u300c\u4eba\u7269\u8bf4\u8bdd\u300d\u89c6\u9891\u3002\n\n\u3010VEED Fabric 1.0 \u80fd\u529b\u3011\n- \u8f93\u5165\uff1a\u4e00\u5f20\u4eba\u7269/\u5934\u50cf\u56fe\u7247 + \u4e00\u6bb5\u97f3\u9891\n- \u8f93\u51fa\uff1a\u4eba\u7269\u5634\u5507\u4e0e\u97f3\u9891\u540c\u6b65\u7684\u89c6\u9891\uff08Lip Sync\uff09\n- \u6548\u679c\uff1a\u56fe\u7247\u4e2d\u7684\u4eba\u7269\u300c\u8bf4\u51fa\u300d\u4e86\u4f60\u7684\u811a\u672c\u5185\u5bb9\n\n\u3010URL\u683c\u5f0f\u81ea\u52a8\u8f6c\u6362\u3011\n\u8282\u70b9\u4e2d\u7684 .replace() \u6b63\u5219\u8868\u8fbe\u5f0f\u4f1a\u81ea\u52a8\u5c06 tmpfiles.org \u7684URL\n\u4ece http://tmpfiles.org/ID/file \u8f6c\u6362\u4e3a https://tmpfiles.org/dl/ID/file\n\u8fd9\u662f FAL.ai \u80fd\u8bbf\u95ee\u7684\u683c\u5f0f\u3002\n\n\u3010\u5206\u8fa8\u7387\u9009\u9879\u3011\n- 480p\uff1a\u6807\u51c6\u8d28\u91cf\uff0c\u751f\u6210\u901f\u5ea6\u5feb\uff08\u63a8\u8350\u6d4b\u8bd5\u65f6\u4f7f\u7528\uff09\n- 720p\uff1a\u9ad8\u6e05\uff0c\u751f\u6210\u65f6\u95f4\u8f83\u957f\n\n\u3010\u8fd4\u56de\u6570\u636e\u3011\n{ request_id: 'xxx' }\uff08\u5f02\u6b65\u4efb\u52a1ID\uff09\n\u9700\u8981\u7b49\u5f85 10 \u5206\u949f\u540e\u901a\u8fc7 request_id \u67e5\u8be2\u7ed3\u679c\n\n\u3010\u7b49\u5f85\u8282\u70b9\u3011\n\u4e0b\u4e00\u4e2a\u300c\u7b49\u5f85\u89c6\u9891\u6e32\u67d3\u300d\u8282\u70b9\u4f1a\u7b49\u5f85 10 \u5206\u949f",
      "position": [
        2960,
        1328
      ],
      "parameters": {
        "url": "https://queue.fal.run/veed/fabric-1.0",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ { \n  \"image_url\": $('\u4e0a\u4f20\u56fe\u7247\u5230\u516c\u5f00URL').first().json.data.url.replace(/^http:\\/\\/tmpfiles\\.org\\/(\\d+)\\/(.*)$/i, 'https://tmpfiles.org/dl/$1/$2'), \n  \"audio_url\": $json.data.url.replace(/^http:\\/\\/tmpfiles\\.org\\/(\\d+)\\/(.*)$/i, 'https://tmpfiles.org/dl/$1/$2'), \n  \"resolution\": \"480p\" \n} }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.falApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "62bfa4ad-5666-400c-a962-096f91dfd508",
      "name": "\u7b49\u5f85\u89c6\u9891\u6e32\u67d3\uff0810\u5206\u949f\uff09",
      "type": "n8n-nodes-base.wait",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u7b49\u5f85 FAL.ai VEED \u5b8c\u6210\u89c6\u9891\u6e32\u67d3\u3002\n\n\u3010\u4e3a\u4ec0\u4e48\u8981\u7b49\u5f85\uff1f\u3011\nFAL.ai \u89c6\u9891\u751f\u6210\u662f\u5f02\u6b65\u4efb\u52a1\uff1a\n1. \u63d0\u4ea4\u4efb\u52a1 \u2192 \u7acb\u523b\u8fd4\u56de request_id\n2. \u670d\u52a1\u5668\u540e\u53f0\u6e32\u67d3\u89c6\u9891\uff08\u9700\u8981\u65f6\u95f4\uff09\n3. \u6e32\u67d3\u5b8c\u6210\u540e \u2192 \u53ef\u4ee5\u901a\u8fc7 request_id \u83b7\u53d6\u89c6\u9891URL\n\n\u3010\u7b49\u5f85\u65f6\u95f4\u8bf4\u660e\u3011\n- 480p \u89c6\u9891\uff1a\u901a\u5e38 3-7 \u5206\u949f\n- 720p \u89c6\u9891\uff1a\u901a\u5e38 8-15 \u5206\u949f\n- \u7b49\u5f8510\u5206\u949f\u662f\u4fdd\u5b88\u4f30\u8ba1\uff0c\u4fdd\u8bc1\u6e32\u67d3\u5b8c\u6210\n\n\u3010\u8fdb\u9636\u4f18\u5316\u5efa\u8bae\u3011\n\u5982\u679c\u4f60\u719f\u6089 N8N\uff0c\u53ef\u4ee5\u5c06\u56fa\u5b9a\u7b49\u5f85\u6539\u4e3a\u300c\u8f6e\u8be2\u5faa\u73af\u300d\uff1a\n\u6bcf30\u79d2\u67e5\u8be2\u4e00\u6b21\u72b6\u6001\uff0cstatus=COMPLETED \u65f6\u7acb\u523b\u7ee7\u7eed\uff0c\n\u8fd9\u6837\u5e73\u5747\u7b49\u5f85\u65f6\u95f4\u53ef\u4ee5\u7f29\u77ed\u5230 3-4 \u5206\u949f\u3002",
      "position": [
        3168,
        1328
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "ed200992-19e8-412d-a6b3-1855015cd6f6",
      "name": "\u83b7\u53d6VEED\u89c6\u9891\u7ed3\u679c",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u901a\u8fc7 request_id \u67e5\u8be2 FAL.ai \u4efb\u52a1\u7ed3\u679c\uff0c\u83b7\u53d6\u89c6\u9891\u4e0b\u8f7dURL\u3002\n\n\u3010\u67e5\u8be2\u63a5\u53e3\u3011\nGET https://queue.fal.run/veed/fabric-1.0/requests/{request_id}\n\n\u3010\u8fd4\u56de\u6570\u636e\u7ed3\u6784\u3011\n{\n  status: 'COMPLETED',\n  video: {\n    url: 'https://...',     \u2190 \u89c6\u9891URL\uff08\u8fd9\u4e2a\u5b57\u6bb5\u5f88\u91cd\u8981\uff01\uff09\n    content_type: 'video/mp4',\n    file_name: 'output.mp4',\n    file_size: 1234567\n  }\n}\n\n\u3010\u4f7f\u7528\u8def\u5f84\u3011\n$json.video.url \u2192 \u89c6\u9891\u4e0b\u8f7d\u5730\u5740\n\n\u3010\u5982\u679cstatus\u4e0d\u662fCOMPLETED\u3011\n\u8bf4\u660e\u7b49\u5f85\u65f6\u95f4\u4e0d\u591f\uff0c\u53ef\u4ee5\u5c06\u300c\u7b49\u5f85\u89c6\u9891\u6e32\u67d3\u300d\u8282\u70b9\u7684\u65f6\u95f4\u6539\u4e3a 15 \u5206\u949f",
      "position": [
        3360,
        1328
      ],
      "parameters": {
        "url": "={{ 'https://queue.fal.run/veed/fabric-1.0/requests/' + $('FAL.ai VEED\u89c6\u9891\u751f\u6210').first().json.request_id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.falApiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b78831de-c3cc-46b8-9b48-af94e38a8017",
      "name": "DeepSeek\u751f\u6210\u53d1\u5e03\u6587\u6848",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u751f\u6210\u793e\u4ea4\u5a92\u4f53\u53d1\u5e03\u6587\u6848\u548c\u8bdd\u9898\u6807\u7b7e\u3002\n\n\u3010\u6587\u6848\u7ed3\u6784\u8bbe\u8ba1\u3011\n1. \u94a9\u5b50\u53e5\uff08\u5f15\u53d1\u597d\u5947/\u5171\u9e23/\u60ca\u8bb6\uff09\n2. \u6838\u5fc3\u5185\u5bb9\uff08\u7b80\u77ed\u3001\u6709\u4ef7\u503c\uff09\n3. \u8bdd\u9898\u6807\u7b7e\uff08\u7b97\u6cd5\u63a8\u8350\u5173\u952e\uff09\n\n\u3010\u6807\u7b7e\u7b56\u7565\u8bf4\u660e\u3011\n- \u5927\u4f17\u6807\u7b7e\uff08\u5982 #\u751f\u6d3b #\u5e72\u8d27\uff09\uff1a\u8986\u76d6\u5e7f\u6cdb\u7528\u6237\n- \u5782\u76f4\u6807\u7b7e\uff08\u5982 #\u5065\u8eab\u6559\u7a0b #\u51cf\u8102\u98df\u8c31\uff09\uff1a\u7cbe\u51c6\u89e6\u8fbe\u76ee\u6807\u7528\u6237\n- \u70ed\u95e8\u8bdd\u9898\uff08\u5f53\u524d\u6d41\u884c\u7684\u8bdd\u9898\u6311\u6218\uff09\uff1a\u501f\u52a9\u6d41\u91cf\n\n\u3010\u8f93\u51fa\u6570\u636e\u8def\u5f84\u3011\n$json.choices[0].message.content \u2192 \u6587\u6848+\u6807\u7b7e\u6587\u5b57\n\n\u3010\u540e\u7eed\u4f7f\u7528\u3011\n\u6587\u6848\u4f1a\u4fdd\u5b58\u5230 Google Sheets\uff0c\u5e76\u7528\u4e8e Blotato \u5404\u5e73\u53f0\u53d1\u5e03",
      "position": [
        3568,
        1328
      ],
      "parameters": {
        "url": "https://api.deepseek.com/v1/chat/completions",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "jsonBody": "={{ {\n  \"model\": $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.deepseekModel,\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"\u4f60\u662f\u4e00\u4f4d\u4e13\u4e1a\u7684\u77ed\u89c6\u9891\u8fd0\u8425\u4e13\u5bb6\uff0c\u64c5\u957f\u521b\u4f5c\u9ad8\u8f6c\u5316\u7387\u7684\u89c6\u9891\u6587\u6848\u548c\u8bdd\u9898\u6807\u7b7e\u3002\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"\u4e3a\u4e3b\u9898\u3010\" + $('\u63d0\u53d6\u98de\u4e66\u56fe\u7247\u548c\u4e3b\u9898').first().json.theme + \"\u3011\u521b\u4f5c\u77ed\u89c6\u9891\u53d1\u5e03\u6587\u6848\u3002\\n\\n\u53c2\u8003\u70ed\u70b9\u8d8b\u52bf\uff1a\" + $('DeepSeek\u641c\u7d22\u70ed\u70b9\u8d8b\u52bf').first().json.choices[0].message.content + \"\\n\\n\u8981\u6c42\uff1a\\n1. \u7b2c\u4e00\u53e5\u8bdd\u662f\u5f3a\u529b\u94a9\u5b50\uff08\u5f15\u53d1\u597d\u5947\u6216\u5171\u9e23\uff09\\n2. \u7b80\u77ed\u6709\u529b\uff0c\u4e0d\u8d85\u8fc7100\u5b57\\n3. \u7ed3\u5c3e\u52a05-8\u4e2a\u76f8\u5173\u8bdd\u9898\u6807\u7b7e\uff08#\u5f00\u5934\uff09\\n4. \u6807\u7b7e\u8981\u6709\u5927\u4f17\u6807\u7b7e+\u5782\u76f4\u6807\u7b7e+\u70ed\u95e8\u8bdd\u9898\u7684\u7ec4\u5408\\n5. \u53ea\u8f93\u51fa\u6587\u6848\u6b63\u6587+\u6807\u7b7e\uff0c\u4e0d\u8981\u5176\u4ed6\u5185\u5bb9\"\n    }\n  ],\n  \"max_tokens\": 400,\n  \"temperature\": 0.75\n} }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $('\u5de5\u4f5c\u6d41\u914d\u7f6e\uff08\u586b\u5165\u4f60\u7684API Key\uff09').first().json.deepseekApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3d08671c-9a95-417f-be95-4c1a45118637",
      "name": "\u4fdd\u5b58\u8bb0\u5f55\u5230Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "=== \u8282\u70b9\u8bf4\u660e ===\n\n\u5c06\u672c\u6b21\u5185\u5bb9\u521b\u4f5c\u7684\u6240\u6709\u8bb0\u5f55\u4fdd\u5b58\u5230 Google Sheets\u3002\n\n\u3010\u914d\u7f6e\u6b65\u9aa4\u3011\n1. \u5728 N8N \u4e2d\u6dfb\u52a0 Google Sheets OAuth2 \u51ed\u636e\n   - \u524d\u5f80 https://console.cloud.google.com\n   - \u521b\u5efa\u9879\u76ee \u2192 \u542f\u7528 Google Sheets API\n   - \u521b\u5efa OAuth 2.0 \u5ba2\u6237\u7aef ID\n   - \u5728 N8N Credentials \u4e2d\u5b8c\u6210\u6388\u6743\n2. \u521b\u5efa Google Sheets \u6587\u4ef6\uff0c\u5305\u542b\u4ee5\u4e0b\u5217\uff1a\n   IDEA | URL IMAGE | URL AUDIO | URL VIDEO | CAPTION | STATUS\n3. \u590d\u5236\u6587\u4ef6 ID\uff08URL \u4e2d /d/ \u540e\u9762\u7684\u90e8\u5206\uff09\n4. \u586b\u5165\u4e0a\u65b9\u7684 YOUR_GOOGLE_SHEETS_DOC_ID\n\n\u3010\u8bb0\u5f55\u5185\u5bb9\u3011\n- IDEA\uff1a\u89c6\u9891\u4e3b\u9898\uff08\u4ece\u98de\u4e66\u6d88\u606f\u83b7\u53d6\uff09\n- URL IMAGE\uff1a\u539f\u59cb\u56fe\u7247URL\n- URL AUDIO\uff1a\u5408\u6210\u97f3\u9891URL\n- URL VIDEO\uff1a\u6700\u7ec8\u89c6\u9891URL\n- CAPTION\uff1a\u53d1\u5e03\u6587\u6848\n- STATUS\uff1a\u521d\u59cb\u4e3a\u7a7a\uff0c\u53d1\u5e03\u6210\u529f\u540e\u66f4\u65b0\u4e3a DONE",
      "position": [
        3760,
        1328
      ],
      "parameters": {
        "columns": {
          "value": {
            "IDEA": "={{ $('\u63d0\u53d6\u98de\u4e66\u56fe\u7247\u548c\u4e3b\u9898').first().json.theme }}",
            "CAPTION": "={{ $json.choices[0].message.content }}",
            "URL AUDIO": "={{ $('\u4e0a\u4f20\u97f3\u9891\u5230\u516c\u5f00URL').first().json.data.url }}",
            "URL IMAGE": "={{ $('\u4e0a\u4f20\u56fe\u7247\u5230\u516c\u5f00URL').first().json.data.url }}",
            "URL VIDEO": "={{ $('\u83b7\u53d6VEED\u89c6\u9891\u7ed3\u679c').first().json.video.url }}"
          },
          "schema": [
            {
              "id": "IDEA",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "IDEA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL IMAGE",
              "de
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow triggers from a Feishu bot message containing an image and topic, uses DeepSeek to generate trends, a script, captions, and a quality check, clones voice with MiniMax, creates a lip-sync video via FAL.ai/VEED, logs results to Google Sheets, and publishes to…

Source: https://n8n.io/workflows/17994/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

Resume Screening & Behavioral Interviews with Gemini, Elevenlabs, & Notion ATS copy. Uses googleDrive, httpRequest, notion, formTrigger. Webhook trigger; 67 nodes.

Google Drive, HTTP Request, Notion +3
Data & Sheets

[SANTOBET] FLUXO TODO - BACKUP. Uses googleSheets, httpRequest, googleSheetsTrigger. Webhook trigger; 57 nodes.

Google Sheets, HTTP Request, Google Sheets Trigger
Data & Sheets

This workflow sends post-purchase review request emails for WooCommerce orders, stores expiring form links in Google Sheets, optionally shortens links with Dub.co and delays delivery, serves a hosted

HTTP Request, Google Sheets, Email Send
Data & Sheets

FLUXO DISPARO DATA E HORA. Uses itemLists, googleSheets, httpRequest. Webhook trigger; 48 nodes.

Item Lists, Google Sheets, HTTP Request
Data & Sheets

📄 Documentation: Notion Guide

Google Sheets, Google Drive, HTTP Request +2