8
n8n 中文网amn8n.com

生成个性化利益相关者邮件

高级

这是一个Lead Nurturing, Multimodal AI领域的自动化工作流,包含 29 个节点。主要使用 If, Set, Wait, Merge, HttpRequest 等节点。 使用MadKudu研究和OpenAI为Outreach.io序列生成个性化销售邮件

前置要求
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "BNhNtHSWOsHCg2jc",
  "meta": {
    "instanceId": "f6f8c184929a9f843505f5273ebb41a7a951a35345a1095a4acc1d4034a73fa3",
    "templateCredsSetupCompleted": true
  },
  "name": "Generate personalized email to stakeholder",
  "tags": [
    {
      "id": "2pQ1OehmIpWfWEvH",
      "name": "Outreach",
      "createdAt": "2025-08-04T14:35:26.193Z",
      "updatedAt": "2025-08-04T14:35:26.193Z"
    },
    {
      "id": "Iv0SXatU8OaCaiVG",
      "name": "MadKudu",
      "createdAt": "2025-08-04T14:35:26.127Z",
      "updatedAt": "2025-08-04T14:35:26.127Z"
    },
    {
      "id": "cmrfhqtgzQg6vAxg",
      "name": "Sales Automation",
      "createdAt": "2025-08-04T14:35:26.150Z",
      "updatedAt": "2025-08-04T14:35:26.150Z"
    }
  ],
  "nodes": [
    {
      "id": "84da9889-f705-433e-b28a-118a3264e8b9",
      "name": "Contact Exists?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1072,
        128
      ],
      "parameters": {
        "options": {
          "looseTypeValidation": false
        },
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "698f94db-5a42-40f1-95a8-62e0313d4ac3",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $('Outreach: Check Existing Contact').item.json.data.length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0fdfad14-da79-4edc-a9a9-fe3539c8ff13",
      "name": "Update Existing Prospect",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -864,
        16
      ],
      "parameters": {
        "url": "=https://api.outreach.io/api/v2/prospects/\n{{ $('Outreach: Check Existing Contact').item.json.data[0].id }}",
        "body": "={   \"data\": {           \n       \"type\": \"prospect\",            \n       \"id\": {{ $('Outreach: Check Existing Contact').item.json.data[0].id }},            \n       \"attributes\": {                   \n            \"custom49\":  \"{{ $('Generate outreach email').item.json.output.email_draft[0].email }}\"      \n         }       \n    }  \n}\n",
        "method": "PATCH",
        "options": {},
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "JSON",
        "genericAuthType": "oAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "gAB98EPB6jiVxFqm",
          "name": "Outreach Oauth"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "31b4c4f3-9957-4507-9099-e993bee42cc7",
      "name": "MadKudu MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        -1888,
        320
      ],
      "parameters": {
        "sseEndpoint": "=https://mcp.madkudu.com/{{$vars.madkudu_api_key}}/sse"
      },
      "typeVersion": 1
    },
    {
      "id": "3dbe7740-8d9a-4818-80af-b8dfbd21c08c",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -2992,
        128
      ],
      "webhookId": "02f79ab0-0f4f-4823-be24-066223e96e2c",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "a8c4a7e7-192b-4966-98e0-5bf3a11420e6",
      "name": "Outreach: Create New Prospect",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -880,
        224
      ],
      "parameters": {
        "url": "https://api.outreach.io/api/v2/prospects",
        "body": "={   \"data\": {                  \n        \"type\": \"prospect\",             \n        \"attributes\": {                 \n               \"custom49\": \"{{ $('Generate outreach email').item.json.output.email_draft[0].email }}\", \n               \"emails\": [\"{{ $('When chat message received').item.json.chatInput }}\"] \n      }            \n   }   \n\n}",
        "method": "POST",
        "options": {
          "response": {
            "response": {}
          }
        },
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "JSON",
        "genericAuthType": "oAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "gAB98EPB6jiVxFqm",
          "name": "Outreach Oauth"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "42e166fe-7b97-4ccd-bbac-18cb48a26f4f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 752,
        "height": 688,
        "content": "## 4. Sync personalized Email to Outreach.io \n- If prospect already exists, update custom field on prospect with email\n- If prospect does not exists, create prospect with custom field \n\n### Configuration Required\nEdit the custom field ID (custom49) in the JSON Body!"
      },
      "typeVersion": 1
    },
    {
      "id": "9a03611d-d1aa-425b-be6f-0433f9235fd0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 1552,
        "height": 656,
        "content": "## 5. Add prospect to Outreach.io Sequence\nAutomatically enrolls the prospect in your email sequence.\n\n### Configuration Required\n- Update Outreach Mailbox ID\n- Update Sequence ID\n\nThe workflow waits 30 seconds then verifies successful enrollment."
      },
      "typeVersion": 1
    },
    {
      "id": "b35c6cfb-6ca5-47c2-9fe7-6a5d61871172",
      "name": "Generate outreach email",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1872,
        128
      ],
      "parameters": {
        "text": "=## Context\nYou are a sales development rep at {{ $vars.my_company_domain }} reaching out to {{ $('Information Extractor').item.json.output.email }}\nYou have likely not interacted with this person before.\n\nThe goal is to generate a personlized email based on all the information you have about them and the value prop of your company.\n\n## Research\nStart by completing ALL the required research steps below to find the 5 most interesting angle to use to reach out to them:\n1. **Account Details**: Includes company insights (e.g., hiring, partnerships, technology stack, sales motion, risk). Use madkudu-account-details to understand company use, top users, tech stack, and signals.\n2. **Research Account**: Get {{ $json.output }}\n3. **Top Users in the Account**: Use madkudu-top-persons to find the most active contacts from this person's account. It can be helpful to name drop top users especially if they are in the same part of the org.\n4. **Contact Details**: Includes contact role, persona, email, and Salesforce ID. Use madkudu-contact-details to understand the person's role, persona, and engagement.\n5. **Contact Web Search**: Search the web for any relevant activity by this contact to understand what this person is interested in, what they care about... This can be very helpful to build some rapport. You can do this by searching \"FirstName LastName Company\".\n6. **Contact Picture Web Search**: look for the person's linkedin profile picture, background picture, or other public pictures which might give a hint to their interests and provide us with a personal angle.\n\nMake sure to do all of these steps in the research.\n\n## Instructions:\n1. Perform the thorough research as described above.\n2. Find 5 different angles to justify reaching out based on how relevant they are to MadKudu + their company, their role, your shared personal interests, their personal interests... Stack rank them accordingly\n3. Extract contextual personalization from the research for each of the 5 angles.\n4. Select the best email to send (only 1)\n4. Output a JSON with \n- the email draft \n- the angle chosen to draft it\n- the reasoning behind this angle\n\n## Additional Information:\nuse madkudu-value-prop to get the value prop for my company {{ $vars.my_company_domain }} \n\n## Guidelines:\n- Avoid referencing specific activity counts (e.g., don't say \"you clicked 87 times\").\n- Sound human and not creepy — your purpose is to be helpful.\nTone professional, helpful, and neutral tone. Avoid using excessive praise, flattery, or overly enthusiastic language.\n- Refer to engagement behaviors (e.g., \"you've been actively leveraging alerts\") and connect them to their role's likely goals (e.g., efficiency, alignment, GTM execution).\n- If lacking behavioral insight, use company-level context (e.g., hiring, funding, GTM motion) to form a relevant angle.\n- Always acknowledge existing context from past email exchanges to maintain continuity in the conversation.\n- Avoid sycophancy to sound human, avoid sounding like a chatbot (e.g., NEVER say things like \"I was impressed by your journey\")\nAngles:\n- Below is a stack rank of the most interesting angles to use when they are found. This is primarily for illustration purposes and is not an exhaustive:\n- Shared personal interest (e.g., fly fishing, sailing...)\n- Major company news (e.g., IPO, fundraise, new exec team...)\n- Product usage within their team (e.g., telling a VP of commercials sales that 10 of their commercial AEs are seeing success with the tool...)",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "82f46bf8-1230-4acd-994c-08b812e836cd",
      "name": "OpenAI Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2256,
        336
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "nJrpiWkAq0XpzRBc",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "437c21c4-2b08-4ad1-8d67-f8cb6165faa4",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1680,
        304
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"email_draft\": [\n    {\n      \"angle\": \"Aligning with Sales Efficiency as Director of Sales\",\n      \"email\": \"Hi Christopher,\\n\\nI understand that as Director of Sales at Kit.com, you are deeply involved in driving sales efficiency and conversion. Given Kit.com's focus on scaling creator audience growth and sales, MadKudu's AI-powered lead scoring could significantly help your team identify warm, ready-to-engage prospects, improving your conversion rates and overall sales effectiveness. I'd love to share some insights on how we can support your goals with tailored lead scoring and sales optimization.\\n\\nBest regards,\\n[Your Name]\"\n    },\n    {\n      \"angle\": \"Supporting Marketing Operations Optimization\",\n      \"email\": \"Hi Christopher,\\n\\nWith Kit.com actively evolving and hiring in marketing, I wanted to highlight how our marketing operations platform can help optimize your campaigns through advanced lead scoring, attribute mapping, and account enrichment. This could enhance lead quality and marketing efficiency as Kit.com expands its creator economy offerings and email-driven marketing solutions. Let me know if you're open to a conversation.\\n\\nBest,\\n[Your Name]\"\n    },\n    {\n      \"angle\": \"Enhancing Data-Driven Decision-Making for Revenue Operations\",\n      \"email\": \"Hello Christopher,\\n\\nAs Kit.com continues its strategic expansion with a focus on data and audience growth, MadKudu's CRM integration, attribute mapping, and account enrichment tools offer robust support for reliable lead-to-account linking and data-driven decision-making. This can help streamline operational efficiency during your current growth phase. I’d be happy to explore how this aligns with your revenue operations needs.\\n\\nRegards,\\n[Your Name]\"\n    },\n    {\n      \"angle\": \"Seamless Integration for Technical Teams\",\n      \"email\": \"Hi Christopher,\\n\\nConsidering Kit.com's emphasis on marketing automation and the adoption of scalable tools, MadKudu provides APIs and SDKs that enable seamless integration of lead scoring and enrichment into your existing workflows. This could empower your technical teams to enhance automation and data integration efforts efficiently. If you'd like, I can share more details.\\n\\nBest wishes,\\n[Your Name]\"\n    },\n    {\n      \"angle\": \"Leverage Sales Intelligence Insights\",\n      \"email\": \"Hi Christopher,\\n\\nI noticed Kit.com’s sales team is actively engaging with sales intelligence tools recently, reflecting a strong interest in leveraging data for sales performance. MadKudu’s AI-driven lead scoring and enrichment could complement these efforts by providing actionable insights to boost your sales pipeline quality and conversion. Let me know if you’re interested in discussing this further.\\n\\nThanks,\\n[Your Name]\"\n    }\n  ],\n  \"reason_for_selection\": \"The email angles were selected based on Christopher Amrod's role as Director of Sales at Kit.com and the current company context of rapid growth, marketing evolution, and sales intelligence engagement. They target key operational and strategic priorities relevant to his position and Kit.com's business model—such as driving sales efficiency, marketing optimization, data-driven decision-making, and technical integration. Each email is personalized around MadKudu's value propositions that align with Kit.com's needs and recent activity, aiming to present a helpful, relevant conversation starter that respects the context without overreaching.\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "2306c950-86df-4f0e-9678-7a26e7a23333",
      "name": "MadKudu: Generate Account Brief",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2304,
        128
      ],
      "parameters": {
        "text": "=Use madkudu-account-brief-instructions with the domain of {{ $json.output.email }} to generate an account brief for this company.",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2.1
    },
    {
      "id": "1d4d60e4-ab2d-4c3c-babb-33b1faa03dae",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2416,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 688,
        "content": "## 2.Generate Account Brief with [MadKudu MCP](developers.madkudu.com)\nThis step uses MadKudu MCP + OpenAI to auto-research the prospect's company.\nThrough MadKudu MCP, the agent researches recent company news, CRM data, engaged contacts, job openings and converts it into an account brief with: Intro, Why, Why now, Why us, Risks. \nThis brief is used to understand the angle for the email and personalize it "
      },
      "typeVersion": 1
    },
    {
      "id": "f26d464a-689d-4ef4-af83-efe3039a6a7e",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1936,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 384,
        "height": 688,
        "content": "## 3. Generate Personalized email \nThe agent gets more information about the company and person with MadKudu MCP, then creates 5 different email approaches and selects the best one.\nAngles include: shared interests, company news, product usage, industry trends, and mutual connections"
      },
      "typeVersion": 1
    },
    {
      "id": "ddd4e3bc-ad23-4aca-9f7a-8710d66e75f0",
      "name": "Outreach: Check Existing Contact",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1472,
        128
      ],
      "parameters": {
        "url": "=https://api.outreach.io/api/v2/prospects?filter[emails]={{ $('When chat message received').item.json.chatInput }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "oAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "gAB98EPB6jiVxFqm",
          "name": "Outreach Oauth"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "becc6aee-193e-4bfe-babc-313d9fe7371a",
      "name": "Set Outreach Mailbox and Sequence",
      "type": "n8n-nodes-base.set",
      "position": [
        -1280,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ab1291d4-d468-4050-bb73-cfb7180e571d",
              "name": "Outreach Mailbox ID to use",
              "type": "number",
              "value": 51
            },
            {
              "id": "3c31ba23-b3ec-41ea-b8b7-f8be3ec5402f",
              "name": "Outreach Sequence ID to use",
              "type": "number",
              "value": 781
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3d668188-c094-41dd-a62d-62f448cb7105",
      "name": "Outreach: Get confirmation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        160,
        128
      ],
      "parameters": {
        "url": "=https://api.outreach.io/api/v2/batches/{{ $json.data.parseJson().data.id }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "oAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "gAB98EPB6jiVxFqm",
          "name": "Outreach Oauth"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e550e162-ed98-481b-ad1e-fca252cedced",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        592,
        128
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "17b67959-895c-4745-9d68-2a3dfee23c45",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.attributes.state }}",
              "rightValue": "finished"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "768762cb-66f1-48c8-8d2e-915c7a10fa0c",
      "name": "Outreach Submit batch Add to Sequence",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -256,
        128
      ],
      "parameters": {
        "url": "=https://api.outreach.io/api/v2/batches/actions/prospectsAddToSequence",
        "body": "={ \n   \"data\": { \n    \"type\": \"sequence\",\n     \"attributes\": { \n        \"ids\": [{{ $json['Outreach Prospect ID'] }}], \n        \"mailboxId\": {{ $('Set Outreach Mailbox and Sequence').item.json['Outreach Mailbox ID to use'] }}, \n        \"sequenceId\": {{ $('Set Outreach Mailbox and Sequence').item.json['Outreach Sequence ID to use'] }}\n     } \n   }\n}",
        "method": "POST",
        "options": {
          "response": {
            "response": {}
          }
        },
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "JSON",
        "genericAuthType": "oAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "gAB98EPB6jiVxFqm",
          "name": "Outreach Oauth"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "3c5278b5-8a52-43f9-a7a0-3ea391c54fa7",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        -48,
        128
      ],
      "webhookId": "ecb1a6c4-5e67-4403-8838-80895c117a9a",
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "eed28ca0-ad6a-4642-94c5-d896daf1d573",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        848,
        112
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ad585460-31cd-4c42-8124-2a2548f7eaad",
      "name": "Information Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        -2752,
        128
      ],
      "parameters": {
        "text": "=  {{ $json.chatInput }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "email",
              "required": true,
              "description": "person's email"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fefca51d-10d2-4ead-bb51-4829552af17b",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2752,
        272
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "nJrpiWkAq0XpzRBc",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e4a3f69c-02ce-43ef-90a1-d86d67b56ab0",
      "name": "Set Contact ID",
      "type": "n8n-nodes-base.set",
      "position": [
        -672,
        16
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e13d30da-2bfd-4397-9941-c81d7c2881a7",
              "name": "Outreach Prospect ID",
              "type": "string",
              "value": "={{ $json.data.parseJson().data.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "693486a8-99b4-4628-bdfa-a0d6be8d1fb2",
      "name": "Set Contact ID1",
      "type": "n8n-nodes-base.set",
      "position": [
        -672,
        224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1d59bf74-26bc-4439-b6e1-c151f3a15424",
              "name": "Outreach Prospect ID",
              "type": "string",
              "value": "={{ $json.data.parseJson().data.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "eccf09e5-27d5-41e7-8ed1-85080a952d20",
      "name": "Merge Outreach Prospect ID",
      "type": "n8n-nodes-base.merge",
      "position": [
        -480,
        128
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "68f1892d-0fd5-4a54-b7dd-c8e79dbf12e2",
      "name": "Outreach: Get confirmation1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        368,
        128
      ],
      "parameters": {
        "url": "=https://api.outreach.io/api/v2/prospects/{{ $('Merge Outreach Prospect ID').item.json['Outreach Prospect ID'] }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "oAuth2Api"
      },
      "credentials": {
        "oAuth2Api": {
          "id": "gAB98EPB6jiVxFqm",
          "name": "Outreach Oauth"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "746bf7d5-5f84-4e5d-8575-16b8039e6b8e",
      "name": "Workflow Start Guide",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2960,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 512,
        "height": 688,
        "content": "## 1. Input Person's Email Address\nEnter a prospect's email address via chat trigger.\nExample: john@company.com\n\nThe workflow extracts and validates the email format before proceeding."
      },
      "typeVersion": 1
    },
    {
      "id": "7e5aa0e2-1e81-4a9b-8adb-440a14532d6a",
      "name": "Complete Setup Guide",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3520,
        400
      ],
      "parameters": {
        "width": 432,
        "height": 464,
        "content": "## 🔑 Required Setup\n\n## Credentials\n- OpenAI API key for AI generation\n- Outreach OAuth2 for CRM integration\n- MadKudu API key (set as environment variable: madkudu_api_key)\n\n## Configuration\n- Update Outreach Mailbox ID\n- Update Sequence ID\n- Set custom field name (default: custom49)\n- Set company domain variable\n\n## Test\nSend a test email via chat trigger to verify setup."
      },
      "typeVersion": 1
    },
    {
      "id": "1361dc32-92e3-4589-983d-96123219a207",
      "name": "Template Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3680,
        -224
      ],
      "parameters": {
        "width": 544,
        "height": 528,
        "content": "# Try it Out!\n\nThis workflow generates personalized outreach emails using AI research and automatically syncs them to Outreach CRM.\n\nIt researches prospects with MadKudu, generates 5 email angles, selects the best one, and enrolls prospects in email sequences.\n\nPerfect for SDRs, BDRs, and sales teams needing scalable personalized outreach.\n\n## How It Works\n1. Input prospect email via chat\n2. AI researches company and contact\n3. Generate 5 personalized email approaches\n4. Sync best email to Outreach\n5. Enroll in email sequence\n\n\n## Need help? \nReach out to [MadKudu](product@madkudu.com)\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {
    "Information Extractor": [
      {
        "json": {
          "output": {
            "email": "chris@kit.com"
          }
        }
      }
    ],
    "Generate outreach email": [
      {
        "json": {
          "output": {
            "email_draft": [
              {
                "angle": "Major company news with rebranding and strategic growth focus",
                "email": "Subject: Supporting Kit.com's Growth and Marketing Efficiency\n\nHi Christopher,\n\nI noticed Kit.com's recent rebranding and strategic moves to expand in the creator economy with new marketing and monetization tools. Given your role as Director of Sales and Kit.com's focus on scaling and marketing efficiency, I wanted to share how MadKudu's AI-powered lead scoring and marketing operations platform can help you identify the most promising prospects and optimize your sales and marketing alignment.\n\nOur platform can support Kit.com in accelerating your growth phase by providing data-driven insights and improving lead quality, which complements your current initiatives like the acquisition of SparkLoop and the launch of new Creator Network tools.\n\nWould you be open to a brief conversation on how we might support your team in reaching your sales goals while maintaining marketing precision?\n\nBest regards,\n[Your Name]\n[Your Position]\nMadKudu.com"
              }
            ],
            "reason_for_selection": "The chosen angle focuses on the recent and significant company transformation at Kit.com, including their rebranding and expansion into the creator economy, which directly aligns with Kit.com's growth strategy and MadKudu's value proposition. This angle is most relevant to Christopher Amrod's role as Director of Sales, as it ties our solution to his likely priorities around scaling sales efficiency and marketing alignment during a pivotal company growth moment."
          }
        }
      }
    ],
    "Merge Outreach Prospect ID": [
      {
        "json": {
          "Outreach Prospect ID": "153841"
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7e1d7286-f931-4e47-a451-7b7c93e4e946",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Outreach: Get confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MadKudu MCP": {
      "ai_tool": [
        [
          {
            "node": "MadKudu: Generate Account Brief",
            "type": "ai_tool",
            "index": 0
          },
          {
            "node": "Generate outreach email",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model": {
      "ai_languageModel": [
        [
          {
            "node": "MadKudu: Generate Account Brief",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Generate outreach email",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set Contact ID": {
      "main": [
        [
          {
            "node": "Merge Outreach Prospect ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Contact Exists?": {
      "main": [
        [
          {
            "node": "Update Existing Prospect",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Outreach: Create New Prospect",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Contact ID1": {
      "main": [
        [
          {
            "node": "Merge Outreach Prospect ID",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Information Extractor": {
      "main": [
        [
          {
            "node": "MadKudu: Generate Account Brief",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate outreach email": {
      "main": [
        [
          {
            "node": "Outreach: Check Existing Contact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Generate outreach email",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Update Existing Prospect": {
      "main": [
        [
          {
            "node": "Set Contact ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Outreach Prospect ID": {
      "main": [
        [
          {
            "node": "Outreach Submit batch Add to Sequence",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outreach: Get confirmation": {
      "main": [
        [
          {
            "node": "Outreach: Get confirmation1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outreach: Get confirmation1": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outreach: Create New Prospect": {
      "main": [
        [
          {
            "node": "Set Contact ID1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MadKudu: Generate Account Brief": {
      "main": [
        [
          {
            "node": "Generate outreach email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outreach: Check Existing Contact": {
      "main": [
        [
          {
            "node": "Set Outreach Mailbox and Sequence",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Outreach Mailbox and Sequence": {
      "main": [
        [
          {
            "node": "Contact Exists?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outreach Submit batch Add to Sequence": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 客户培育, 多模态 AI

需要付费吗?

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

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

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

外部链接
在 n8n.io 查看

分享此工作流