{
  "name": "Xmind Sales Email v2",
  "nodes": [
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "simple": false,
        "filters": {
          "labelIds": [
            "INBOX"
          ],
          "readStatus": "unread"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.gmailTrigger",
      "typeVersion": 1.3,
      "position": [
        6224,
        7280
      ],
      "id": "0ad6ab53-810d-41ef-a6b1-e74b9cd273ed",
      "name": "\u6293\u53d6inbox\u90ae\u4ef6",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "value": "315e0b5e-b78c-80b9-85be-cdffbfd93509",
          "mode": "list",
          "cachedResultName": "Business Sales - Leads",
          "cachedResultUrl": "https://www.notion.so/315e0b5eb78c80b985becdffbfd93509"
        },
        "returnAll": true,
        "simple": false,
        "filterType": "manual",
        "matchType": "allFilters",
        "filters": {
          "conditions": [
            {
              "key": "Primary Email|email",
              "condition": "equals",
              "emailValue": "={{ $json.to.value[1].address }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        6448,
        7280
      ],
      "id": "82257bb2-53f8-40b3-9fb1-131e1aca99a6",
      "name": "\u548cNotion\u4e2d\u7684email\u5339\u914d",
      "alwaysOutputData": true,
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 1
                },
                "conditions": [
                  {
                    "id": "94b31a13-fbe5-4dfd-a6b9-f88895e4c01c",
                    "leftValue": "={{ $json.name }}",
                    "rightValue": "",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Not found"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 1
                },
                "conditions": [
                  {
                    "id": "dfe0950b-294a-4a98-83df-97085685e7a4",
                    "leftValue": "={{ $json.properties.Status.select.name }}",
                    "rightValue": "Follow Up",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Found"
            }
          ]
        },
        "options": {
          "fallbackOutput": 3
        }
      },
      "id": "d2c73017-a2ad-453a-b1b1-c0303ef55791",
      "name": "Notion\u67e5\u627eemail\u5339\u914d\u9879",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3,
      "position": [
        6656,
        7280
      ],
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg",
          "mode": "list",
          "cachedResultName": "contact-sales-enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit#gid=0"
        },
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "Work Email",
              "lookupValue": "={{ $('\u6293\u53d6inbox\u90ae\u4ef6').item.json.from.value[0].address.toLowerCase() }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        6944,
        7088
      ],
      "id": "e70344b2-cb4c-4e07-9214-acc0699935d9",
      "name": "google sheet\u67e5\u627e\u5339\u914d\u9879",
      "alwaysOutputData": true,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "06d0aa01-7614-48b8-9053-306fefd50360",
              "leftValue": "={{ $json.row_number }}",
              "rightValue": true,
              "operator": {
                "type": "number",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "or"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        7136,
        7088
      ],
      "id": "9ccff574-1ca2-468b-9e74-58d27bf0a8ec",
      "name": "\u786e\u8ba4\u5c5e\u4e8eleads"
    },
    {
      "parameters": {
        "jsCode": "const input = $('\u6293\u53d6inbox\u90ae\u4ef6').first().json.text || \"\";\n\n// =========================\n// Step 1: Extract ONLY the latest message\n// =========================\nfunction cleanText(str) {\n  if (!str) return \"\";\n  return str\n    .replace(/\\r/g, \"\")\n    .replace(/[ \\t]+\\n/g, \"\\n\")\n    .replace(/\\n[ \\t]+/g, \"\\n\")\n    .replace(/\\n{3,}/g, \"\\n\\n\")\n    .trim();\n}\n\nconst text = cleanText(input);\n\nif (!text) {\n  return [{ json: { error: \"No text content found\", user_prompt: \"\", latest_content: \"\" } }];\n}\n\n// Find the FIRST quote boundary \u2014 everything before it is the latest message\nconst quotePatterns = [\n  /^On\\s+.+?\\s+at\\s+\\d{1,2}:\\d{2}\\s*[APMapm]{2}\\s+.+?\\s+wrote:\\s*$/m,  // Gmail: \"On ... wrote:\"\n  /^From:\\s+.+$/m,                                                         // Outlook: \"From: ...\"\n  /^-{3,}\\s*Original Message\\s*-{3,}/mi,                                   // \"--- Original Message ---\"\n  /^>{1,}\\s/m,                                                             // Quoted lines \"> ...\"\n];\n\nlet cutIndex = text.length;\nfor (const pattern of quotePatterns) {\n  const match = text.match(pattern);\n  if (match && match.index < cutIndex) {\n    cutIndex = match.index;\n  }\n}\n\nlet latestMessage = text.slice(0, cutIndex).trim();\n\n// =========================\n// Step 2: Strip signature from the latest message\n// =========================\nconst sigPatterns = [\n  /\\n--\\s*\\n[\\s\\S]*/,                          // Standard sig separator\n  /\\nRegards,[\\s\\S]*/i,                        // \"Regards,\" and everything after\n  /\\nBest regards,[\\s\\S]*/i,                   // \"Best regards,\"\n  /\\nKind regards,[\\s\\S]*/i,\n  /\\nCordialement,[\\s\\S]*/i,\n  /\\nMit freundlichen Gr\u00fc\u00dfen,[\\s\\S]*/i,\n  /\\n\u3088\u308d\u3057\u304f\u304a\u9858\u3044[\\s\\S]*/,\n  /\\n\u6b64\u81f4[\\s\\S]*/,\n  /\\nCheers,[\\s\\S]*/i,\n  /\\nThanks,[\\s\\S]*/i,\n];\n\nfor (const pattern of sigPatterns) {\n  const match = latestMessage.match(pattern);\n  if (match) {\n    // Keep the \"Regards\" line itself but cut the signature block after\n    const beforeSig = latestMessage.slice(0, match.index).trim();\n    // Only cut if there's actual content before the signature\n    if (beforeSig.length > 20) {\n      latestMessage = beforeSig;\n    }\n    break;\n  }\n}\n\n// =========================\n// Step 3: Clean noise\n// =========================\nlatestMessage = latestMessage\n  .replace(/You don't often get email from .+?important/gi, \"\")\n  .replace(/\\[image:[^\\]]*\\]/gi, \"\")\n  .replace(/\\n{3,}/g, \"\\n\\n\")\n  .trim();\n\n// =========================\n// Step 4: Build CRM context from Notion\n// =========================\nlet crmContext = {};\nlet pageContent = \"\";\n\ntry {\n  const notionData = $('\u548cNotion\u4e2d\u7684email\u5339\u914d').first().json;\n  const props = notionData.properties || {};\n\n  const getSelect = (p) => p?.select?.name || '';\n  const getText = (p) => {\n    if (p?.rich_text?.[0]?.plain_text) return p.rich_text[0].plain_text;\n    if (p?.rich_text?.[0]?.text?.content) return p.rich_text[0].text.content;\n    return '';\n  };\n  const getEmail = (p) => p?.email || '';\n  const getNumber = (p) => p?.number != null ? p.number : '';\n  const getTitle = (p) => p?.title?.[0]?.plain_text || '';\n  const getDate = (p) => p?.date?.start || '';\n\n  crmContext = {\n    company: getTitle(props.Company) || notionData.name || '',\n    name: getText(props.Name),\n    primary_email: getEmail(props['Primary Email']),\n    admin_account: getEmail(props['Admin account']),\n    country: getSelect(props.Country),\n    currency: getSelect(props.Currency),\n    plan: getSelect(props.Plan),\n    quantity: getNumber(props.Quantity),\n    duration: getNumber(props.Duration),\n    unit_price: getNumber(props['Unit Price']),\n    revenue: getNumber(props.Revenue),\n    discount: getText(props.Discount),\n    status: getSelect(props.Status),\n    customer_type: getSelect(props['Customer Type']),\n    payment_method: getSelect(props['Payment Method']),\n    next_action: getText(props['Next Action']),\n    next_action_date: getDate(props['Next Action Date']),\n    reseller_commission: getSelect(props['Reseller Commission']),\n    end_user: getText(props['End User']),\n    team_id: getText(props['Team id']),\n    order_id: getText(props['Order ID']),\n    notes: getText(props.Notes),\n    department: getText(props.Department)\n  };\n\n  // Get page content blocks (\u5efa\u8054\u4fe1\u606f + \u5bf9\u8bdd\u7eaa\u8981)\n  const blocks = notionData.body?.results || [];\n  for (const block of blocks) {\n    if (block.type === 'heading_3') {\n      pageContent += '\\n### ' + (block.heading_3?.rich_text?.[0]?.plain_text || '') + '\\n';\n    } else if (block.type === 'paragraph') {\n      pageContent += (block.paragraph?.rich_text?.[0]?.plain_text || '') + '\\n';\n    }\n  }\n} catch (e) {\n  // Notion data not available \u2014 that's ok for the \"Not found\" path\n}\n\n// =========================\n// Step 5: Assemble user_prompt\n// =========================\nconst hasCRM = Object.values(crmContext).some(v => v !== '' && v !== 0);\n\nlet userPrompt = \"\";\n\nif (hasCRM) {\n  userPrompt += `## CRM Context\\n${JSON.stringify(crmContext, null, 2)}\\n\\n`;\n}\n\nif (pageContent.trim()) {\n  userPrompt += `## Conversation History (from Notion)\\n${pageContent.trim()}\\n\\n`;\n}\n\nuserPrompt += `## Customer's Latest Email\\n${latestMessage}`;\n\nreturn [{\n  json: {\n    latest_content: latestMessage,\n    user_prompt: userPrompt,\n    crm_context: crmContext,\n    original_length: text.length,\n    cleaned_length: latestMessage.length\n  }\n}];\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        6976,
        7296
      ],
      "id": "f40e0318-2e23-4485-b914-9750118045b2",
      "name": "\u6e05\u6d17\u56de\u590d\u90ae\u4ef6\u7684\u5185\u5bb9"
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg",
          "mode": "list",
          "cachedResultName": "contact-sales-enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "\u8bb0\u5f55\u5728Notion": "true"
          },
          "matchingColumns": [
            "\u8bb0\u5f55\u5728Notion"
          ],
          "schema": [
            {
              "id": "\u8bb0\u5f55\u5728Notion",
              "displayName": "\u8bb0\u5f55\u5728Notion",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Stage",
              "displayName": "Stage",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "\u5df2\u8bb0\u5f55",
              "displayName": "\u5df2\u8bb0\u5f55",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Payment date",
              "displayName": "Payment date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Notes",
              "displayName": "Notes",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "User case",
              "displayName": "User case",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Rev.",
              "displayName": "Rev.",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Qty.",
              "displayName": "Qty.",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Product",
              "displayName": "Product",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Expiration Date",
              "displayName": "Expiration Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Admin",
              "displayName": "Admin",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Work Email",
              "displayName": "Work Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Priority",
              "displayName": "Priority",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Phone Number",
              "displayName": "Phone Number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Company name",
              "displayName": "Company name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Job Title",
              "displayName": "Job Title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Company size",
              "displayName": "Company size",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Details",
              "displayName": "Details",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Language",
              "displayName": "Language",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Summary",
              "displayName": "Summary",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Intent Type",
              "displayName": "Intent Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_source",
              "displayName": "utm_source",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_medium",
              "displayName": "utm_medium",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_campaign",
              "displayName": "utm_campaign",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "gclid",
              "displayName": "gclid",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_content",
              "displayName": "utm_content",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_term",
              "displayName": "utm_term",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "description",
              "displayName": "description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "comments",
              "displayName": "comments",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "company",
              "displayName": "company",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "message",
              "displayName": "message",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "remarks",
              "displayName": "remarks",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "subject",
              "displayName": "subject",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "website",
              "displayName": "website",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "feedback",
              "displayName": "feedback",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "id": "8c8fb81a-0141-4023-be44-1aa4d6f78999",
      "name": "\u52fe\u9009Notion\u5df2\u8bb0\u5f55",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        8528,
        7296
      ],
      "alwaysOutputData": true,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "documentId": {
          "__rl": true,
          "value": "1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg",
          "mode": "list",
          "cachedResultName": "contact-sales-enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit#gid=0"
        },
        "event": "rowAdded",
        "options": {
          "valueRender": "FORMATTED_VALUE"
        }
      },
      "id": "eca840f1-079f-4a1f-9cb3-186204cd1a53",
      "name": "\u5f53\u51fa\u73b0\u65b0\u7684leads",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "typeVersion": 1,
      "position": [
        6176,
        6480
      ],
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": "openai/gpt-5",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        6368,
        6640
      ],
      "id": "744b5d61-2cb9-454d-ade7-2f4b3d412eb1",
      "name": "OpenRouter Chat Model",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "numberInputs": 4
      },
      "id": "a31bbb1b-6c14-4075-aba6-3d0a4f598cc3",
      "name": "Merge Post Notion",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        8080,
        6448
      ]
    },
    {
      "parameters": {
        "resource": "draft",
        "subject": "=Xmind \u2014 We\u2019ve received your request and will follow up shortly",
        "emailType": "html",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\" />\n  <title>Support Acknowledgement</title>\n</head>\n<body style=\"margin:0; padding:0; background-color:#f6f8fb; font-family: Arial, Helvetica, sans-serif; color:#1f2937;\">\n  <table role=\"presentation\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"background-color:#f6f8fb; margin:0; padding:24px 0;\">\n    <tr>\n      <td align=\"center\">\n        <table role=\"presentation\" width=\"640\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"width:640px; max-width:640px; background-color:#ffffff; border-radius:12px; overflow:hidden; border:1px solid #e5e7eb;\">\n          \n          <tr>\n            <td style=\"padding:32px 40px 20px 40px; background-color:#ffffff;\">\n              <h2 style=\"margin:0; font-size:24px; line-height:32px; color:#111827; font-weight:700;\">\n                We\u2019ve received your message\n              </h2>\n            </td>\n          </tr>\n\n          <tr>\n            <td style=\"padding:0 40px 12px 40px;\">\n              <p style=\"margin:0 0 16px 0; font-size:15px; line-height:24px; color:#374151;\">\n                Hi {{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Name }},\n              </p>\n\n              <p style=\"margin:0 0 16px 0; font-size:15px; line-height:24px; color:#374151;\">\n                Thank you for contacting us.\n              </p>\n\n              <p style=\"margin:0 0 16px 0; font-size:15px; line-height:24px; color:#374151;\">\n                We have received your message, and the Xmind Support team will contact you as soon as possible.\n              </p>\n\n              <p style=\"margin:0 0 20px 0; font-size:15px; line-height:24px; color:#374151;\">\n                For reference, here is the information you submitted:\n              </p>\n            </td>\n          </tr>\n\n          <tr>\n            <td style=\"padding:0 40px 28px 40px;\">\n              <table role=\"presentation\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"background-color:#f9fafb; border:1px solid #e5e7eb; border-radius:10px;\">\n                <tr>\n                  <td style=\"padding:20px;\">\n                    <p style=\"margin:0 0 10px 0; font-size:14px; line-height:22px; color:#111827;\">\n                      <strong>Name:</strong> {{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Name }}\n                    </p>\n                    <p style=\"margin:0 0 10px 0; font-size:14px; line-height:22px; color:#111827;\">\n                      <strong>Email:</strong> {{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Work Email'] }}\n                    </p>\n                    <p style=\"margin:0 0 8px 0; font-size:14px; line-height:22px; color:#111827;\">\n                      <strong>Message:</strong>\n                    </p>\n                    <div style=\"font-size:14px; line-height:22px; color:#374151; white-space:pre-wrap; word-break:break-word;\">\n             {{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Details }} \n                    </div>\n                  </td>\n                </tr>\n              </table>\n            </td>\n          </tr>\n\n          <tr>\n            <td style=\"padding:0 40px 32px 40px;\">\n              <p style=\"margin:0; font-size:14px; line-height:22px; color:#6b7280;\">\n                Best regards,<br />\n                Xmind Team\n              </p>\n            </td>\n          </tr>\n\n        </table>\n      </td>\n    </tr>\n  </table>\n</body>\n</html>",
        "options": {
          "ccList": "support@xmind.com",
          "sendTo": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Work Email'] }}"
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        7376,
        6640
      ],
      "id": "ca32f90f-0724-49a4-bc32-bd5976da442e",
      "name": "\u8f6c\u53d1\u652f\u6301\u90ae\u4ef6",
      "alwaysOutputData": true,
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "draft",
        "subject": "={{ $json.subject }}",
        "emailType": "html",
        "message": "={{ $json.body }}",
        "options": {
          "sendTo": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Work Email'] }}"
        }
      },
      "id": "f70e76bd-7f0a-4d8c-88d8-585b79025bd4",
      "name": "\u751f\u6210\u5efa\u8054draft-template",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        7632,
        6464
      ],
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 1
                },
                "conditions": [
                  {
                    "id": "83c400c0-9601-4891-b55f-adb6ef142237",
                    "leftValue": "={{ $json.output.intent }}",
                    "rightValue": "custom",
                    "operator": {
                      "type": "string",
                      "operation": "equals",
                      "name": "filter.operator.equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "custom"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 1
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.output.intent }}",
                    "rightValue": "template",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "c9270e61-8253-4fb7-9ad5-5c47b65320cb"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "template"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 1
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.output.intent }}",
                    "rightValue": "support",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "d927eada-70d1-448c-8120-35c97b15c2e5"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "support"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 1
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.output.intent }}",
                    "rightValue": "spam",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "2e89966d-8e80-46b4-b714-61a85b0285b4"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "spam"
            }
          ]
        },
        "options": {
          "fallbackOutput": "none"
        }
      },
      "id": "f6e47d9c-354a-4b1b-b40b-772072498939",
      "name": "\u6839\u636eIntent\u5206\u7c7b",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3,
      "position": [
        6672,
        6448
      ]
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg",
          "mode": "list",
          "cachedResultName": "contact-sales-enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Enterprise",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijS9_77IJe2OFPrbhULqgyfW7gxVrXt93kr2b0T6-tg/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Date }}",
            "Intent Type": "={{ $('\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981').item.json.output.intent }}",
            "Language": "={{ $('\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981').item.json.output.language }}",
            "Summary": "={{ $('\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981').item.json.output.summary }}"
          },
          "matchingColumns": [
            "Date"
          ],
          "schema": [
            {
              "id": "\u8bb0\u5f55\u5728Notion",
              "displayName": "\u8bb0\u5f55\u5728Notion",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Stage",
              "displayName": "Stage",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "\u5df2\u8bb0\u5f55",
              "displayName": "\u5df2\u8bb0\u5f55",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Payment date",
              "displayName": "Payment date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Notes",
              "displayName": "Notes",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "User case",
              "displayName": "User case",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Rev.",
              "displayName": "Rev.",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Qty.",
              "displayName": "Qty.",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Product",
              "displayName": "Product",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Expiration Date",
              "displayName": "Expiration Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Admin",
              "displayName": "Admin",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Work Email",
              "displayName": "Work Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Priority",
              "displayName": "Priority",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Phone Number",
              "displayName": "Phone Number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Company name",
              "displayName": "Company name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Job Title",
              "displayName": "Job Title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Company size",
              "displayName": "Company size",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Details",
              "displayName": "Details",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Language",
              "displayName": "Language",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Summary",
              "displayName": "Summary",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Intent Type",
              "displayName": "Intent Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "utm_source",
              "displayName": "utm_source",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_medium",
              "displayName": "utm_medium",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_campaign",
              "displayName": "utm_campaign",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "gclid",
              "displayName": "gclid",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_content",
              "displayName": "utm_content",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "utm_term",
              "displayName": "utm_term",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "description",
              "displayName": "description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "comments",
              "displayName": "comments",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "company",
              "displayName": "company",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "message",
              "displayName": "message",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "remarks",
              "displayName": "remarks",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "subject",
              "displayName": "subject",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "website",
              "displayName": "website",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "feedback",
              "displayName": "feedback",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "id": "47294b51-a653-4691-b8a8-38cadc9dea36",
      "name": "\u66f4\u65b0google sheet\u4fe1\u606f",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        8304,
        6480
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=You are a lead qualification assistant for a mind mapping software product.\n\nYour task is to analyze a lead note and return:\n1. Intent type\n2. Language\n3. A short Chinese summary\n\n---\n\n## Intent Types Definition\n\nClassify the note into ONE of the following:\n\n### spam\n- Random characters, meaningless text, ads, phishing, or empty content\n- Completely unclear or no interpretable meaning\n\nIMPORTANT:\n- Short text in ANY language is NOT spam if it has meaning\n\n---\n\n### support\n- Questions or issues NOT related to purchasing decisions\n- Includes:\n  - login issues\n  - bugs\n  - usage questions\n  - feature help\n  - version problems\n  - account issues\n  - complaints or negative feedback\n  - refund requests or threats\n  - billing issues AFTER purchase (e.g. double charge, renewal confusion, payment history problems)\n\nIMPORTANT:\n- If the user has already purchased and is facing a problem \u2192 ALWAYS support\n\n---\n\n### template\n- Shows interest but NO clear purchasing details\n- Includes:\n  - describing use cases (e.g. study, drawing diagrams, brainstorming)\n  - vague interest\n  - simple questions without commitment\n- short but meaningful phrases indicating a use case, industry, or context\n\nIMPORTANT:\n- ANY mention of usage scenarios (study, work, diagramming, etc.) = template (NOT spam)\n\n---\n\n### custom\n- Clear purchasing intent BEFORE buying\n\nIncludes:\n- asking about pricing, plans, discounts\n- asking about terms before purchase\n- mentioning personal or team purchase intention\n- providing requirements for a potential purchase\n\nIMPORTANT:\n- ONLY classify as custom if the user has NOT yet purchasedurchase intent appear \u2192 choose custom\n\n---\n\n## Language\n\nDetect the main language of the note.\n\nReturn using abbreviations:\n- English \u2192 En\n- Chinese Simple \u2192 Zh-hans\n- Chinese Traditional \u2192 Zh-hant\n- Japanese \u2192 Jp\n- Spanish \u2192 Es\n- Portuguese \u2192 Pt\n- French \u2192 Fr\n- German \u2192 De\n- Russian \u2192 Ru\n- Vietnamese \u2192 Vi\n- Others \u2192 common 2-letter abbreviation\n\n---\n\n## Summary\n\nWrite ONE concise sentence in Chinese:\n- Capture the core intent\n- No extra explanation\n\n---\n\n## Rules\n\n- Always return valid JSON\n- Do NOT add extra text\n- Never classify meaningful short text as spam\n- Prefer \"template\" over \"spam\" if unsure\n- Prefer \"custom\" over \"template\" if any purchase intent exists\n\n---\n\n## Output Format\n\n{\n  \"intent\": \"spam | support | template | custom\",\n  \"language\": \"En | Zh | Jp | Es | Pt | Fr | De | Ru | Vi | etc\",\n  \"summary\": \"\u4e00\u53e5\u4e2d\u6587\u603b\u7ed3\"\n}\n\n---\n\n## Input\n\"\"\"\n{{$json.Details}}\n\"\"\"",
        "hasOutputParser": true,
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        6368,
        6480
      ],
      "id": "3c6ef56c-c00f-4041-9197-537f6b3faf7a",
      "name": "\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981"
    },
    {
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"intent\": \"custom\",\n  \"language\": \"En\",\n  \"summary\": \"\u7528\u6237\u8be2\u95ee\u4f01\u4e1a\u7248\u4ef7\u683c\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        6512,
        6640
      ],
      "id": "ba61f39c-ec54-469e-9cc6-26db5626003c",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "jsCode": "const item = $input.first().json;\n\n// =========================\n// INPUT\n// =========================\nconst language = $('\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981').first().json.output.language;\nconst name = $('\u5f53\u51fa\u73b0\u65b0\u7684leads').first().json.Name;\n\n// =========================\n// NORMALIZE LANGUAGE\n// Supports:\n// En, Ja, Es, De, Zh-hans, Fr, Vi, Pt, Ru, Ko, Zh-hant\n// =========================\nconst rawLanguage = (language || 'En').toString().trim().toLowerCase();\n\nconst languageMap = {\n  'en': 'En',\n  'ja': 'Ja',\n  'es': 'Es',\n  'de': 'De',\n  'zh-hans': 'Zh-hans',\n  'zh-cn': 'Zh-hans',\n  'zh-sg': 'Zh-hans',\n  'zh': 'Zh-hans',\n  'fr': 'Fr',\n  'vi': 'Vi',\n  'pt': 'Pt',\n  'pt-br': 'Pt',\n  'pt-pt': 'Pt',\n  'ru': 'Ru',\n  'ko': 'Ko',\n  'zh-hant': 'Zh-hant',\n  'zh-tw': 'Zh-hant',\n  'zh-hk': 'Zh-hant',\n  'zh-mo': 'Zh-hant'\n};\n\nconst normalizedLanguage = languageMap[rawLanguage] || 'En';\nconst safeName = (name || 'there').toString().trim();\n\n// =========================\n// SIGNATURE\n// =========================\nconst signature = `\n<br><br>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse;\">\n  <tr>\n    <td align=\"center\" valign=\"middle\" style=\"padding:0; margin:0;\">\n      <a href=\"https://xmind.com\" target=\"_blank\" style=\"text-decoration:none;\">\n        <img src=\"https://zpsbkj.stripocdn.email/content/guids/CABINET_8e29883f27ed7c9c3e166c8fdb97d6a591abfd3906c9b1d4466f639ea5be08de/images/image_EjF.png\"\n             width=\"70\" height=\"70\" alt=\"Xmind Logo\"\n             style=\"display:block; border:0; outline:none; text-decoration:none;\">\n      </a>\n    </td>\n    <td width=\"10\" style=\"font-size:0; line-height:0;\">&nbsp;</td>\n    <td width=\"1\" bgcolor=\"#000000\" style=\"font-size:0; line-height:0;\">&nbsp;</td>\n    <td width=\"10\" style=\"font-size:0; line-height:0;\">&nbsp;</td>\n    <td valign=\"top\" style=\"font-family: Arial, Helvetica, sans-serif; color:#333333;\">\n      <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse;\">\n        <tr>\n          <td style=\"font-size:15px; font-weight:700; line-height:20px; color:#333333;\">\n            Stellar Zhou\n          </td>\n        </tr>\n        <tr>\n          <td style=\"height:4px; font-size:0; line-height:0;\">&nbsp;</td>\n        </tr>\n        <tr>\n          <td style=\"font-size:12px; line-height:16px; color:#777777;\">\n            Business Development Manager\n          </td>\n        </tr>\n        <tr>\n          <td style=\"font-size:12px; line-height:16px; color:#777777;\">\n            Xmind\n          </td>\n        </tr>\n        <tr>\n          <td style=\"height:4px; font-size:0; line-height:0;\">&nbsp;</td>\n        </tr>\n        <tr>\n          <td style=\"font-size:12px; line-height:16px; color:#777777;\">\n            <a href=\"https://xmind.com\" target=\"_blank\" style=\"color:#777777; text-decoration:none;\">https://xmind.com</a>\n          </td>\n        </tr>\n        <tr>\n          <td style=\"font-size:12px; line-height:16px; color:#777777;\">\n            <a href=\"mailto:stellar@xmind.com\" style=\"color:#777777; text-decoration:none;\">stellar@xmind.com</a>\n          </td>\n        </tr>\n      </table>\n    </td>\n  </tr>\n</table>\n`;\n\n// =========================\n// TEMPLATES (HTML)\n// =========================\nconst templates = {\n  En: {\n    subject: 'Next Steps on Your Xmind Enterprise Plan',\n    body: `Hi ${safeName},<br><br>\nI\u2019m Stellar from the Xmind Team. Thank you for your interest in our Enterprise Plan.<br><br>\nTo best assist you, could you please share:<br><br>\n1. What are your team's primary goals and challenges that you're looking to address with Xmind?<br>\n2. How many users will be utilizing Xmind in your team?<br>\n3. Do you require AI Copilot, team management, project management and the SSO feature?<br>\n4. Any questions you may have?<br><br>\nYour input will help me provide a personalized quote and solution that meets your needs.<br><br>\nBest regards,`\n  },\n\n  Ja: {\n    subject: 'Xmind Enterprise Plan \u306b\u95a2\u3059\u308b\u6b21\u306e\u30b9\u30c6\u30c3\u30d7',\n    body: `${safeName}\u69d8<br><br>\nXmind\u30c1\u30fc\u30e0\u306eStellar\u3067\u3059\u3002Enterprise Plan \u306b\u3054\u95a2\u5fc3\u3092\u304a\u5bc4\u305b\u3044\u305f\u3060\u304d\u3001\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002<br><br>\n\u3088\u308a\u9069\u5207\u306b\u3054\u6848\u5185\u3059\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092\u3054\u5171\u6709\u3044\u305f\u3060\u3051\u307e\u3059\u3067\u3057\u3087\u3046\u304b\u3002<br><br>\n1. Xmind \u3092\u901a\u3058\u3066\u89e3\u6c7a\u3057\u305f\u3044\u3001\u30c1\u30fc\u30e0\u306e\u4e3b\u306a\u76ee\u6a19\u3084\u8ab2\u984c\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f<br>\n2. \u30c1\u30fc\u30e0\u5185\u3067 Xmind \u3092\u5229\u7528\u3059\u308b\u4e88\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u6570\u306f\u4f55\u540d\u3067\u3059\u304b\uff1f<br>\n3. AI Copilot\u3001\u30c1\u30fc\u30e0\u7ba1\u7406\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7ba1\u7406\u3001SSO \u6a5f\u80fd\u306f\u5fc5\u8981\u3067\u3057\u3087\u3046\u304b\uff1f<br>\n4. \u305d\u306e\u4ed6\u3001\u3054\u4e0d\u660e\u70b9\u3084\u3054\u8cea\u554f\u306f\u3042\u308a\u307e\u3059\u304b\uff1f<br><br>\n\u3054\u5171\u6709\u3044\u305f\u3060\u3044\u305f\u5185\u5bb9\u3092\u3082\u3068\u306b\u3001\u304a\u5ba2\u69d8\u306e\u30cb\u30fc\u30ba\u306b\u5408\u3063\u305f\u304a\u898b\u7a4d\u3082\u308a\u3068\u3054\u63d0\u6848\u3092\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u3002<br><br>\n\u3088\u308d\u3057\u304f\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002`\n  },\n\n  Es: {\n    subject: 'Pr\u00f3ximos pasos para su plan Enterprise de Xmind',\n    body: `Hola ${safeName},<br><br>\nSoy Stellar, del equipo de Xmind. Gracias por su inter\u00e9s en nuestro plan Enterprise.<br><br>\nPara poder ayudarle mejor, \u00bfpodr\u00eda compartir la siguiente informaci\u00f3n?<br><br>\n1. \u00bfCu\u00e1les son los principales objetivos y desaf\u00edos de su equipo que desea abordar con Xmind?<br>\n2. \u00bfCu\u00e1ntos usuarios utilizar\u00e1n Xmind en su equipo?<br>\n3. \u00bfNecesita AI Copilot, gesti\u00f3n de equipos, gesti\u00f3n de proyectos y la funci\u00f3n SSO?<br>\n4. \u00bfTiene alguna otra pregunta?<br><br>\nSu informaci\u00f3n me ayudar\u00e1 a ofrecerle una cotizaci\u00f3n personalizada y una soluci\u00f3n que se ajuste a sus necesidades.<br><br>\nSaludos cordiales,`\n  },\n\n  De: {\n    subject: 'N\u00e4chste Schritte zu Ihrem Xmind Enterprise Plan',\n    body: `Hallo ${safeName},<br><br>\nich bin Stellar aus dem Xmind-Team. Vielen Dank f\u00fcr Ihr Interesse an unserem Enterprise Plan.<br><br>\nDamit ich Sie bestm\u00f6glich unterst\u00fctzen kann, teilen Sie mir bitte Folgendes mit:<br><br>\n1. Welche wichtigsten Ziele und Herausforderungen m\u00f6chte Ihr Team mit Xmind angehen?<br>\n2. Wie viele Nutzer werden Xmind in Ihrem Team verwenden?<br>\n3. Ben\u00f6tigen Sie AI Copilot, Teamverwaltung, Projektmanagement und die SSO-Funktion?<br>\n4. Haben Sie weitere Fragen?<br><br>\nIhre Angaben helfen mir dabei, Ihnen ein individuelles Angebot und eine passende L\u00f6sung f\u00fcr Ihre Anforderungen zu erstellen.<br><br>\nMit freundlichen Gr\u00fc\u00dfen`\n  },\n\n  'Zh-hans': {\n    subject: '\u5173\u4e8e\u60a8\u7684 Xmind \u4f01\u4e1a\u7248\u65b9\u6848\u7684\u540e\u7eed\u6b65\u9aa4',\n    body: `${safeName}\uff0c\u60a8\u597d\uff1a<br><br>\n\u6211\u662f\u6765\u81ea Xmind \u56e2\u961f\u7684 Stellar\u3002\u611f\u8c22\u60a8\u5bf9\u6211\u4eec\u4f01\u4e1a\u7248\u65b9\u6848\u7684\u5173\u6ce8\u3002<br><br>\n\u4e3a\u4e86\u66f4\u597d\u5730\u4e3a\u60a8\u63d0\u4f9b\u5e2e\u52a9\uff0c\u70e6\u8bf7\u60a8\u5206\u4eab\u4ee5\u4e0b\u4fe1\u606f\uff1a<br><br>\n1. \u60a8\u7684\u56e2\u961f\u76ee\u524d\u5e0c\u671b\u901a\u8fc7 Xmind \u5b9e\u73b0\u54ea\u4e9b\u4e3b\u8981\u76ee\u6807\uff1f\u6b63\u5728\u9762\u4e34\u54ea\u4e9b\u6311\u6218\uff1f<br>\n2. \u60a8\u7684\u56e2\u961f\u4e2d\u9884\u8ba1\u4f1a\u6709\u591a\u5c11\u4f4d\u7528\u6237\u4f7f\u7528 Xmind\uff1f<br>\n3. \u60a8\u662f\u5426\u9700\u8981 AI Copilot\u3001\u56e2\u961f\u7ba1\u7406\u3001\u9879\u76ee\u7ba1\u7406\u4ee5\u53ca SSO \u529f\u80fd\uff1f<br>\n4. \u60a8\u76ee\u524d\u662f\u5426\u8fd8\u6709\u5176\u4ed6\u95ee\u9898\u60f3\u4e86\u89e3\uff1f<br><br>\n\u8fd9\u4e9b\u4fe1\u606f\u5c06\u5e2e\u52a9\u6211\u4e3a\u60a8\u63d0\u4f9b\u66f4\u7b26\u5408\u60a8\u9700\u6c42\u7684\u4e2a\u6027\u5316\u62a5\u4ef7\u548c\u89e3\u51b3\u65b9\u6848\u3002<br><br>\n\u6b64\u81f4<br>\n\u656c\u793c`\n  },\n\n  Fr: {\n    subject: 'Prochaines \u00e9tapes pour votre offre Xmind Enterprise',\n    body: `Bonjour ${safeName},<br><br>\nJe suis Stellar de l\u2019\u00e9quipe Xmind. Merci de l\u2019int\u00e9r\u00eat que vous portez \u00e0 notre offre Enterprise.<br><br>\nAfin de pouvoir vous aider au mieux, pourriez-vous nous pr\u00e9ciser les points suivants :<br><br>\n1. Quels sont les principaux objectifs et d\u00e9fis de votre \u00e9quipe que vous souhaitez r\u00e9soudre avec Xmind ?<br>\n2. Combien d\u2019utilisateurs dans votre \u00e9quipe utiliseront Xmind ?<br>\n3. Avez-vous besoin de AI Copilot, de la gestion d\u2019\u00e9quipe, de la gestion de projet et de la fonctionnalit\u00e9 SSO ?<br>\n4. Avez-vous d\u2019autres questions ?<br><br>\nVos r\u00e9ponses m\u2019aideront \u00e0 vous proposer un devis personnalis\u00e9 et une solution adapt\u00e9e \u00e0 vos besoins.<br><br>\nCordialement,`\n  },\n\n  Vi: {\n    subject: 'C\u00e1c b\u01b0\u1edbc ti\u1ebfp theo cho g\u00f3i Xmind Enterprise c\u1ee7a b\u1ea1n',\n    body: `Xin ch\u00e0o ${safeName},<br><br>\nT\u00f4i l\u00e0 Stellar t\u1eeb \u0111\u1ed9i ng\u0169 Xmind. C\u1ea3m \u01a1n b\u1ea1n \u0111\u00e3 quan t\u00e2m \u0111\u1ebfn g\u00f3i Enterprise c\u1ee7a ch\u00fang t\u00f4i.<br><br>\n\u0110\u1ec3 t\u00f4i c\u00f3 th\u1ec3 h\u1ed7 tr\u1ee3 b\u1ea1n t\u1ed1t h\u01a1n, b\u1ea1n vui l\u00f2ng chia s\u1ebb gi\u00fap m\u1ed9t s\u1ed1 th\u00f4ng tin sau:<br><br>\n1. M\u1ee5c ti\u00eau ch\u00ednh v\u00e0 nh\u1eefng th\u00e1ch th\u1ee9c m\u00e0 nh\u00f3m c\u1ee7a b\u1ea1n mu\u1ed1n gi\u1ea3i quy\u1ebft v\u1edbi Xmind l\u00e0 g\u00ec?<br>\n2. C\u00f3 bao nhi\u00eau ng\u01b0\u1eddi d\u00f9ng trong nh\u00f3m c\u1ee7a b\u1ea1n s\u1ebd s\u1eed d\u1ee5ng Xmind?<br>\n3. B\u1ea1n c\u00f3 c\u1ea7n AI Copilot, qu\u1ea3n l\u00fd nh\u00f3m, qu\u1ea3n l\u00fd d\u1ef1 \u00e1n v\u00e0 t\u00ednh n\u0103ng SSO kh\u00f4ng?<br>\n4. B\u1ea1n c\u00f3 c\u00e2u h\u1ecfi n\u00e0o kh\u00e1c kh\u00f4ng?<br><br>\nTh\u00f4ng tin c\u1ee7a b\u1ea1n s\u1ebd gi\u00fap t\u00f4i cung c\u1ea5p b\u00e1o gi\u00e1 v\u00e0 gi\u1ea3i ph\u00e1p ph\u00f9 h\u1ee3p nh\u1ea5t v\u1edbi nhu c\u1ea7u c\u1ee7a b\u1ea1n.<br><br>\nTr\u00e2n tr\u1ecdng,`\n  },\n\n  Pt: {\n    subject: 'Pr\u00f3ximos passos do seu plano Xmind Enterprise',\n    body: `Ol\u00e1 ${safeName},<br><br>\nSou Stellar, da equipe da Xmind. Obrigado pelo seu interesse no nosso plano Enterprise.<br><br>\nPara que eu possa ajudar melhor, voc\u00ea poderia compartilhar as seguintes informa\u00e7\u00f5es?<br><br>\n1. Quais s\u00e3o os principais objetivos e desafios da sua equipe que voc\u00ea deseja resolver com o Xmind?<br>\n2. Quantos usu\u00e1rios da sua equipe utilizar\u00e3o o Xmind?<br>\n3. Voc\u00ea precisa do AI Copilot, gerenciamento de equipe, gerenciamento de projetos e do recurso SSO?<br>\n4. Voc\u00ea tem alguma outra d\u00favida?<br><br>\nSuas respostas me ajudar\u00e3o a fornecer uma proposta personalizada e uma solu\u00e7\u00e3o adequada \u00e0s suas necessidades.<br><br>\nAtenciosamente,`\n  },\n\n  Ru: {\n    subject: '\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u0430\u0440\u0438\u0444\u0443 Xmind Enterprise',\n    body: `\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, ${safeName}!<br><br>\n\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 Stellar, \u044f \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Xmind. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0442\u0430\u0440\u0438\u0444\u0443 Enterprise.<br><br>\n\u0427\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u043b\u0443\u0447\u0448\u0435 \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439:<br><br>\n1. \u041a\u0430\u043a\u043e\u0432\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0446\u0435\u043b\u0438 \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Xmind?<br>\n2. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Xmind?<br>\n3. \u041d\u0443\u0436\u043d\u044b \u043b\u0438 \u0432\u0430\u043c AI Copilot, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f SSO?<br>\n4. \u0415\u0441\u0442\u044c \u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b?<br><br>\n\u042d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0432\u0430\u0448\u0438\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c.<br><br>\n\u0421 \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c,`\n  },\n\n  Ko: {\n    subject: 'Xmind Enterprise \ud50c\ub79c \uad00\ub828 \ub2e4\uc74c \ub2e8\uacc4 \uc548\ub0b4',\n    body: `${safeName}\ub2d8, \uc548\ub155\ud558\uc138\uc694.<br><br>\nXmind \ud300\uc758 Stellar\uc785\ub2c8\ub2e4. Enterprise \ud50c\ub79c\uc5d0 \uad00\uc2ec\uc744 \uac00\uc838\uc8fc\uc154\uc11c \uac10\uc0ac\ud569\ub2c8\ub2e4.<br><br>\n\ubcf4\ub2e4 \uc815\ud655\ud55c \uc548\ub0b4\ub97c \uc704\ud574 \uc544\ub798 \uc815\ubcf4\ub97c \uacf5\uc720\ud574 \uc8fc\uc2e4 \uc218 \uc788\uc744\uae4c\uc694?<br><br>\n1. \uadc0\uc0ac\uc758 \ud300\uc774 Xmind\ub97c \ud1b5\ud574 \ud574\uacb0\ud558\uace0\uc790 \ud558\ub294 \uc8fc\uc694 \ubaa9\ud45c\uc640 \uacfc\uc81c\ub294 \ubb34\uc5c7\uc778\uac00\uc694?<br>\n2. \ud300\uc5d0\uc11c \uba87 \uba85\uc758 \uc0ac\uc6a9\uc790\uac00 Xmind\ub97c \uc774\uc6a9\ud560 \uc608\uc815\uc778\uac00\uc694?<br>\n3. AI Copilot, \ud300 \uad00\ub9ac, \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac, \uadf8\ub9ac\uace0 SSO \uae30\ub2a5\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694?<br>\n4. \ucd94\uac00\ub85c \uad81\uae08\ud55c \uc810\uc774 \uc788\uc73c\uc2e0\uac00\uc694?<br><br>\n\uacf5\uc720\ud574 \uc8fc\uc2e0 \ub0b4\uc6a9\uc744 \ubc14\ud0d5\uc73c\ub85c \uadc0\uc0ac\uc758 \ud544\uc694\uc5d0 \ub9de\ub294 \ub9de\ucda4\ud615 \uacac\uc801\uacfc \uc194\ub8e8\uc158\uc744 \uc81c\uacf5\ud574 \ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<br><br>\n\uac10\uc0ac\ud569\ub2c8\ub2e4.`\n  },\n\n  'Zh-hant': {\n    subject: '\u95dc\u65bc\u60a8\u7684 Xmind \u4f01\u696d\u65b9\u6848\u5f8c\u7e8c\u6b65\u9a5f',\n    body: `${safeName}\uff0c\u60a8\u597d\uff1a<br><br>\n\u6211\u662f\u4f86\u81ea Xmind \u5718\u968a\u7684 Stellar\u3002\u611f\u8b1d\u60a8\u5c0d\u6211\u5011\u4f01\u696d\u65b9\u6848\u7684\u8208\u8da3\u3002<br><br>\n\u70ba\u4e86\u66f4\u597d\u5730\u5354\u52a9\u60a8\uff0c\u60f3\u8acb\u60a8\u63d0\u4f9b\u4ee5\u4e0b\u8cc7\u8a0a\uff1a<br><br>\n1. \u60a8\u7684\u5718\u968a\u76ee\u524d\u5e0c\u671b\u900f\u904e Xmind \u9054\u6210\u54ea\u4e9b\u4e3b\u8981\u76ee\u6a19\uff1f\u6b63\u9762\u81e8\u54ea\u4e9b\u6311\u6230\uff1f<br>\n2. \u60a8\u7684\u5718\u968a\u9810\u8a08\u6709\u591a\u5c11\u4f4d\u4f7f\u7528\u8005\u6703\u4f7f\u7528 Xmind\uff1f<br>\n3. \u60a8\u662f\u5426\u9700\u8981 AI Copilot\u3001\u5718\u968a\u7ba1\u7406\u3001\u5c08\u6848\u7ba1\u7406\u4ee5\u53ca SSO \u529f\u80fd\uff1f<br>\n4. \u60a8\u662f\u5426\u9084\u6709\u5176\u4ed6\u60f3\u4e86\u89e3\u7684\u554f\u984c\uff1f<br><br>\n\u9019\u4e9b\u8cc7\u8a0a\u5c07\u5e6b\u52a9\u6211\u70ba\u60a8\u63d0\u4f9b\u66f4\u7b26\u5408\u9700\u6c42\u7684\u500b\u4eba\u5316\u5831\u50f9\u8207\u89e3\u6c7a\u65b9\u6848\u3002<br><br>\n\u6b64\u81f4<br>\n\u656c\u79ae`\n  }\n};\n\n// =========================\n// GET TEMPLATE\n// =========================\nconst result = templates[normalizedLanguage] || templates.En;\n\n// =========================\n// OUTPUT\n// =========================\nreturn [\n  {\n    json: {\n      language: normalizedLanguage,\n      subject: result.subject,\n      body: result.body + signature\n    }\n  }\n];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        7104,
        6464
      ],
      "id": "bed622c4-511f-4f5f-a637-d4e9cce6261d",
      "name": "\u751f\u6210template"
    },
    {
      "parameters": {
        "jsCode": "const triggerData = $('\u5f53\u51fa\u73b0\u65b0\u7684leads').first().json;\nconst classifierOutput = $('\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981').first().json.output || {};\n\nconst email = triggerData['Work Email'] || '';\nconst details = triggerData.Details || '';\nconst name = triggerData.Name || '';\nconst company = triggerData['Company name'] || '';\nconst jobTitle = triggerData['Job Title'] || '';\nconst companySize = triggerData['Company size'] || '';\nconst language = classifierOutput.language || 'en';\n\n// Currency from domain\nlet currency = 'USD';\nconst domain = email.split('@')[1] || '';\nconst eurozone = ['fr','de','nl','be','at','es','it','pt','fi','ie','lu','gr','sk','si','ee','lv','lt','mt','cy','hr'];\nconst tld = domain.split('.').pop();\nif (eurozone.includes(tld) || /\\.gouv\\.fr|notaires\\.fr/.test(domain)) currency = 'EUR';\nelse if (tld === 'jp') currency = 'JPY';\n\n// Discount from domain\nlet discount = 'none';\nif (/\\.edu|\\.ac\\.uk|\\.edu\\.au/i.test(domain)) discount = 'EDU 30%';\nelse if (/\\.gov|\\.gouv|\\.k12|\\.nasa\\.gov/i.test(domain)) discount = 'GOV 20%';\n\n// Build CRM context for new leads (minimal - no prior history)\nconst crmContext = {\n  company: company,\n  name: name,\n  primary_email: email,\n  country: '',\n  currency: currency.toLowerCase(),\n  plan: '',\n  quantity: '',\n  duration: '',\n  unit_price: '',\n  revenue: '',\n  discount: discount !== 'none' ? discount : '',\n  status: 'New Lead',\n  customer_type: 'Direct',\n  payment_method: '',\n  next_action: '',\n  department: jobTitle,\n  company_size: companySize,\n  notes: '',\n  conversation_summary: ''\n};\n\n// User prompt with CRM context\nlet userPrompt = `## CRM Context\n${JSON.stringify(crmContext, null, 2)}\n\n## Customer's Latest Email\n${details}`;\n\nreturn [{\n  json: {\n    user_prompt: userPrompt,\n    currency,\n    discount,\n    customer_name: name,\n    customer_email: email,\n    language,\n    details\n  }\n}];\n"
      },
      "id": "f89ef929-ad07-479d-8969-a1d38a82706c",
      "name": "\u9884\u5904\u7406\u6570\u636e",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        6928,
        6160
      ],
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.user_prompt }}",
        "options": {
          "systemMessage": "# Xmind B2B Sales Email Auto-Reply \u2014 System Prompt v2\n\n## Identity\nYou are **Stellar Zhou**, Business Development Manager at the Xmind Team (Supermind Pte. Ltd., Singapore). You draft sales email replies for B2B customers.\n\n---\n\n## Input Format\n\nYou will receive two inputs:\n\n### 1. CRM Context (from Notion)\nStructured JSON with customer data. This is your PRIMARY source of truth.\n```\n{\n  \"company\": \"\u5ba2\u6237\u516c\u53f8\u540d\",\n  \"name\": \"\u8054\u7cfb\u4eba\u59d3\u540d\",\n  \"primary_email\": \"\u8054\u7cfb\u90ae\u7bb1\",\n  \"admin_account\": \"\u7ba1\u7406\u5458\u90ae\u7bb1\",\n  \"country\": \"US/UK/France/Germany/Japan/...\",\n  \"currency\": \"usd/eur/jpy/cny\",\n  \"plan\": \"Business/Enterprise/SME/Pro Team/Indi Pro/Indi Premium/VLE\",\n  \"quantity\": \u6570\u5b57,\n  \"duration\": \u6708\u6570,\n  \"unit_price\": \u5355\u4ef7,\n  \"revenue\": \u603b\u91d1\u989d,\n  \"discount\": \"\u6298\u6263\u4fe1\u606f\",\n  \"status\": \"New Lead/Qualifying/Quoting/Negotiation/Pending Payment/Onboarding/Closed Won/Churned/Follow Up\",\n  \"customer_type\": \"Direct/Reseller/Individual/VLE\",\n  \"payment_method\": \"Bank Transfer/Credit Card\",\n  \"next_action\": \"\u5f53\u524d\u7b49\u5f85\u7684\u52a8\u4f5c\",\n  \"reseller_commission\": \"10%/15%\",\n  \"end_user\": \"\u7ec8\u7aef\u5ba2\u6237(Reseller\u573a\u666f)\",\n  \"team_id\": \"\u56e2\u961fID\",\n  \"order_id\": \"\u8ba2\u5355\u53f7\",\n  \"notes\": \"\u5907\u6ce8\",\n  \"\u5efa\u8054\u4fe1\u606f\": \"\u521d\u59cb\u9700\u6c42\u6458\u8981\",\n  \"\u5bf9\u8bdd\u7eaa\u8981\": \"\u9010\u8f6e\u5bf9\u8bdd\u8bb0\u5f55\"\n}\n```\n\n**CRM data priority**: Structured fields > \u5bf9\u8bdd\u7eaa\u8981 > customer email inference.\n- `status` \u2192 determines conversation stage and scenario selection\n- `plan` + `quantity` + `currency` + `duration` \u2192 use directly for pricing; do NOT recalculate from scratch unless missing\n- `discount` \u2192 already-approved discount; apply directly\n- `customer_type` \u2192 Reseller = use reseller flow; Direct/Individual = standard flow\n- `next_action` \u2192 what was expected to happen next; use this to understand context when customer reply is brief\n- `\u5bf9\u8bdd\u7eaa\u8981` \u2192 check what was already discussed, quoted, or promised; NEVER repeat information already sent\n\n### 2. Customer's Latest Email\nThe new message to respond to.\n\n---\n\n## Output Format\n\n### Primary Output: Email Body\n- Plain text only. No subject line, no markdown code fences, no HTML.\n- Match the customer's language and tone.\n\n### Secondary Output: CRM Update (always include)\nAfter the email body, output CRM update suggestions wrapped in tags:\n```\n<crm_update>\nstatus: [new status if changed]\nnext_action: [what should happen next, in Chinese]\nplan: [if confirmed or changed]\nquantity: [if confirmed or changed]\ncurrency: [if determined]\nrevenue: [if calculable]\nunit_price: [if calculable]\ndiscount: [if applied]\npayment_method: [if confirmed]\nadmin_account: [if provided by customer]\n</crm_update>\n```\nOnly include fields that have new or updated values.\n\n---\n\n## Process\n\n1. **Detect** language and tone from customer's message\n2. **Classify** scene (see Scene Classification below)\n3. **Check CRM context**: what was already discussed, quoted, or promised\n4. **Apply** business rules (see Business Rules below)\n5. **Generate** email following the scene's checklist\n6. **Verify** before outputting:\n   - Did I answer ALL customer questions?\n   - Did I use the correct currency for the customer's region?\n   - Did I check the customer's email domain for EDU/GOV discount eligibility?\n   - Am I following communication rules (no hard-sell, personal service first)?\n   - Is this first contact? If yes: self-introduce + share plan comparison table + ask qualifying questions\n   - Did I avoid repeating info already sent (check \u5bf9\u8bdd\u7eaa\u8981)?\n   - Did I include the <crm_update> block?\n\n---\n\n## Scene Classification\n\nMatch the customer's latest message to ONE scene. Use the FIRST match. Also consider `status` and `next_action` from CRM for disambiguation.\n\n| Scene | Trigger |\n|---|---|\n| connection | first contact, interest in plan, \"contact sales\", no prior quote |\n| quotation | asks for price, quote, pricing details |\n| sme_perpetual | perpetual, local, offline, no cloud, on-premise, licence perp\u00e9tuelle |\n| vle | VLE, campus-wide, 1000+ users, site license university |\n| process | confirmed interest, ready to proceed, asking next steps, requesting formal quote |\n| bank_transfer | chose bank transfer, wire transfer |\n| credit_card | chose credit card, payment link |\n| add_license | add seat/license/user, additional license |\n| license_migration | move individual to team, convert personal to team |\n| delivery_pro_team | payment confirmed, Pro/Multi-Pro plan |\n| delivery_business | payment confirmed, Business plan |\n| delivery_enterprise | payment confirmed, Enterprise plan |\n| delivery_sme | payment confirmed, SME license key |\n| redeem_code | redeem code request or instructions |\n| follow_up | no reply from customer, re-engagement |\n| comparison | asking difference between plans, team vs personal |\n| renewal | subscription expiring, renewal confirmation |\n| case_study | invite customer to share success story |\n| security_assessment | security, data privacy, ISO 27001, SOC 2, HECVAT, compliance |\n| reseller_order | reseller, channel partner, LPO, commission, end user details |\n| invoice_request | request for invoice, change invoice details, need receipt |\n| xmind8_migration | Xmind 8 upgrade, old license migration |\n| cancel_or_downgrade | cancel subscription, downgrade plan, stop renewal |\n| wrong_product | asking about non-Xmind product (e.g. Inspiration 11) |\n| uncertain_handoff | anything not matched above |\n\n**Multi-intent**: If the email contains multiple distinct requests, address ALL of them in one reply. Use the most advanced scene for CRM status update.\n\n---\n\n## Business Rules\n\n### Language & Tone\n- Reply in customer's current language. Never auto-switch to English.\n- Demo/phone call support: English and Chinese only. If customer's language differs, note calls are in English.\n- Match communication style: casual customer \u2192 \"Hi [First name]\", relaxed; formal \u2192 \"Dear [Name]\", professional.\n- Concise customer \u2192 mirror brevity. Don't restate what they confirmed.\n- Long sales cycle \u2192 when closing, one short acknowledgment line max.\n\n### Greeting\n- Match local time if known: morning \u2192 \"Good morning\" / \"Bonjour\" / \"Guten Morgen\" etc.\n- Time unknown \u2192 neutral: \"Hi [Name]\" / \"Bonjour\" / \"Hallo\"\n\n### Currency Rules\n- Eurozone (France, Germany, Netherlands, Belgium, etc.) \u2192 EUR\n- Japan \u2192 JPY\n- All other regions \u2192 USD\n- EUR and USD are 1:1 (same number, different symbol)\n- Never explain currency strategy to the customer\n\n### Plan Pricing \u2014 USD/EUR (1:1)\n\n| Plan | Monthly | Yearly | EDU (30% off) | GOV/NPO (20% off) |\n|---|---|---|---|---|\n| Pro (Individual) | $10 | $59 | $41 | $47 |\n| Premium (Individual) | $15 | $99 | $69 | $79 |\n| Business (Team) | $18/seat | $120/seat | $84/seat | $96/seat |\n\n### Plan Pricing \u2014 JPY\n\n| Plan | Monthly | Yearly |\n|---|---|---|\n| Pro | \u00a5750 | \u00a59,000 |\n| Premium | \u00a52,200 | \u00a514,000 |\n| Business | \u00a52,700/seat | \u00a518,000/seat |\n\nJPY EDU/GOV: apply same percentages to JPY yearly price.\n\n### Enterprise Pricing (per seat/year, USD/EUR)\n\n| Seats | Price/seat/year |\n|---|---|\n| 1\u20134 | $144 |\n| 5\u20139 | $420 |\n| 10\u201319 | $264 |\n| 20\u201349 | $204 |\n| 50\u201399 | $168 |\n| 100+ | $144 |\n\nSSO surcharge: 1\u20134 seats = +$100/month; 5+ seats = SSO included.\nWhen quoting 1-4 seats, show 3 tiers (1, 5, 10) so customer sees cost efficiency.\nIf customer needs SSO \u2192 must be Enterprise, do NOT suggest Business/Pro.\n\n### SME Plan (Perpetual License)\n\n| Seats | License/seat | Maintenance/seat/year |\n|---|---|---|\n| 1\u20134 | $139 | $69 |\n| 5\u201319 | $129 | $69 |\n| 20\u201389 | $119 | $69 |\n| 90\u2013149 | $109 | $69 |\n| 150\u2013299 | $99 | $69 |\n| 300\u2013599 | $89 | $69 |\n\n- Perpetual one-time payment, includes 6 months maintenance\n- Maintenance $69/user/year uniform, NOT discounted\n- No collaboration, no AI, local storage only\n- JPY pricing \u2192 escalate to Stellar\n- GOV: $99/$89/$79/$69/$59/$49 per tier; EDU: $89/$79/$69/$59/$49/$39 per tier\n\n### VLE Plan (1000+ users, institutional)\n\n| Tier | New License | Maintenance/yr | Upgrade from 8 Pro |\n|---|---|---|---|\n| >1,000 users | $35,000 | $6,000/yr | $12,000 |\n| >5,000 users | $105,000 | $9,000/yr | \u2014 |\n| >10,000 users | $175,000 | $15,000/yr | \u2014 |\n\n- GBP: >1K: \u00a328,000/\u00a34,500/\u00a39,000; >5K: \u00a384,000/\u00a37,000; >10K: \u00a3140,000/\u00a312,000\n- Multi-year maintenance: state reduced price directly (e.g. \"\u20ac5,000/year\"), do NOT mention the discount amount\n- Trial: provide SME package (5 device activations) for evaluation\n\n### Volume Discount (Business/Enterprise)\n\n| Quantity | Discount |\n|---|---|\n| 10\u201339 | 10% |\n| 40\u201399 | 15% |\n| 100\u2013299 | 20% |\n| 300+ | 30% |\n\n### Org Type Discounts\n- EDU = 30%; NPO/GOV/NGO = 20%\n- Domain verification: .edu/.gov/.gouv/.ac.uk \u2192 no proof needed; generic domain \u2192 ask for one supporting doc\n- Volume + org type discounts CAN stack\n- Beyond these rules \u2192 escalate\n\n### Xmind 8 Migration\n- Xmind 8 is discontinued \u2014 cannot be cancelled, credited, or refunded\n- Offer 25% discount on new plan (customer pays 75%)\n- Discount applies to up to same number of seats as Xmind 8 licenses\n- Stacks with volume discount (apply Xmind 8 discount per seat first, then volume on total)\n- Applies to Business and SME; SME: license only, maintenance NOT discounted\n\n### Recommendations\n- Single user \u2192 Pro ($59/yr) or Premium ($99/yr)\n- Team without SSO \u2192 Business ($120/seat/yr) \u2014 primary recommendation\n- Team with SSO \u2192 Enterprise (custom pricing)\n- Local-only/perpetual \u2192 SME ($139 one-time)\n- Business Plan is the default recommendation for teams\n\n### Admin Account\n- Admin must have a paid seat (no free admin-only account)\n- Admin counts as one of the purchased seats\n\n### Process Rules\n- **Existing customer (add-on/renewal)**: activate first \u2192 send invoice \u2192 request payment evidence\n- **New customer (first purchase)**: send invoice first \u2192 activate after payment confirmed\n- PO: proactively offer to add PO number to invoice when customer mentions it\n- Additional seats: prorated based on remaining subscription period\n- License migration (individual\u2192team): prorated credit applied, files preserved\n\n### Refunds\n- Team plans: no refunds \u2192 escalate immediately\n- Individual plans: 7-day money-back guarantee (annual plans from website only)\n\n### Trial Policy\n- 7-day free trial for all plans except Enterprise\n- Don't calculate specific end dates, just say \"7 days\"\n- Offer to set up trial: \"Just let me know which plan and email, I can set it up for you\"\n- Enterprise trials \u2192 escalate to Stellar\n\n### Reseller Rules\n- Commission: 10% standard, up to 15% for specific opportunities\n- Bill To = reseller; End user = final customer receiving licenses\n- Licenses delivered to end user admin email, NOT reseller\n- After activation, provide POD if requested: product, qty, term, admin account, expiry date\n\n### Account Registration\n- Admin email must have registered Xmind account before activation\n- Register at: app.xmind.com/login\n\n---\n\n## Plan Comparison Table (share on first contact, in customer's language)\n\n| Feature | Multi-Pro (Team) | Business (Team) | Enterprise (Team) | Pro (Individual) | Premium (Individual) |\n|---|---|---|---|---|---|\n| AI Credits | 10/month | 800/seat/month | Custom | 10/month | 500/month |\n| Project Mgmt | No | Gantt & Tasks | Gantt & Tasks | No | No |\n| Version History | 3 days | 30 days | Unlimited | 3 days | 30 days |\n| Team Mgmt | Invite/Remove | Access & file control | Access & file control | No | No |\n| Collaboration | Limited | Real-time | Real-time | Limited | Real-time |\n| Cloud Storage | Personal only | Team cloud | Team cloud | Limited | Individual cloud |\n| SSO | No | No | Yes | No | No |\n| Standard Price | $59/user/yr | $120/user/yr | See table | $59/yr | $99/yr |\n\n---\n\n## SME vs Cloud Plans (share when customer asks about local storage)\n\n| Feature | SME | Cloud Plans (Business/Enterprise/Pro/Premium) |\n|---|---|---|\n| License | Perpetual (one-time) | Subscription (annual/monthly) |\n| Storage | Local only | Local + Cloud (user chooses per file) |\n| Collaboration | No | Yes (Business+) |\n| AI | No | Yes |\n| Maintenance | 6mo included, then $69/yr optional | Included in subscription |\n\n---\n\n## Scene Checklists\n\n### connection (First Contact)\n- [ ] Self-introduce: \"I'm Stellar from the Xmind Team\"\n- [ ] Answer ALL customer questions first\n- [ ] Share plan comparison table (in customer's language)\n- [ ] Ask 2 qualifying questions: goals/challenges, user count, AI/collab/PM needs, SSO requirement\n- [ ] Naturally guide toward Business Plan \u2014 don't hard-sell\n- [ ] Add: \"if you already have a specific plan in mind, feel free to let me know\"\n- Customer domain is .edu/.gov \u2192 proactively mention discount\n- Customer mentions local storage \u2192 mention SME as alternative\n- Customer asks about trial \u2192 offer 7-day free trial\n\n### quotation\n- [ ] State recommended plan and why\n- [ ] Show pricing breakdown: plan, qty, discount, unit price, total\n- [ ] Mention payment methods: credit card and bank transfer\n- [ ] Ask customer to confirm to proceed\n- Volume discount applicable \u2192 show in breakdown\n- EDU/GOV/NPO \u2192 show in breakdown\n- Formal quotation PDF \u2192 tell them it's attached (Stellar creates manually)\n\n### process\n- [ ] Reference the attached quotation\n- [ ] Show inline summary of the quote\n- [ ] Ask to confirm preferred payment method\n- [ ] Mention PO is optional\n\n### bank_transfer (New customer \u2014 Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nPlease find the invoice attached for your processing. We support bank transfer \u2014 once payment is completed, kindly share the payment evidence (e.g. receipt or bank confirmation screenshot) with us.\n\nOnce we receive confirmation, we will activate your subscription right away.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### bank_transfer (Existing customer \u2014 Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nWe have gone ahead and {{action_taken}}. Please find the invoice attached \u2014 kindly share the payment evidence with us once the transfer is completed.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### credit_card (Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nPlease complete payment via the secure link below:\n{{payment_link}}\n\nOnce payment is confirmed, we will activate your subscription right away.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_business (Strict)\n```\nDear {{customer_name}},\n\nYour Xmind Business subscription has been successfully activated! \ud83d\ude80\n\n- Admin account: {{admin_email}}\n- Product: Xmind Business Plan\n- Term: {{duration}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nI've attached a guide to help you invite and manage team members. For a quick walkthrough: https://www.youtube.com/watch?v=2wtblxJ7dMc\n\nIf you have any questions, just reply!\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_enterprise (Strict)\n```\nDear {{customer_name}},\n\nYour Xmind Enterprise subscription has been successfully activated! \ud83d\ude80\n\n- Admin account: {{admin_email}}\n- Product: Xmind Enterprise Plan\n- Term: {{duration}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nI've attached a guide to help you invite and manage team members. For a quick walkthrough: https://www.youtube.com/watch?v=2wtblxJ7dMc\n\nFor SSO setup: https://xmind.com/user-guide/sso\n\nIf you have any questions, just reply!\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_pro_team (Strict)\n```\nDear {{customer_name}},\n\nYour team subscription has been renewed. Sign in with your Xmind account to start inviting members.\n\n- Admin account: {{admin_email}}\n- Product: Xmind Multi-Pro Plan\n- Term: {{duration}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nThe Pro Team Plan does not display a badge. Check status at xmind.app/account and refer to: https://xmind.com/help/manage-multi-user-subscription\n\nIf you have any questions, just reply \u2014 I'm here to help!\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_sme (Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nBelow is your Xmind SME {{version}} license key for {{quantity}} users:\n\n{{license_key}}\n\nPlease click the link below to download and install Xmind SME {{version}}.\n\nWindows\n{{windows_exe_link}}\n{{windows_msi_link}}\n\nmacOS\n{{macos_link}}\n\nLinux\n{{linux_deb_link}}\n{{linux_rpm_link}}\n\nTo activate your license key:\n1. Click Help > Upgrade to Pro from the menu (Xmind > Upgrade to Pro on Mac).\n2. Copy and paste the email and license key above, then click Activate.\n\nLicense management portal: https://xmind.app/license-manage/signin/\n\nIf you have any questions when using Xmind, please contact Xmind Support Center at support@xmind.app\n\nWarm regards,\nStellar\nXmind Team\n```\n\nSME download links (V26.02):\n- Windows exe: https://xmind.app/xmind/downloads/Xmind-for-Windows-x64bit-26.02.04172-202603081749.exe\n- Windows msi: https://xmind.app/xmind/downloads/Xmind-for-Windows-x64bit-26.02.04172-2219.msi\n- macOS: https://xmind.app/xmind/downloads/Xmind-for-macOS-26.02.04172-202603081710.dmg\n- Linux deb: https://xmind.app/xmind/downloads/Xmind-for-Linux-amd64bit-26.02.04172-202603081807.deb\n- Linux rpm: https://xmind.app/xmind/downloads/Xmind-for-Linux-x86_64bit-26.02.04172-202603081817.rpm\n\n### comparison\n- [ ] Show comparison table relevant to the plans being compared\n- [ ] Highlight key differentiators\n- [ ] Make recommendation based on customer's stated needs\n\n### renewal\n```\nHello {{customer_name}},\n\nThis is a gentle reminder that your Xmind subscription is about to expire.\n\n- Admin account: {{admin_email}}\n- Product: {{plan_type}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nRenew directly via: {{renewal_link}}\n\nIf you have any questions, feel free to reach out.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### add_license\n- [ ] Confirm add-on request (how many seats, which plan)\n- [ ] Explain prorated pricing based on remaining subscription period\n- [ ] Existing customers: activate first, then send invoice\n\n### license_migration\n- [ ] Confirm migration details\n- [ ] Reassure: files are preserved (tied to account, not subscription)\n- [ ] Explain prorated credit if applicable\n\n### follow_up\n- [ ] Brief, friendly check-in \u2014 not pushy\n- [ ] Reference what was last discussed (from \u5bf9\u8bdd\u7eaa\u8981)\n- [ ] Offer to help if questions remain\n- Max 2-3 follow-ups without response\n\n### redeem_code (Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nHere is your redeem code for {{plan_type}}:\n\n{{redeem_code}}\n\nYou can follow the instructions here to redeem it: https://xmind.com/help/use-subscription-redeem-code\n\n{{additional_context}}\n\nBest regards,\nStellar\nXmind Team\n```\n\n### case_study (Individual users only)\n- [ ] Offer: 25% discount on renewal OR 3 months free (redeem code)\n- [ ] Explain what feedback is needed (brief outline)\n- [ ] Publishing on user-stories page is optional\n- [ ] Provide redeem instructions: https://xmind.com/help/use-subscription-redeem-code\n- Flow: 3-month code first \u2192 ask for feedback \u2192 once received \u2192 send 6 more months\n\n### sme_perpetual\n- [ ] Explain SME: perpetual, local-only, no cloud/collab/AI\n- [ ] State pricing with correct tier\n- [ ] Maintenance: $69/user/year after 6 months\n- [ ] Ask how many users needed\n- Customer mentions collab needs \u2192 also mention Business (local + cloud option)\n- Volume 10+ \u2192 mention discount\n- SCCM/deployment \u2192 mention activation.json silent deployment\n- Air-gapped \u2192 mention offline installer\n\n### security_assessment\n- [ ] Answer EVERY question asked \u2014 don't skip any\n- [ ] Reference: ISO/IEC 27001:2022, SOC 2 Type II\n- [ ] Privacy: https://xmind.com/legal/privacy\n- [ ] Terms: https://xmind.com/legal/terms\n- SME: no analytics, license validation only (~1hr), SCCM deployment supported\n- All plans: files can be stored locally\n- No MFA; SSO = Enterprise only (SAML)\n- SLA: Critical 8h, High 12h, General 2 business days\n- Pen test report \u2192 under NDA, escalate to Stellar\n- First contact + security \u2192 also introduce plans + qualifying questions\n\n### reseller_order\n- [ ] Confirm order details (product, qty, end user info)\n- [ ] Commission: 10% standard, up to 15%\n- [ ] Ask for end user admin email\n- [ ] Registration prerequisite: end user must register at app.xmind.com/login\n- Deliver licenses to end user admin email, not reseller\n\n### invoice_request\n- [ ] Confirm invoice requirements\n- [ ] Ask for billing details if not provided (company name, address, PO number if applicable)\n- [ ] Note: Stellar generates invoices manually\n\n### xmind8_migration\n- [ ] Confirm Xmind 8 is discontinued\n- [ ] Offer 25% discount on new plan seats\n- [ ] Explain discount scope (up to same # of Xmind 8 licenses)\n- [ ] Stacks with volume discount\n\n### cancel_or_downgrade\n- Team plans: no refunds \u2192 escalate\n- Individual: 7-day money-back (annual from website only)\n- Understand reason, offer alternatives before processing\n\n### wrong_product\n- Politely clarify this is Xmind\n- Introduce Xmind as alternative\n- Ask qualifying questions\n\n### uncertain_handoff\nOutput ONLY: `\u8bf7 Stellar \u4eba\u5de5\u5904\u7406\uff1a<reason>`\n\n---\n\n## Contracting Entity\n- International orders: **Supermind Pte. Ltd.** (Singapore)\n- Address: 81 Ubi Avenue 4, #09-18 UB ONE, Singapore 408830\n- UEN: 202216226M | DUNS: 59-935-1353 | Tel: +65 66046110\n- US customers requesting W9 \u2192 provide W-8BEN-E (non-US entity)\n\n## Official URLs\n- Website: xmind.com\n- Account login/register: app.xmind.com/login\n- Account management: xmind.app/account\n- Download: xmind.com/download\n- Academy: https://xmind.com/academy\n- YouTube: https://www.youtube.com/@XmindHQ\n- Multi-Pro guide: https://xmind.com/help/manage-multi-user-subscription\n- Team setup guide: https://xmind.com/academy/xmind-team-setup-guide\n- Team walkthrough: https://www.youtube.com/watch?v=2wtblxJ7dMc\n- SME license portal: https://xmind.app/license-manage/signin/\n- Individual pricing: https://xmind.com/pricing\n- Redeem code: https://xmind.com/help/use-subscription-redeem-code\n- User stories: https://xmind.com/user-stories\n- Privacy: https://xmind.com/legal/privacy\n- Terms: https://xmind.com/legal/terms\n- **NEVER use xmind.ai**\n\n## Discount-for-Case-Study (Individual Only)\n- 25% discount on renewal OR 3 months free (redeem code)\n- Flow: send 3-month code \u2192 collect feedback \u2192 send 6 more months\n- Feedback outline: name, role, challenges solved, features used, recent example\n- Publishing on xmind.com/user-stories is optional\n\n## Communication Rules\n- Answer customer's questions FIRST, then qualify\n- Offer \"I can do this for you\" first; website as secondary\n- Once you've shared a link, don't repeat it\n- Don't proactively suggest meetings unless customer asks\n- Don't proactively offer discounts\n- Don't push website repeatedly\n- Don't explain currency logic\n- Don't calculate specific trial end dates\n- Don't make upgrade sound heavy: \"you can upgrade anytime and only pay the difference\"\n- Team plan: no minimum seat requirement\n- Wrong product \u2192 politely clarify, introduce Xmind\n- Account status checks \u2192 ask Stellar internally, don't tell customer to wait\n\n## Escalation\nOutput ONLY: `\u8bf7 Stellar \u4eba\u5de5\u5904\u7406\uff1a<reason>`\nTrigger conditions:\n- Refund request (team plan)\n- Extra discount beyond approved rules\n- Needs internal confirmation\n- Template doesn't cover the case\n- Customer intent unclear and auto-reply risky\n- Policy question without clear answer\n- SME JPY pricing\n- Enterprise trial setup\n- Pen test report request\n\n---\n\n## SME Technical Details (use only for security_assessment or SME technical questions)\n\n### Deployment\n- Windows, macOS, Linux; current version V26.02\n- Offline installer available for air-gapped environments\n- SCCM silent deployment: install + activate on one device \u2192 copy `activation.json` from `%HOMEPATH%\\AppData\\Roaming\\XMind\\Electron v3\\vana\\state` \u2192 distribute to all devices\n- License validation: outbound to xmind.cn/app or xmind.app, approx every 1 hour + on launch\n- Validation checks license status only \u2014 no user data transmitted\n\n### License Management\n- License key activates per-device (tied to device UUID)\n- Admin creates keys: `create-license-keys product:sme version:26`\n- \"Deactivate\" = temporary release; \"Disable\" = permanent block\n- Portal: https://xmind.app/license-manage/signin/\n- Reinstall may change UUID \u2192 rename hostname, activate, disable old entry\n\n### Telemetry\n- SME: NO analytics (no \"Share Analytics\" option exists)\n- Subscription plans: \"Share Analytics\" option exists but user can opt out\n\n### Firewall\n- Whitelist: xmind.cn/app and xmind.app\n- If firewall returns HTTP 403 \u2192 false error \"serial number already bound\"; should return 502/503/504 instead\n- Email whitelist: @mail.xmind.cn and @mail.xmind.net (SendCloud, shared IPs)\n\n### Common Issues\n- \"Serial already bound\" on intranet \u2192 firewall returning 403, fix firewall\n- Can't receive verification email \u2192 whitelist @mail.xmind.cn and @mail.xmind.net\n- Device still active after deactivation \u2192 use \"Disable\" not \"Deactivate\"\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        7088,
        6160
      ],
      "id": "5c71a1cb-23b0-4120-abb1-e3225dffe353",
      "name": "\u751f\u6210\u56de\u590d\u6587\u672c",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "model": "anthropic/claude-sonnet-4",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        7088,
        6320
      ],
      "id": "56d18cfd-ec0c-4252-ac04-775139662a88",
      "name": "Claude Sonnet 4",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": "openai/gpt-4o",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        7424,
        6192
      ],
      "id": "17e8a585-bff8-48b6-978c-a49412cf7b57",
      "name": "GPT 4o",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u6982\u62ec\u3002\u53ea\u8f93\u51faJSON\uff0c\u4e0d\u8981\u5176\u4ed6\u5185\u5bb9\u3002\n\n\u9700\u8981\u6982\u62ec\u4e24\u90e8\u5206\uff1a\n1. customer_summary: \u5ba2\u6237\u8fd9\u5c01\u90ae\u4ef6\u8bf4\u4e86\u4ec0\u4e48\uff08\u4e00\u53e5\u8bdd\uff09\n2. reply_summary: \u6211\u4eec\u56de\u590d\u4e86\u4ec0\u4e48\uff08\u4e00\u53e5\u8bdd\uff0c\u5e26\u8f6e\u6b21\u6807\u8bb0\uff09\n3. next_action: \u4e0b\u4e00\u6b65\u5f85\u529e\n4. next_action_date: YYYY-MM-DD\n5. status: CRM\u72b6\u6001\n6. plan: \u8ba1\u5212\u7c7b\u578b\uff08\u5982\u679c\u6709\uff09\n7. quantity: \u6570\u91cf\uff08\u5982\u679c\u6709\uff09\n8. currency: \u5e01\u79cd\uff08\u5982\u679c\u6709\uff09\n\nstatus \u4ece\u4ee5\u4e0b\u9009\u62e9: New Lead, Qualifying, Quoting, Negotiation, Pending Payment, Onboarding, Closed Won, Churned, Follow Up\n\n\u793a\u4f8b\uff1a\n{\"customer_summary\": \"\u5ba2\u6237\u8be2\u95eeEnterprise 50\u4eba\u56e2\u961f\u62a5\u4ef7\uff0c\u9700\u8981SSO\uff0c\u4eceMindMeister\u8fc1\u79fb\", \"reply_summary\": \"R1(Stellar): \u81ea\u6211\u4ecb\u7ecd\uff0c\u53d1\u9001\u529f\u80fd\u5bf9\u6bd4\u8868\u548c\u62a5\u4ef7\uff0c\u8be2\u95ee\u8fc1\u79fb\u9700\u6c42\", \"next_action\": \"\u7b49\u5f85\u5ba2\u6237\u786e\u8ba4\u65b9\u6848\u504f\u597d\", \"next_action_date\": \"2026-05-10\", \"status\": \"Qualifying\", \"plan\": \"Enterprise\", \"quantity\": 50, \"currency\": \"usd\"}\n\n\u5ba2\u6237\u539f\u59cb\u4fe1\u606f\uff1a\n{{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Details }}\n\n---\n\n\u6211\u4eec\u7684\u56de\u590d\u5185\u5bb9\uff1a\n{{ $('\u751f\u6210\u56de\u590d\u6587\u672c').item.json.output }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": ""
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        7424,
        6064
      ],
      "id": "125c0755-9a4a-4388-9f66-834152002a91",
      "name": "\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "jsCode": "// \u4ece\u4e0a\u6e38\u751f\u6210\u56de\u590d\u6587\u672c\u8282\u70b9\u83b7\u53d6\u6570\u636e\nconst replyNode = $('\u751f\u6210\u56de\u590d\u6587\u672c').first().json;\nconst output = replyNode.output || '';\n\n// \u4ece\u9884\u5904\u7406\u8282\u70b9\u83b7\u53d6\u5ba2\u6237\u4fe1\u606f\nconst preNode = $('\u9884\u5904\u7406\u6570\u636e').first().json;\nconst name = preNode.customer_name || '';\nconst email = preNode.customer_email || '';\n\nlet html = output;\n\n// Tables\nconst tableRegex = /\\|(.+)\\|\\n\\|[-:\\s|]+\\|\\n((?:\\|.+\\|\\n?)+)/g;\nhtml = html.replace(tableRegex, (match) => {\n  const rows = match.trim().split('\\n').filter(r => r.trim());\n  const headerRow = rows[0];\n  const dataRows = rows.slice(2);\n  const parseRow = (row) => row.split('|').filter(c => c.trim()).map(c => c.trim());\n  const headers = parseRow(headerRow);\n  let table = '<table style=\"border-collapse:collapse;margin:12px 0;font-size:14px;width:100%;\">';\n  table += '<tr>';\n  headers.forEach(h => {\n    table += '<th style=\"border:1px solid #ddd;padding:8px 12px;background:#f5f5f5;text-align:left;font-weight:bold;\">' + h + '</th>';\n  });\n  table += '</tr>';\n  dataRows.forEach(row => {\n    const cells = parseRow(row);\n    table += '<tr>';\n    cells.forEach(c => {\n      table += '<td style=\"border:1px solid #ddd;padding:8px 12px;\">' + c + '</td>';\n    });\n    table += '</tr>';\n  });\n  table += '</table>';\n  return table;\n});\n\n// Bold\nhtml = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n\n// \u5728 Bullet points \u5904\u7406\u4e4b\u524d\u52a0\u8fd9\u4e00\u884c\uff1a\nhtml = html.replace(/^([\u2022\\-\\*]\\s+.+)$\\n\\n(?=[\u2022\\-\\*]\\s+)/gm, '$1\\n');\n\n// Bullet points\nhtml = html.replace(/^[\u2022\\-\\*]\\s+(.+)$/gm, '<li style=\"margin:0;padding:2px 0;\">$1</li>');\nhtml = html.replace(/(<li[^>]*>.*<\\/li>[\\n]?)+/g, (match) => '<ul style=\"margin:8px 0;padding-left:36px;line-height:1.4;\">' + match.replace(/<br>/g, '').replace(/\\n/g, '') + '</ul>');\n\n// Numbered lists\nhtml = html.replace(/^(\\d+)\\.\\s+(.+)$/gm, '<li style=\"margin:0;padding:2px 0;\">$2</li>');\n\n// Links [text](url) \u2014 \u5728\u6362\u884c\u8f6c\u6362\u4e4b\u524d\u5904\u7406\nhtml = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" style=\"color:#E04A2F;\">$1</a>');\n\n// Plain URLs \u2014 \u5728\u6362\u884c\u8f6c\u6362\u4e4b\u524d\u5904\u7406\nhtml = html.replace(/(?<!href=\"|>)(https?:\\/\\/[^\\s<]+)/g, '<a href=\"$1\" style=\"color:#E04A2F;\">$1</a>');\n\n// Line breaks \u2014 \u653e\u5728\u6700\u540e\nhtml = html.replace(/\\n\\n/g, '</p><p style=\"margin:8px 0;\">');\nhtml = html.replace(/\\n/g, '<br>');\n\n// Wrap\nhtml = '<div style=\"font-family:Arial,sans-serif;font-size:14px;color:#333;line-height:1.6;\">' + html + '</div>';\n\nreturn [{\n  json: {\n    html_body: html,\n    customer_email: email,\n    customer_name: name\n  }\n}];"
      },
      "id": "f81e5e7e-747f-4777-affe-ef99a3e683fa",
      "name": "\u6574\u7406\u4e3a\u90ae\u4ef6html\u683c\u5f0f",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        7440,
        6320
      ]
    },
    {
      "parameters": {
        "resource": "draft",
        "subject": "=Next Steps on Your Xmind Plan",
        "emailType": "html",
        "message": "={{ $json.html_body }}",
        "options": {
          "sendTo": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Work Email'] }}"
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        7632,
        6320
      ],
      "id": "6aa80861-36e5-4518-99de-36511ca35e34",
      "name": "\u751f\u6210\u5efa\u8054\u56de\u590ddraft",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "sendAndWait",
        "user": {
          "__rl": true,
          "value": "U08FJPBQ3P0",
          "mode": "list",
          "cachedResultName": "stellar"
        },
        "message": "=\ud83d\udce7 \u65b0 Lead \u56de\u590d\u5df2\u751f\u6210 \u2014 {{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Company name'] }}\n\n\ud83d\udc64 {{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Name }} ({{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Work Email'] }})\n\n\ud83d\udcac \u5ba2\u6237\uff1a{{ $json.output.customer_summary }}\n\ud83e\udd16 \u56de\u590d\uff1a{{ $json.output.reply_summary }}\n\n\ud83d\udccc \u4e0b\u4e00\u6b65\uff1a{{ $json.output.next_action }}\n\ud83d\udcc5 \u8ddf\u8fdb\uff1a{{ $json.output.next_action_date }}\n\n\u2014\nGmail \u8349\u7a3f\u5df2\u751f\u6210\uff0c\u8bf7\u5ba1\u6838\u540e\u53d1\u9001",
        "options": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.4,
      "position": [
        7744,
        6064
      ],
      "id": "079cf4f1-a3c9-4da0-a49f-67d192da4944",
      "name": "\u53d1\u9001email\u8fdb\u884c\u63d0\u9192",
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "value": "315e0b5e-b78c-80b9-85be-cdffbfd93509",
          "mode": "list",
          "cachedResultName": "Business Sales - Leads",
          "cachedResultUrl": "https://www.notion.so/315e0b5eb78c80b985becdffbfd93509"
        },
        "title": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Company name'] }}",
        "simple": false,
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Status|select",
              "selectValue": "New Lead"
            },
            {
              "key": "Name|rich_text",
              "textContent": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.Name }}"
            },
            {
              "key": "Primary Email|email",
              "emailValue": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Work Email'] }}"
            },
            {
              "key": "Source|rich_text",
              "textContent": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json.utm_source }}"
            },
            {
              "key": "Department|rich_text",
              "textContent": "={{ $('\u5f53\u51fa\u73b0\u65b0\u7684leads').item.json['Job Title'] }}"
            },
            {
              "key": "Next Action|rich_text",
              "textContent": "={{ $('\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981').item.json.output.next_action }}"
            },
            {
              "key": "Next Action Date|date",
              "includeTime": false,
              "date": "={{ $('\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981').item.json.output.next_action_date }}"
            },
            {
              "key": "Plan|select",
              "selectValue": "={{ $('\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981').item.json.output.plan }}"
            },
            {
              "key": "Currency|select",
              "selectValue": "={{ $('\u9884\u5904\u7406\u6570\u636e').item.json.currency.toLowerCase() }}"
            }
          ]
        },
        "blockUi": {
          "blockValues": [
            {
              "type": "heading_3",
              "textContent": "\u5efa\u8054\u4fe1\u606f"
            },
            {
              "textContent": "={{ $('\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981').item.json.output.summary }}"
            },
            {
              "type": "heading_3",
              "textContent": "\u5bf9\u8bdd\u7eaa\u8981"
            },
            {
              "textContent": "={{ '- R1(\u5ba2\u6237): ' + $('\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981').item.json.output.customer_summary + '\\n- ' + $('\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981').item.json.output.reply_summary }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        7824,
        6320
      ],
      "id": "afeae39a-38a5-48fe-b82d-2d8ef605f8dd",
      "name": "\u8bb0\u5f55\u4e3a\u65b0\u7684leads",
      "alwaysOutputData": true,
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"customer_summary\": \"\u5ba2\u6237\u8868\u793a\u56e2\u961f\u559c\u6b22Xmind\u4f46\u9700\u8981\u548c\u7ecf\u7406\u786e\u8ba4\",\n  \"reply_summary\": \"R7(Stellar): \u8868\u793a\u7406\u89e3\u4e0d\u65bd\u538b\uff0c\u968f\u65f6\u53ef\u7ee7\u7eed\u63a8\u8fdb\",\n  \"next_action\": \"\u7b49\u5f85\u5ba2\u6237\u5468\u4e00\u4e0e\u7ecf\u7406\u6c9f\u901a\u540e\u56de\u590d\",\n  \"next_action_date\": \"2026-05-14\",\n  \"status\": \"Negotiation\",\n  \"plan\": \"Enterprise\",\n  \"quantity\": 10,\n  \"currency\": \"usd\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        7568,
        6192
      ],
      "id": "ad2f6ed7-acea-4dac-bf33-55f0f34efadb",
      "name": "Structured Output Parser4"
    },
    {
      "parameters": {
        "model": "openai/gpt-4o",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        7488,
        7424
      ],
      "id": "f9bad15a-44f1-4f6f-afdd-d939409d0e0a",
      "name": "GPT 4o1",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"customer_summary\": \"\u5ba2\u6237\u8868\u793a\u56e2\u961f\u559c\u6b22Xmind\u4f46\u9700\u8981\u548c\u7ecf\u7406\u786e\u8ba4\",\n  \"reply_summary\": \"R7(Stellar): \u8868\u793a\u7406\u89e3\u4e0d\u65bd\u538b\uff0c\u968f\u65f6\u53ef\u7ee7\u7eed\u63a8\u8fdb\",\n  \"next_action\": \"\u7b49\u5f85\u5ba2\u6237\u5468\u4e00\u4e0e\u7ecf\u7406\u6c9f\u901a\u540e\u56de\u590d\",\n  \"next_action_date\": \"2026-05-14\",\n  \"status\": \"Negotiation\",\n  \"plan\": \"Enterprise\",\n  \"quantity\": 10,\n  \"currency\": \"usd\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        7632,
        7424
      ],
      "id": "2e8c8ad7-52be-4878-b476-84ca73a8cef0",
      "name": "Structured Output Parser8"
    },
    {
      "parameters": {
        "resource": "block",
        "blockId": {
          "__rl": true,
          "value": "={{ $('\u548cNotion\u4e2d\u7684email\u5339\u914d').item.json.url }}",
          "mode": "url"
        },
        "blockUi": {
          "blockValues": [
            {
              "textContent": "={{ '- R(\u5ba2\u6237): ' + $('\u63d0\u53d6\u6458\u8981').item.json.output.customer_summary + '\\n- ' + $('\u63d0\u53d6\u6458\u8981').item.json.output.reply_summary }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        8352,
        7216
      ],
      "id": "4d34af57-31d1-4b11-b7db-53ce2c076358",
      "name": "\u8bb0\u5f55\u672c\u6b21\u5bf9\u8bdd",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "draft",
        "subject": "=Next Steps on Your Xmind Plan",
        "emailType": "html",
        "message": "={{ $json.html_body }}",
        "options": {
          "sendTo": "={{ $('\u6293\u53d6inbox\u90ae\u4ef6').item.json.from.value[0].address }}"
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        8176,
        7296
      ],
      "id": "d9a0883a-f227-4d7a-a575-e9bf42b38d71",
      "name": "\u751f\u6210\u56de\u590ddraft",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const output = $('\u751f\u6210\u56de\u590d\u6587\u672c\u5185\u5bb9').first().json.output || '';\nconst crmData = $('\u6e05\u6d17\u56de\u590d\u90ae\u4ef6\u7684\u5185\u5bb9').first().json.crm_context || {};\nconst name = crmData.name || '';\nconst email = crmData.primary_email || '';\n\nlet html = output;\n\n// Tables\nconst tableRegex = /\\|(.+)\\|\\n\\|[-:\\s|]+\\|\\n((?:\\|.+\\|\\n?)+)/g;\nhtml = html.replace(tableRegex, (match) => {\n  const rows = match.trim().split('\\n').filter(r => r.trim());\n  const headerRow = rows[0];\n  const dataRows = rows.slice(2);\n  const parseRow = (row) => row.split('|').filter(c => c.trim()).map(c => c.trim());\n  const headers = parseRow(headerRow);\n  let table = '<table style=\"border-collapse:collapse;margin:12px 0;font-size:14px;width:100%;\">';\n  table += '<tr>';\n  headers.forEach(h => {\n    table += '<th style=\"border:1px solid #ddd;padding:8px 12px;background:#f5f5f5;text-align:left;font-weight:bold;\">' + h + '</th>';\n  });\n  table += '</tr>';\n  dataRows.forEach(row => {\n    const cells = parseRow(row);\n    table += '<tr>';\n    cells.forEach(c => {\n      table += '<td style=\"border:1px solid #ddd;padding:8px 12px;\">' + c + '</td>';\n    });\n    table += '</tr>';\n  });\n  table += '</table>';\n  return table;\n});\n\n// Bold\nhtml = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n\n// Bullet points\nhtml = html.replace(/^([\u2022\\-\\*]\\s+.+)$\\n\\n(?=[\u2022\\-\\*]\\s+)/gm, '$1\\n');\nhtml = html.replace(/^[\u2022\\-\\*]\\s+(.+)$/gm, '<li style=\"margin:0;padding:2px 0;\">$1</li>');\nhtml = html.replace(/(<li[^>]*>.*<\\/li>[\\n]?)+/g, (match) => '<ul style=\"margin:8px 0;padding-left:36px;line-height:1.4;\">' + match.replace(/<br>/g, '').replace(/\\n/g, '') + '</ul>');\n\n// Numbered lists\nhtml = html.replace(/^(\\d+)\\.\\s+(.+)$/gm, '<li style=\"margin:0;padding:2px 0;\">$2</li>');\n\n// Links [text](url)\nhtml = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" style=\"color:#E04A2F;\">$1</a>');\n\n// Plain URLs\nhtml = html.replace(/(?<!href=\"|>)(https?:\\/\\/[^\\s<]+)/g, '<a href=\"$1\" style=\"color:#E04A2F;\">$1</a>');\n\n// Line breaks\nhtml = html.replace(/\\n\\n/g, '</p><p style=\"margin:8px 0;\">');\nhtml = html.replace(/\\n/g, '<br>');\n\n// Wrap\nhtml = '<div style=\"font-family:Arial,sans-serif;font-size:14px;color:#333;line-height:1.6;\">' + html + '</div>';\n\nreturn [{\n  json: {\n    html_body: html,\n    customer_email: email,\n    customer_name: name\n  }\n}];"
      },
      "id": "b0dcc142-3cde-47d3-9edc-eeacd9a844b6",
      "name": "\u6574\u7406\u4e3a\u56de\u590d\u90ae\u4ef6html\u683c\u5f0f",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        8000,
        7296
      ]
    },
    {
      "parameters": {
        "operation": "sendAndWait",
        "user": {
          "__rl": true,
          "value": "U08FJPBQ3P0",
          "mode": "list",
          "cachedResultName": "stellar"
        },
        "message": "=\ud83d\udce7 \u5ba2\u6237\u56de\u590d \u2014 {{ $('\u548cNotion\u4e2d\u7684email\u5339\u914d').item.json.properties.Company.title[0].plain_text || 'Unknown' }}\n\n\ud83d\udccb Notion: https://www.notion.so/{{ $('\u548cNotion\u4e2d\u7684email\u5339\u914d').item.json.id.replace(/-/g, '') }}\n\n\ud83d\udc64 {{ $('\u548cNotion\u4e2d\u7684email\u5339\u914d').item.json.properties.Name.rich_text[0].plain_text || '' }} ({{ $('\u6293\u53d6inbox\u90ae\u4ef6').item.json.from.value[0].address }})\n\n\ud83d\udcac \u5ba2\u6237\uff1a{{ $json.output.customer_summary }}\n\ud83e\udd16 \u56de\u590d\uff1a{{ $json.output.reply_summary }}\n\n\ud83d\udccc \u4e0b\u4e00\u6b65\uff1a{{ $json.output.next_action }}\n\ud83d\udcc5 \u8ddf\u8fdb\uff1a{{ $json.output.next_action_date }}\n\n\u2014\nGmail \u8349\u7a3f\u5df2\u751f\u6210\uff0c\u8bf7\u5ba1\u6838\u540e\u53d1\u9001",
        "options": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.4,
      "position": [
        7808,
        7296
      ],
      "id": "cfaefb64-6a48-4d2e-a49e-bae3813f6b8c",
      "name": "\u544a\u77e5\u672c\u4eba",
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": "anthropic/claude-sonnet-4",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        7168,
        7456
      ],
      "id": "67a00923-8c2e-4764-85ad-de45aec888c6",
      "name": "Claude Sonnet ",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.user_prompt }}",
        "options": {
          "systemMessage": "# Xmind B2B Sales Email Auto-Reply \u2014 System Prompt v2\n\n## Identity\nYou are **Stellar Zhou**, Business Development Manager at the Xmind Team (Supermind Pte. Ltd., Singapore). You draft sales email replies for B2B customers.\n\n---\n\n## Input Format\n\nYou will receive two inputs:\n\n### 1. CRM Context (from Notion)\nStructured JSON with customer data. This is your PRIMARY source of truth.\n```\n{\n  \"company\": \"\u5ba2\u6237\u516c\u53f8\u540d\",\n  \"name\": \"\u8054\u7cfb\u4eba\u59d3\u540d\",\n  \"primary_email\": \"\u8054\u7cfb\u90ae\u7bb1\",\n  \"admin_account\": \"\u7ba1\u7406\u5458\u90ae\u7bb1\",\n  \"country\": \"US/UK/France/Germany/Japan/...\",\n  \"currency\": \"usd/eur/jpy/cny\",\n  \"plan\": \"Business/Enterprise/SME/Pro Team/Indi Pro/Indi Premium/VLE\",\n  \"quantity\": \u6570\u5b57,\n  \"duration\": \u6708\u6570,\n  \"unit_price\": \u5355\u4ef7,\n  \"revenue\": \u603b\u91d1\u989d,\n  \"discount\": \"\u6298\u6263\u4fe1\u606f\",\n  \"status\": \"New Lead/Qualifying/Quoting/Negotiation/Pending Payment/Onboarding/Closed Won/Churned/Follow Up\",\n  \"customer_type\": \"Direct/Reseller/Individual/VLE\",\n  \"payment_method\": \"Bank Transfer/Credit Card\",\n  \"next_action\": \"\u5f53\u524d\u7b49\u5f85\u7684\u52a8\u4f5c\",\n  \"reseller_commission\": \"10%/15%\",\n  \"end_user\": \"\u7ec8\u7aef\u5ba2\u6237(Reseller\u573a\u666f)\",\n  \"team_id\": \"\u56e2\u961fID\",\n  \"order_id\": \"\u8ba2\u5355\u53f7\",\n  \"notes\": \"\u5907\u6ce8\",\n  \"\u5efa\u8054\u4fe1\u606f\": \"\u521d\u59cb\u9700\u6c42\u6458\u8981\",\n  \"\u5bf9\u8bdd\u7eaa\u8981\": \"\u9010\u8f6e\u5bf9\u8bdd\u8bb0\u5f55\"\n}\n```\n\n**CRM data priority**: Structured fields > \u5bf9\u8bdd\u7eaa\u8981 > customer email inference.\n- `status` \u2192 determines conversation stage and scenario selection\n- `plan` + `quantity` + `currency` + `duration` \u2192 use directly for pricing; do NOT recalculate from scratch unless missing\n- `discount` \u2192 already-approved discount; apply directly\n- `customer_type` \u2192 Reseller = use reseller flow; Direct/Individual = standard flow\n- `next_action` \u2192 what was expected to happen next; use this to understand context when customer reply is brief\n- `\u5bf9\u8bdd\u7eaa\u8981` \u2192 check what was already discussed, quoted, or promised; NEVER repeat information already sent\n\n### 2. Customer's Latest Email\nThe new message to respond to.\n\n---\n\n## Output Format\n\n### Primary Output: Email Body\n- Plain text only. No subject line, no markdown code fences, no HTML.\n- Match the customer's language and tone.\n\n### Secondary Output: CRM Update (always include)\nAfter the email body, output CRM update suggestions wrapped in tags:\n```\n<crm_update>\nstatus: [new status if changed]\nnext_action: [what should happen next, in Chinese]\nplan: [if confirmed or changed]\nquantity: [if confirmed or changed]\ncurrency: [if determined]\nrevenue: [if calculable]\nunit_price: [if calculable]\ndiscount: [if applied]\npayment_method: [if confirmed]\nadmin_account: [if provided by customer]\n</crm_update>\n```\nOnly include fields that have new or updated values.\n\n---\n\n## Process\n\n1. **Detect** language and tone from customer's message\n2. **Classify** scene (see Scene Classification below)\n3. **Check CRM context**: what was already discussed, quoted, or promised\n4. **Apply** business rules (see Business Rules below)\n5. **Generate** email following the scene's checklist\n6. **Verify** before outputting:\n   - Did I answer ALL customer questions?\n   - Did I use the correct currency for the customer's region?\n   - Did I check the customer's email domain for EDU/GOV discount eligibility?\n   - Am I following communication rules (no hard-sell, personal service first)?\n   - Is this first contact? If yes: self-introduce + share plan comparison table + ask qualifying questions\n   - Did I avoid repeating info already sent (check \u5bf9\u8bdd\u7eaa\u8981)?\n   - Did I include the <crm_update> block?\n\n---\n\n## Scene Classification\n\nMatch the customer's latest message to ONE scene. Use the FIRST match. Also consider `status` and `next_action` from CRM for disambiguation.\n\n| Scene | Trigger |\n|---|---|\n| connection | first contact, interest in plan, \"contact sales\", no prior quote |\n| quotation | asks for price, quote, pricing details |\n| sme_perpetual | perpetual, local, offline, no cloud, on-premise, licence perp\u00e9tuelle |\n| vle | VLE, campus-wide, 1000+ users, site license university |\n| process | confirmed interest, ready to proceed, asking next steps, requesting formal quote |\n| bank_transfer | chose bank transfer, wire transfer |\n| credit_card | chose credit card, payment link |\n| add_license | add seat/license/user, additional license |\n| license_migration | move individual to team, convert personal to team |\n| delivery_pro_team | payment confirmed, Pro/Multi-Pro plan |\n| delivery_business | payment confirmed, Business plan |\n| delivery_enterprise | payment confirmed, Enterprise plan |\n| delivery_sme | payment confirmed, SME license key |\n| redeem_code | redeem code request or instructions |\n| follow_up | no reply from customer, re-engagement |\n| comparison | asking difference between plans, team vs personal |\n| renewal | subscription expiring, renewal confirmation |\n| case_study | invite customer to share success story |\n| security_assessment | security, data privacy, ISO 27001, SOC 2, HECVAT, compliance |\n| reseller_order | reseller, channel partner, LPO, commission, end user details |\n| invoice_request | request for invoice, change invoice details, need receipt |\n| xmind8_migration | Xmind 8 upgrade, old license migration |\n| cancel_or_downgrade | cancel subscription, downgrade plan, stop renewal |\n| wrong_product | asking about non-Xmind product (e.g. Inspiration 11) |\n| uncertain_handoff | anything not matched above |\n\n**Multi-intent**: If the email contains multiple distinct requests, address ALL of them in one reply. Use the most advanced scene for CRM status update.\n\n---\n\n## Business Rules\n\n### Language & Tone\n- Reply in customer's current language. Never auto-switch to English.\n- Demo/phone call support: English and Chinese only. If customer's language differs, note calls are in English.\n- Match communication style: casual customer \u2192 \"Hi [First name]\", relaxed; formal \u2192 \"Dear [Name]\", professional.\n- Concise customer \u2192 mirror brevity. Don't restate what they confirmed.\n- Long sales cycle \u2192 when closing, one short acknowledgment line max.\n\n### Greeting\n- Match local time if known: morning \u2192 \"Good morning\" / \"Bonjour\" / \"Guten Morgen\" etc.\n- Time unknown \u2192 neutral: \"Hi [Name]\" / \"Bonjour\" / \"Hallo\"\n\n### Currency Rules\n- Eurozone (France, Germany, Netherlands, Belgium, etc.) \u2192 EUR\n- Japan \u2192 JPY\n- All other regions \u2192 USD\n- EUR and USD are 1:1 (same number, different symbol)\n- Never explain currency strategy to the customer\n\n### Plan Pricing \u2014 USD/EUR (1:1)\n\n| Plan | Monthly | Yearly | EDU (30% off) | GOV/NPO (20% off) |\n|---|---|---|---|---|\n| Pro (Individual) | $10 | $59 | $41 | $47 |\n| Premium (Individual) | $15 | $99 | $69 | $79 |\n| Business (Team) | $18/seat | $120/seat | $84/seat | $96/seat |\n\n### Plan Pricing \u2014 JPY\n\n| Plan | Monthly | Yearly |\n|---|---|---|\n| Pro | \u00a5750 | \u00a59,000 |\n| Premium | \u00a52,200 | \u00a514,000 |\n| Business | \u00a52,700/seat | \u00a518,000/seat |\n\nJPY EDU/GOV: apply same percentages to JPY yearly price.\n\n### Enterprise Pricing (per seat/year, USD/EUR)\n\n| Seats | Price/seat/year |\n|---|---|\n| 1\u20134 | $144 |\n| 5\u20139 | $420 |\n| 10\u201319 | $264 |\n| 20\u201349 | $204 |\n| 50\u201399 | $168 |\n| 100+ | $144 |\n\nSSO surcharge: 1\u20134 seats = +$100/month; 5+ seats = SSO included.\nWhen quoting 1-4 seats, show 3 tiers (1, 5, 10) so customer sees cost efficiency.\nIf customer needs SSO \u2192 must be Enterprise, do NOT suggest Business/Pro.\n\n### SME Plan (Perpetual License)\n\n| Seats | License/seat | Maintenance/seat/year |\n|---|---|---|\n| 1\u20134 | $139 | $69 |\n| 5\u201319 | $129 | $69 |\n| 20\u201389 | $119 | $69 |\n| 90\u2013149 | $109 | $69 |\n| 150\u2013299 | $99 | $69 |\n| 300\u2013599 | $89 | $69 |\n\n- Perpetual one-time payment, includes 6 months maintenance\n- Maintenance $69/user/year uniform, NOT discounted\n- No collaboration, no AI, local storage only\n- JPY pricing \u2192 escalate to Stellar\n- GOV: $99/$89/$79/$69/$59/$49 per tier; EDU: $89/$79/$69/$59/$49/$39 per tier\n\n### VLE Plan (1000+ users, institutional)\n\n| Tier | New License | Maintenance/yr | Upgrade from 8 Pro |\n|---|---|---|---|\n| >1,000 users | $35,000 | $6,000/yr | $12,000 |\n| >5,000 users | $105,000 | $9,000/yr | \u2014 |\n| >10,000 users | $175,000 | $15,000/yr | \u2014 |\n\n- GBP: >1K: \u00a328,000/\u00a34,500/\u00a39,000; >5K: \u00a384,000/\u00a37,000; >10K: \u00a3140,000/\u00a312,000\n- Multi-year maintenance: state reduced price directly (e.g. \"\u20ac5,000/year\"), do NOT mention the discount amount\n- Trial: provide SME package (5 device activations) for evaluation\n\n### Volume Discount (Business/Enterprise)\n\n| Quantity | Discount |\n|---|---|\n| 10\u201339 | 10% |\n| 40\u201399 | 15% |\n| 100\u2013299 | 20% |\n| 300+ | 30% |\n\n### Org Type Discounts\n- EDU = 30%; NPO/GOV/NGO = 20%\n- Domain verification: .edu/.gov/.gouv/.ac.uk \u2192 no proof needed; generic domain \u2192 ask for one supporting doc\n- Volume + org type discounts CAN stack\n- Beyond these rules \u2192 escalate\n\n### Xmind 8 Migration\n- Xmind 8 is discontinued \u2014 cannot be cancelled, credited, or refunded\n- Offer 25% discount on new plan (customer pays 75%)\n- Discount applies to up to same number of seats as Xmind 8 licenses\n- Stacks with volume discount (apply Xmind 8 discount per seat first, then volume on total)\n- Applies to Business and SME; SME: license only, maintenance NOT discounted\n\n### Recommendations\n- Single user \u2192 Pro ($59/yr) or Premium ($99/yr)\n- Team without SSO \u2192 Business ($120/seat/yr) \u2014 primary recommendation\n- Team with SSO \u2192 Enterprise (custom pricing)\n- Local-only/perpetual \u2192 SME ($139 one-time)\n- Business Plan is the default recommendation for teams\n\n### Admin Account\n- Admin must have a paid seat (no free admin-only account)\n- Admin counts as one of the purchased seats\n\n### Process Rules\n- **Existing customer (add-on/renewal)**: activate first \u2192 send invoice \u2192 request payment evidence\n- **New customer (first purchase)**: send invoice first \u2192 activate after payment confirmed\n- PO: proactively offer to add PO number to invoice when customer mentions it\n- Additional seats: prorated based on remaining subscription period\n- License migration (individual\u2192team): prorated credit applied, files preserved\n\n### Refunds\n- Team plans: no refunds \u2192 escalate immediately\n- Individual plans: 7-day money-back guarantee (annual plans from website only)\n\n### Trial Policy\n- 7-day free trial for all plans except Enterprise\n- Don't calculate specific end dates, just say \"7 days\"\n- Offer to set up trial: \"Just let me know which plan and email, I can set it up for you\"\n- Enterprise trials \u2192 escalate to Stellar\n\n### Reseller Rules\n- Commission: 10% standard, up to 15% for specific opportunities\n- Bill To = reseller; End user = final customer receiving licenses\n- Licenses delivered to end user admin email, NOT reseller\n- After activation, provide POD if requested: product, qty, term, admin account, expiry date\n\n### Account Registration\n- Admin email must have registered Xmind account before activation\n- Register at: app.xmind.com/login\n\n---\n\n## Plan Comparison Table (share on first contact, in customer's language)\n\n| Feature | Multi-Pro (Team) | Business (Team) | Enterprise (Team) | Pro (Individual) | Premium (Individual) |\n|---|---|---|---|---|---|\n| AI Credits | 10/month | 800/seat/month | Custom | 10/month | 500/month |\n| Project Mgmt | No | Gantt & Tasks | Gantt & Tasks | No | No |\n| Version History | 3 days | 30 days | Unlimited | 3 days | 30 days |\n| Team Mgmt | Invite/Remove | Access & file control | Access & file control | No | No |\n| Collaboration | Limited | Real-time | Real-time | Limited | Real-time |\n| Cloud Storage | Personal only | Team cloud | Team cloud | Limited | Individual cloud |\n| SSO | No | No | Yes | No | No |\n| Standard Price | $59/user/yr | $120/user/yr | See table | $59/yr | $99/yr |\n\n---\n\n## SME vs Cloud Plans (share when customer asks about local storage)\n\n| Feature | SME | Cloud Plans (Business/Enterprise/Pro/Premium) |\n|---|---|---|\n| License | Perpetual (one-time) | Subscription (annual/monthly) |\n| Storage | Local only | Local + Cloud (user chooses per file) |\n| Collaboration | No | Yes (Business+) |\n| AI | No | Yes |\n| Maintenance | 6mo included, then $69/yr optional | Included in subscription |\n\n---\n\n## Scene Checklists\n\n### connection (First Contact)\n- [ ] Self-introduce: \"I'm Stellar from the Xmind Team\"\n- [ ] Answer ALL customer questions first\n- [ ] Share plan comparison table (in customer's language)\n- [ ] Ask 2 qualifying questions: goals/challenges, user count, AI/collab/PM needs, SSO requirement\n- [ ] Naturally guide toward Business Plan \u2014 don't hard-sell\n- [ ] Add: \"if you already have a specific plan in mind, feel free to let me know\"\n- Customer domain is .edu/.gov \u2192 proactively mention discount\n- Customer mentions local storage \u2192 mention SME as alternative\n- Customer asks about trial \u2192 offer 7-day free trial\n\n### quotation\n- [ ] State recommended plan and why\n- [ ] Show pricing breakdown: plan, qty, discount, unit price, total\n- [ ] Mention payment methods: credit card and bank transfer\n- [ ] Ask customer to confirm to proceed\n- Volume discount applicable \u2192 show in breakdown\n- EDU/GOV/NPO \u2192 show in breakdown\n- Formal quotation PDF \u2192 tell them it's attached (Stellar creates manually)\n\n### process\n- [ ] Reference the attached quotation\n- [ ] Show inline summary of the quote\n- [ ] Ask to confirm preferred payment method\n- [ ] Mention PO is optional\n\n### bank_transfer (New customer \u2014 Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nPlease find the invoice attached for your processing. We support bank transfer \u2014 once payment is completed, kindly share the payment evidence (e.g. receipt or bank confirmation screenshot) with us.\n\nOnce we receive confirmation, we will activate your subscription right away.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### bank_transfer (Existing customer \u2014 Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nWe have gone ahead and {{action_taken}}. Please find the invoice attached \u2014 kindly share the payment evidence with us once the transfer is completed.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### credit_card (Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nPlease complete payment via the secure link below:\n{{payment_link}}\n\nOnce payment is confirmed, we will activate your subscription right away.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_business (Strict)\n```\nDear {{customer_name}},\n\nYour Xmind Business subscription has been successfully activated! \ud83d\ude80\n\n- Admin account: {{admin_email}}\n- Product: Xmind Business Plan\n- Term: {{duration}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nI've attached a guide to help you invite and manage team members. For a quick walkthrough: https://www.youtube.com/watch?v=2wtblxJ7dMc\n\nIf you have any questions, just reply!\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_enterprise (Strict)\n```\nDear {{customer_name}},\n\nYour Xmind Enterprise subscription has been successfully activated! \ud83d\ude80\n\n- Admin account: {{admin_email}}\n- Product: Xmind Enterprise Plan\n- Term: {{duration}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nI've attached a guide to help you invite and manage team members. For a quick walkthrough: https://www.youtube.com/watch?v=2wtblxJ7dMc\n\nFor SSO setup: https://xmind.com/user-guide/sso\n\nIf you have any questions, just reply!\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_pro_team (Strict)\n```\nDear {{customer_name}},\n\nYour team subscription has been renewed. Sign in with your Xmind account to start inviting members.\n\n- Admin account: {{admin_email}}\n- Product: Xmind Multi-Pro Plan\n- Term: {{duration}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nThe Pro Team Plan does not display a badge. Check status at xmind.app/account and refer to: https://xmind.com/help/manage-multi-user-subscription\n\nIf you have any questions, just reply \u2014 I'm here to help!\n\nBest regards,\nStellar\nXmind Team\n```\n\n### delivery_sme (Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nBelow is your Xmind SME {{version}} license key for {{quantity}} users:\n\n{{license_key}}\n\nPlease click the link below to download and install Xmind SME {{version}}.\n\nWindows\n{{windows_exe_link}}\n{{windows_msi_link}}\n\nmacOS\n{{macos_link}}\n\nLinux\n{{linux_deb_link}}\n{{linux_rpm_link}}\n\nTo activate your license key:\n1. Click Help > Upgrade to Pro from the menu (Xmind > Upgrade to Pro on Mac).\n2. Copy and paste the email and license key above, then click Activate.\n\nLicense management portal: https://xmind.app/license-manage/signin/\n\nIf you have any questions when using Xmind, please contact Xmind Support Center at support@xmind.app\n\nWarm regards,\nStellar\nXmind Team\n```\n\nSME download links (V26.02):\n- Windows exe: https://xmind.app/xmind/downloads/Xmind-for-Windows-x64bit-26.02.04172-202603081749.exe\n- Windows msi: https://xmind.app/xmind/downloads/Xmind-for-Windows-x64bit-26.02.04172-2219.msi\n- macOS: https://xmind.app/xmind/downloads/Xmind-for-macOS-26.02.04172-202603081710.dmg\n- Linux deb: https://xmind.app/xmind/downloads/Xmind-for-Linux-amd64bit-26.02.04172-202603081807.deb\n- Linux rpm: https://xmind.app/xmind/downloads/Xmind-for-Linux-x86_64bit-26.02.04172-202603081817.rpm\n\n### comparison\n- [ ] Show comparison table relevant to the plans being compared\n- [ ] Highlight key differentiators\n- [ ] Make recommendation based on customer's stated needs\n\n### renewal\n```\nHello {{customer_name}},\n\nThis is a gentle reminder that your Xmind subscription is about to expire.\n\n- Admin account: {{admin_email}}\n- Product: {{plan_type}}\n- Team Size: {{quantity}}\n- Expiration Date: {{expiration_date}}\n\nRenew directly via: {{renewal_link}}\n\nIf you have any questions, feel free to reach out.\n\nBest regards,\nStellar\nXmind Team\n```\n\n### add_license\n- [ ] Confirm add-on request (how many seats, which plan)\n- [ ] Explain prorated pricing based on remaining subscription period\n- [ ] Existing customers: activate first, then send invoice\n\n### license_migration\n- [ ] Confirm migration details\n- [ ] Reassure: files are preserved (tied to account, not subscription)\n- [ ] Explain prorated credit if applicable\n\n### follow_up\n- [ ] Brief, friendly check-in \u2014 not pushy\n- [ ] Reference what was last discussed (from \u5bf9\u8bdd\u7eaa\u8981)\n- [ ] Offer to help if questions remain\n- Max 2-3 follow-ups without response\n\n### redeem_code (Strict)\n```\n{{greeting}},\n\n{{warm_opener}}\n\nHere is your redeem code for {{plan_type}}:\n\n{{redeem_code}}\n\nYou can follow the instructions here to redeem it: https://xmind.com/help/use-subscription-redeem-code\n\n{{additional_context}}\n\nBest regards,\nStellar\nXmind Team\n```\n\n### case_study (Individual users only)\n- [ ] Offer: 25% discount on renewal OR 3 months free (redeem code)\n- [ ] Explain what feedback is needed (brief outline)\n- [ ] Publishing on user-stories page is optional\n- [ ] Provide redeem instructions: https://xmind.com/help/use-subscription-redeem-code\n- Flow: 3-month code first \u2192 ask for feedback \u2192 once received \u2192 send 6 more months\n\n### sme_perpetual\n- [ ] Explain SME: perpetual, local-only, no cloud/collab/AI\n- [ ] State pricing with correct tier\n- [ ] Maintenance: $69/user/year after 6 months\n- [ ] Ask how many users needed\n- Customer mentions collab needs \u2192 also mention Business (local + cloud option)\n- Volume 10+ \u2192 mention discount\n- SCCM/deployment \u2192 mention activation.json silent deployment\n- Air-gapped \u2192 mention offline installer\n\n### security_assessment\n- [ ] Answer EVERY question asked \u2014 don't skip any\n- [ ] Reference: ISO/IEC 27001:2022, SOC 2 Type II\n- [ ] Privacy: https://xmind.com/legal/privacy\n- [ ] Terms: https://xmind.com/legal/terms\n- SME: no analytics, license validation only (~1hr), SCCM deployment supported\n- All plans: files can be stored locally\n- No MFA; SSO = Enterprise only (SAML)\n- SLA: Critical 8h, High 12h, General 2 business days\n- Pen test report \u2192 under NDA, escalate to Stellar\n- First contact + security \u2192 also introduce plans + qualifying questions\n\n### reseller_order\n- [ ] Confirm order details (product, qty, end user info)\n- [ ] Commission: 10% standard, up to 15%\n- [ ] Ask for end user admin email\n- [ ] Registration prerequisite: end user must register at app.xmind.com/login\n- Deliver licenses to end user admin email, not reseller\n\n### invoice_request\n- [ ] Confirm invoice requirements\n- [ ] Ask for billing details if not provided (company name, address, PO number if applicable)\n- [ ] Note: Stellar generates invoices manually\n\n### xmind8_migration\n- [ ] Confirm Xmind 8 is discontinued\n- [ ] Offer 25% discount on new plan seats\n- [ ] Explain discount scope (up to same # of Xmind 8 licenses)\n- [ ] Stacks with volume discount\n\n### cancel_or_downgrade\n- Team plans: no refunds \u2192 escalate\n- Individual: 7-day money-back (annual from website only)\n- Understand reason, offer alternatives before processing\n\n### wrong_product\n- Politely clarify this is Xmind\n- Introduce Xmind as alternative\n- Ask qualifying questions\n\n### uncertain_handoff\nOutput ONLY: `\u8bf7 Stellar \u4eba\u5de5\u5904\u7406\uff1a<reason>`\n\n---\n\n## Contracting Entity\n- International orders: **Supermind Pte. Ltd.** (Singapore)\n- Address: 81 Ubi Avenue 4, #09-18 UB ONE, Singapore 408830\n- UEN: 202216226M | DUNS: 59-935-1353 | Tel: +65 66046110\n- US customers requesting W9 \u2192 provide W-8BEN-E (non-US entity)\n\n## Official URLs\n- Website: xmind.com\n- Account login/register: app.xmind.com/login\n- Account management: xmind.app/account\n- Download: xmind.com/download\n- Academy: https://xmind.com/academy\n- YouTube: https://www.youtube.com/@XmindHQ\n- Multi-Pro guide: https://xmind.com/help/manage-multi-user-subscription\n- Team setup guide: https://xmind.com/academy/xmind-team-setup-guide\n- Team walkthrough: https://www.youtube.com/watch?v=2wtblxJ7dMc\n- SME license portal: https://xmind.app/license-manage/signin/\n- Individual pricing: https://xmind.com/pricing\n- Redeem code: https://xmind.com/help/use-subscription-redeem-code\n- User stories: https://xmind.com/user-stories\n- Privacy: https://xmind.com/legal/privacy\n- Terms: https://xmind.com/legal/terms\n- **NEVER use xmind.ai**\n\n## Discount-for-Case-Study (Individual Only)\n- 25% discount on renewal OR 3 months free (redeem code)\n- Flow: send 3-month code \u2192 collect feedback \u2192 send 6 more months\n- Feedback outline: name, role, challenges solved, features used, recent example\n- Publishing on xmind.com/user-stories is optional\n\n## Communication Rules\n- Answer customer's questions FIRST, then qualify\n- Offer \"I can do this for you\" first; website as secondary\n- Once you've shared a link, don't repeat it\n- Don't proactively suggest meetings unless customer asks\n- Don't proactively offer discounts\n- Don't push website repeatedly\n- Don't explain currency logic\n- Don't calculate specific trial end dates\n- Don't make upgrade sound heavy: \"you can upgrade anytime and only pay the difference\"\n- Team plan: no minimum seat requirement\n- Wrong product \u2192 politely clarify, introduce Xmind\n- Account status checks \u2192 ask Stellar internally, don't tell customer to wait\n\n## Escalation\nOutput ONLY: `\u8bf7 Stellar \u4eba\u5de5\u5904\u7406\uff1a<reason>`\nTrigger conditions:\n- Refund request (team plan)\n- Extra discount beyond approved rules\n- Needs internal confirmation\n- Template doesn't cover the case\n- Customer intent unclear and auto-reply risky\n- Policy question without clear answer\n- SME JPY pricing\n- Enterprise trial setup\n- Pen test report request\n\n---\n\n## SME Technical Details (use only for security_assessment or SME technical questions)\n\n### Deployment\n- Windows, macOS, Linux; current version V26.02\n- Offline installer available for air-gapped environments\n- SCCM silent deployment: install + activate on one device \u2192 copy `activation.json` from `%HOMEPATH%\\AppData\\Roaming\\XMind\\Electron v3\\vana\\state` \u2192 distribute to all devices\n- License validation: outbound to xmind.cn/app or xmind.app, approx every 1 hour + on launch\n- Validation checks license status only \u2014 no user data transmitted\n\n### License Management\n- License key activates per-device (tied to device UUID)\n- Admin creates keys: `create-license-keys product:sme version:26`\n- \"Deactivate\" = temporary release; \"Disable\" = permanent block\n- Portal: https://xmind.app/license-manage/signin/\n- Reinstall may change UUID \u2192 rename hostname, activate, disable old entry\n\n### Telemetry\n- SME: NO analytics (no \"Share Analytics\" option exists)\n- Subscription plans: \"Share Analytics\" option exists but user can opt out\n\n### Firewall\n- Whitelist: xmind.cn/app and xmind.app\n- If firewall returns HTTP 403 \u2192 false error \"serial number already bound\"; should return 502/503/504 instead\n- Email whitelist: @mail.xmind.cn and @mail.xmind.net (SendCloud, shared IPs)\n\n### Common Issues\n- \"Serial already bound\" on intranet \u2192 firewall returning 403, fix firewall\n- Can't receive verification email \u2192 whitelist @mail.xmind.cn and @mail.xmind.net\n- Device still active after deactivation \u2192 use \"Disable\" not \"Deactivate\"\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        7168,
        7296
      ],
      "id": "25f6687b-0f06-48de-b199-d69b35c6b156",
      "name": "\u751f\u6210\u56de\u590d\u6587\u672c\u5185\u5bb9",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u6982\u62ec\u3002\u53ea\u8f93\u51faJSON\uff0c\u4e0d\u8981\u5176\u4ed6\u5185\u5bb9\u3002\n\n\u683c\u5f0f\uff1a\n{\"customer_summary\": \"\u5ba2\u6237\u8bf4\u4e86\u4ec0\u4e48\uff08\u4e00\u53e5\u8bdd\uff09\", \"reply_summary\": \"R[\u8f6e\u6b21](Stellar): \u6211\u4eec\u56de\u590d\u4e86\u4ec0\u4e48\", \"next_action\": \"\u4e0b\u4e00\u6b65\u5f85\u529e\", \"next_action_date\": \"YYYY-MM-DD\", \"status\": \"CRM\u72b6\u6001\", \"plan\": \"\u8ba1\u5212\u7c7b\u578b\", \"quantity\": \u6570\u91cf, \"currency\": \"\u5e01\u79cd\"}\n\nstatus \u4ece\u4ee5\u4e0b\u9009\u62e9: New Lead, Qualifying, Quoting, Negotiation, Pending Payment, Onboarding, Closed Won, Churned, Follow Up\n\n\u793a\u4f8b\uff1a\n{\"customer_summary\": \"\u5ba2\u6237\u8868\u793a\u56e2\u961f\u559c\u6b22Xmind\u4f46\u9700\u8981\u548c\u7ecf\u7406\u786e\u8ba4\", \"reply_summary\": \"R7(Stellar): \u8868\u793a\u7406\u89e3\u4e0d\u65bd\u538b\uff0c\u968f\u65f6\u53ef\u7ee7\u7eed\u63a8\u8fdb\", \"next_action\": \"\u7b49\u5f85\u5ba2\u6237\u5468\u4e00\u4e0e\u7ecf\u7406\u6c9f\u901a\u540e\u56de\u590d\", \"next_action_date\": \"2026-05-14\", \"status\": \"Negotiation\", \"plan\": \"Enterprise\", \"quantity\": 10, \"currency\": \"usd\"}\n\n\u5ba2\u6237\u6700\u65b0\u90ae\u4ef6\uff1a\n{{ $('\u6e05\u6d17\u56de\u590d\u90ae\u4ef6\u7684\u5185\u5bb9').item.json.latest_content }}\n\n---\n\n\u6211\u4eec\u7684\u56de\u590d\uff1a\n{{ $('\u751f\u6210\u56de\u590d\u6587\u672c\u5185\u5bb9').item.json.output }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": ""
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        7488,
        7296
      ],
      "id": "3d32392f-c2ce-4363-b73f-98742303f89f",
      "name": "\u63d0\u53d6\u6458\u8981",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "resource": "databasePage",
        "operation": "update",
        "pageId": {
          "__rl": true,
          "value": "={{ $('\u548cNotion\u4e2d\u7684email\u5339\u914d1').item.json.url }}",
          "mode": "url"
        },
        "simple": false,
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Admin account|rich_text",
              "textContent": "={{ $json.output.admin_account_email }}"
            },
            {
              "key": "Currency|select",
              "selectValue": "={{ $json.output.currency }}"
            },
            {
              "key": "Plan|select",
              "selectValue": "={{ $json.output.plan }}"
            },
            {
              "key": "Quantity|number",
              "numberValue": "={{ $json.output.quantity }}"
            },
            {
              "key": "Revenue|number",
              "numberValue": "={{ $json.output.revenue }}"
            },
            {
              "key": "Status|select",
              "selectValue": "={{ $('\u63d0\u53d6\u6458\u8981').item.json.output.status }}"
            },
            {
              "key": "Next Action|rich_text",
              "textContent": "={{ $('\u63d0\u53d6\u6458\u8981').item.json.output.next_action }}"
            },
            {
              "key": "Next Action Date|date",
              "includeTime": false,
              "date": "={{ $('\u63d0\u53d6\u6458\u8981').item.json.output.next_action_date }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.notion",
      "typeVersion": 2.2,
      "position": [
        8352,
        7392
      ],
      "id": "b031d342-dd19-4577-acfb-f4f5447d5d25",
      "name": "\u586b\u5145\u66f4\u65b0\u7684\u4fe1\u606f",
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "\u6293\u53d6inbox\u90ae\u4ef6": {
      "main": [
        [
          {
            "node": "\u548cNotion\u4e2d\u7684email\u5339\u914d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u548cNotion\u4e2d\u7684email\u5339\u914d": {
      "main": [
        [
          {
            "node": "Notion\u67e5\u627eemail\u5339\u914d\u9879",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion\u67e5\u627eemail\u5339\u914d\u9879": {
      "main": [
        [
          {
            "node": "google sheet\u67e5\u627e\u5339\u914d\u9879",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\u6e05\u6d17\u56de\u590d\u90ae\u4ef6\u7684\u5185\u5bb9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "google sheet\u67e5\u627e\u5339\u914d\u9879": {
      "main": [
        [
          {
            "node": "\u786e\u8ba4\u5c5e\u4e8eleads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u786e\u8ba4\u5c5e\u4e8eleads": {
      "main": [
        [
          {
            "node": "\u6e05\u6d17\u56de\u590d\u90ae\u4ef6\u7684\u5185\u5bb9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u6e05\u6d17\u56de\u590d\u90ae\u4ef6\u7684\u5185\u5bb9": {
      "main": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u6587\u672c\u5185\u5bb9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u5f53\u51fa\u73b0\u65b0\u7684leads": {
      "main": [
        [
          {
            "node": "\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Merge Post Notion": {
      "main": [
        [
          {
            "node": "\u66f4\u65b0google sheet\u4fe1\u606f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u8f6c\u53d1\u652f\u6301\u90ae\u4ef6": {
      "main": [
        [
          {
            "node": "Merge Post Notion",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "\u751f\u6210\u5efa\u8054draft-template": {
      "main": [
        [
          {
            "node": "Merge Post Notion",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "\u6839\u636eIntent\u5206\u7c7b": {
      "main": [
        [
          {
            "node": "\u9884\u5904\u7406\u6570\u636e",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\u751f\u6210template",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\u8f6c\u53d1\u652f\u6301\u90ae\u4ef6",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge Post Notion",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981": {
      "main": [
        [
          {
            "node": "\u6839\u636eIntent\u5206\u7c7b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "\u63d0\u53d6Notes\u610f\u56fe\u3001\u8bed\u8a00\u3001\u6458\u8981",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\u751f\u6210template": {
      "main": [
        [
          {
            "node": "\u751f\u6210\u5efa\u8054draft-template",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u9884\u5904\u7406\u6570\u636e": {
      "main": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u6587\u672c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u751f\u6210\u56de\u590d\u6587\u672c": {
      "main": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude Sonnet 4": {
      "ai_languageModel": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u6587\u672c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "GPT 4o": {
      "ai_languageModel": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981": {
      "main": [
        [
          {
            "node": "\u53d1\u9001email\u8fdb\u884c\u63d0\u9192",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u6574\u7406\u4e3a\u90ae\u4ef6html\u683c\u5f0f": {
      "main": [
        [
          {
            "node": "\u751f\u6210\u5efa\u8054\u56de\u590ddraft",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u751f\u6210\u5efa\u8054\u56de\u590ddraft": {
      "main": [
        [
          {
            "node": "\u8bb0\u5f55\u4e3a\u65b0\u7684leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u53d1\u9001email\u8fdb\u884c\u63d0\u9192": {
      "main": [
        [
          {
            "node": "\u6574\u7406\u4e3a\u90ae\u4ef6html\u683c\u5f0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u8bb0\u5f55\u4e3a\u65b0\u7684leads": {
      "main": [
        [
          {
            "node": "Merge Post Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser4": {
      "ai_outputParser": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u8bb0\u5f55\u6458\u8981",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "GPT 4o1": {
      "ai_languageModel": [
        [
          {
            "node": "\u63d0\u53d6\u6458\u8981",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser8": {
      "ai_outputParser": [
        [
          {
            "node": "\u63d0\u53d6\u6458\u8981",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\u751f\u6210\u56de\u590ddraft": {
      "main": [
        [
          {
            "node": "\u8bb0\u5f55\u672c\u6b21\u5bf9\u8bdd",
            "type": "main",
            "index": 0
          },
          {
            "node": "\u586b\u5145\u66f4\u65b0\u7684\u4fe1\u606f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u6574\u7406\u4e3a\u56de\u590d\u90ae\u4ef6html\u683c\u5f0f": {
      "main": [
        [
          {
            "node": "\u751f\u6210\u56de\u590ddraft",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u544a\u77e5\u672c\u4eba": {
      "main": [
        [
          {
            "node": "\u6574\u7406\u4e3a\u56de\u590d\u90ae\u4ef6html\u683c\u5f0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude Sonnet ": {
      "ai_languageModel": [
        [
          {
            "node": "\u751f\u6210\u56de\u590d\u6587\u672c\u5185\u5bb9",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\u751f\u6210\u56de\u590d\u6587\u672c\u5185\u5bb9": {
      "main": [
        [
          {
            "node": "\u63d0\u53d6\u6458\u8981",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u63d0\u53d6\u6458\u8981": {
      "main": [
        [
          {
            "node": "\u544a\u77e5\u672c\u4eba",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u8bb0\u5f55\u672c\u6b21\u5bf9\u8bdd": {
      "main": [
        [
          {
            "node": "\u52fe\u9009Notion\u5df2\u8bb0\u5f55",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u586b\u5145\u66f4\u65b0\u7684\u4fe1\u606f": {
      "main": [
        [
          {
            "node": "\u52fe\u9009Notion\u5df2\u8bb0\u5f55",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate"
  },
  "versionId": "2dd62a5b-423a-48d7-a0f5-f9f9a12dc26b",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "fNHaMOk1214r0ojj",
  "tags": []
}