8
n8n 中文网amn8n.com

使用AI、Gmail和Google Sheets的自动化课程注册评估

高级

这是一个Ticket Management, AI Summarization领域的自动化工作流,包含 16 个节点。主要使用 Set, GmailTool, FormTrigger, GoogleDrive, GoogleSheets 等节点。 使用AI、Gmail和Google Sheets的自动化课程注册评估

前置要求
  • Google 账号和 Gmail API 凭证
  • Google Drive API 凭证
  • Google Sheets API 凭证
  • OpenAI API Key
  • Pinecone API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "zXNpe4L6H7ECAhDC",
  "meta": {
    "instanceId": "bbb2977e328381be47d4ff8a327c05d2d20577a0a434b57bef3780be6c5ece76",
    "templateCredsSetupCompleted": true
  },
  "name": "自动课程注册",
  "tags": [],
  "nodes": [
    {
      "id": "912fb0fd-fef4-4feb-8112-6418581342b8",
      "name": "表单提交时",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        176,
        -272
      ],
      "webhookId": "4adb8084-7430-4673-b1fe-bf24965bf7ef",
      "parameters": {
        "options": {
          "customCss": ":root {\n\t/* Typography */\n\t--font-family: 'Inter', 'Segoe UI', 'Roboto', -apple-system, BlinkMacSystemFont, sans-serif;\n\t--font-weight-light: 300;\n\t--font-weight-normal: 400;\n\t--font-weight-medium: 500;\n\t--font-weight-semibold: 600;\n\t--font-weight-bold: 700;\n\t\n\t/* Font Sizes */\n\t--font-size-xs: 12px;\n\t--font-size-sm: 13px;\n\t--font-size-base: 14px;\n\t--font-size-md: 15px;\n\t--font-size-lg: 16px;\n\t--font-size-xl: 18px;\n\t--font-size-2xl: 20px;\n\t--font-size-3xl: 24px;\n\t--font-size-4xl: 28px;\n\t--font-size-5xl: 32px;\n\t\n\t/* Specific Element Font Sizes */\n\t--font-size-body: var(--font-size-base);\n\t--font-size-label: var(--font-size-md);\n\t--font-size-input: var(--font-size-base);\n\t--font-size-header: var(--font-size-4xl);\n\t--font-size-subheader: var(--font-size-lg);\n\t--font-size-paragraph: var(--font-size-base);\n\t--font-size-link: var(--font-size-sm);\n\t--font-size-error: var(--font-size-sm);\n\t--font-size-test-notice: var(--font-size-sm);\n\t\n\t/* HTML Heading Sizes */\n\t--font-size-html-h1: var(--font-size-5xl);\n\t--font-size-html-h2: var(--font-size-3xl);\n\t--font-size-html-h3: var(--font-size-xl);\n\t--font-size-html-h4: var(--font-size-lg);\n\t--font-size-html-h5: var(--font-size-base);\n\t--font-size-html-h6: var(--font-size-sm);\n\n\t/* Color Palette - Professional Tech Theme */\n\t--color-primary: #2563eb;          /* Blue - Primary brand */\n\t--color-primary-hover: #1d4ed8;    /* Darker blue on hover */\n\t--color-primary-light: #dbeafe;    /* Light blue background */\n\t--color-secondary: #059669;        /* Green - Success/Tech */\n\t--color-accent: #7c3aed;          /* Purple - Automation theme */\n\t--color-warning: #d97706;         /* Orange - Warning */\n\t--color-error: #dc2626;           /* Red - Error states */\n\t\n\t/* Neutral Colors */\n\t--color-background: #fafbfc;\n\t--color-surface: #ffffff;\n\t--color-surface-elevated: #ffffff;\n\t\n\t/* Text Colors */\n\t--color-text-primary: #111827;\n\t--color-text-secondary: #4b5563;\n\t--color-text-tertiary: #6b7280;\n\t--color-text-placeholder: #9ca3af;\n\t--color-text-disabled: #d1d5db;\n\t\n\t/* Border Colors */\n\t--color-border-light: #e5e7eb;\n\t--color-border-medium: #d1d5db;\n\t--color-border-focus: var(--color-primary);\n\t--color-border-error: var(--color-error);\n\t\n\t/* Component Specific Colors */\n\t--color-card-bg: var(--color-surface);\n\t--color-card-border: var(--color-border-light);\n\t--color-card-shadow: rgba(59, 130, 246, 0.08);\n\t\n\t--color-header: var(--color-text-primary);\n\t--color-header-subtext: var(--color-text-secondary);\n\t--color-label: var(--color-text-secondary);\n\t--color-input-border: var(--color-border-light);\n\t--color-input-text: var(--color-text-primary);\n\t--color-focus-border: var(--color-primary);\n\t\n\t--color-submit-btn-bg: var(--color-primary);\n\t--color-submit-btn-text: #ffffff;\n\t--color-submit-btn-hover: var(--color-primary-hover);\n\t\n\t--color-link: var(--color-primary);\n\t--color-required: var(--color-error);\n\t--color-clear-button-bg: var(--color-text-tertiary);\n\t--color-html-text: var(--color-text-secondary);\n\t--color-html-link: var(--color-primary);\n\t\n\t/* Test Notice Colors */\n\t--color-test-notice-text: var(--color-warning);\n\t--color-test-notice-bg: #fef3c7;\n\t--color-test-notice-border: #fcd34d;\n\n\t/* Border Radii - Modern Rounded Design */\n\t--border-radius-xs: 4px;\n\t--border-radius-sm: 6px;\n\t--border-radius-md: 8px;\n\t--border-radius-lg: 12px;\n\t--border-radius-xl: 16px;\n\t--border-radius-2xl: 20px;\n\t--border-radius-full: 50%;\n\t\n\t/* Component Specific Radii */\n\t--border-radius-card: var(--border-radius-xl);\n\t--border-radius-input: var(--border-radius-md);\n\t--border-radius-clear-btn: var(--border-radius-full);\n\t--card-border-radius: var(--border-radius-card);\n\n\t/* Spacing System - 8px Base Grid */\n\t--space-1: 4px;\n\t--space-2: 8px;\n\t--space-3: 12px;\n\t--space-4: 16px;\n\t--space-5: 20px;\n\t--space-6: 24px;\n\t--space-8: 32px;\n\t--space-10: 40px;\n\t--space-12: 48px;\n\t--space-16: 64px;\n\t--space-20: 80px;\n\t\n\t/* Component Specific Spacing */\n\t--padding-container-top: var(--space-8);\n\t--padding-card: var(--space-6);\n\t--padding-test-notice-vertical: var(--space-3);\n\t--padding-test-notice-horizontal: var(--space-4);\n\t--margin-bottom-card: var(--space-4);\n\t--padding-form-input: var(--space-3);\n\t--card-padding: var(--space-6);\n\t--card-margin-bottom: var(--space-4);\n\n\t/* Dimensions */\n\t--container-width: 520px;\n\t--container-max-width: 90vw;\n\t--submit-btn-height: 52px;\n\t--checkbox-size: 20px;\n\t--input-height: 48px;\n\n\t/* Shadows - Layered Design */\n\t--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n\t--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n\t--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n\t--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n\t--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n\t\n\t/* Component Specific Shadows */\n\t--box-shadow-card: var(--shadow-lg);\n\t--box-shadow-input-focus: 0 0 0 3px rgba(37, 99, 235, 0.1);\n\t--box-shadow-button-hover: var(--shadow-md);\n\n\t/* Transitions */\n\t--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);\n\t--transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1);\n\t--transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);\n\n\t/* Z-Index Scale */\n\t--z-dropdown: 1000;\n\t--z-sticky: 1020;\n\t--z-fixed: 1030;\n\t--z-modal-backdrop: 1040;\n\t--z-modal: 1050;\n\t--z-popover: 1060;\n\t--z-tooltip: 1070;\n\n\t/* Opacity Values */\n\t--opacity-placeholder: 0.6;\n\t--opacity-disabled: 0.5;\n\t--opacity-hover: 0.8;\n\n\t/* Breakpoints for Responsive Design */\n\t--breakpoint-sm: 640px;\n\t--breakpoint-md: 768px;\n\t--breakpoint-lg: 1024px;\n\t--breakpoint-xl: 1280px;\n}\n\n/* Enhanced Global Styles */\n* {\n\tbox-sizing: border-box;\n}\n\nbody {\n\tfont-family: var(--font-family);\n\tbackground: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);\n\tmargin: 0;\n\tpadding: 0;\n\tmin-height: 100vh;\n\tline-height: 1.6;\n\tcolor: var(--color-text-primary);\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n/* Container Enhancements */\n.form-container {\n\tmax-width: var(--container-width);\n\twidth: var(--container-max-width);\n\tmargin: 0 auto;\n\tpadding: var(--padding-container-top) var(--space-4);\n}\n\n/* Card Styling */\n.form-card {\n\tbackground: var(--color-card-bg);\n\tborder: 1px solid var(--color-card-border);\n\tborder-radius: var(--card-border-radius);\n\tbox-shadow: var(--box-shadow-card);\n\tpadding: var(--card-padding);\n\tmargin-bottom: var(--card-margin-bottom);\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.form-card::before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\theight: 4px;\n\tbackground: linear-gradient(90deg, var(--color-primary), var(--color-secondary), var(--color-accent));\n}\n\n/* Header Styling */\n.form-header {\n\ttext-align: center;\n\tmargin-bottom: var(--space-8);\n}\n\n.form-title {\n\tfont-size: var(--font-size-header);\n\tfont-weight: var(--font-weight-bold);\n\tcolor: var(--color-header);\n\tmargin: 0 0 var(--space-3) 0;\n\tbackground: linear-gradient(135deg, var(--color-primary), var(--color-accent));\n\t-webkit-background-clip: text;\n\t-webkit-text-fill-color: transparent;\n\tbackground-clip: text;\n}\n\n.form-description {\n\tfont-size: var(--font-size-base);\n\tcolor: var(--color-text-secondary);\n\tmargin: 0;\n\tline-height: 1.7;\n\ttext-align: left;\n\tbackground: rgba(249, 250, 251, 0.8);\n\tpadding: var(--space-6);\n\tborder-radius: var(--border-radius-lg);\n\tborder: 1px solid var(--color-border-light);\n\tbackdrop-filter: blur(10px);\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.form-description::before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\theight: 3px;\n\tbackground: linear-gradient(90deg, var(--color-primary) 0%, var(--color-secondary) 50%, var(--color-accent) 100%);\n}\n\n.form-description h4 {\n\tfont-size: var(--font-size-lg);\n\tfont-weight: var(--font-weight-semibold);\n\tcolor: var(--color-text-primary);\n\tmargin: 0 0 var(--space-3) 0;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.form-description h4::before {\n\tcontent: attr(data-icon);\n\tfont-size: var(--font-size-xl);\n\tline-height: 1;\n}\n\n.form-description ul {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0 0 var(--space-4) 0;\n}\n\n.form-description li {\n\tmargin-bottom: var(--space-2);\n\tpadding-left: var(--space-6);\n\tposition: relative;\n\tfont-size: var(--font-size-sm);\n\tline-height: 1.6;\n}\n\n.form-description li::before {\n\tcontent: '▶';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tcolor: var(--color-primary);\n\tfont-size: var(--font-size-xs);\n\ttransform: scale(0.8);\n}\n\n.form-description strong {\n\tcolor: var(--color-text-primary);\n\tfont-weight: var(--font-weight-semibold);\n}\n\n.form-description a {\n\tcolor: var(--color-primary);\n\ttext-decoration: none;\n\tfont-weight: var(--font-weight-medium);\n\tborder-bottom: 1px solid transparent;\n\ttransition: all var(--transition-fast);\n}\n\n.form-description a:hover {\n\tborder-bottom-color: var(--color-primary);\n\tcolor: var(--color-primary-hover);\n}\n\n.form-description .highlight-box {\n\tbackground: linear-gradient(135deg, var(--color-primary-light), rgba(124, 58, 237, 0.1));\n\tpadding: var(--space-4);\n\tborder-radius: var(--border-radius-md);\n\tmargin: var(--space-4) 0;\n\tborder-left: 4px solid var(--color-primary);\n}\n\n.form-description .highlight-box strong {\n\tcolor: var(--color-primary);\n}\n\n/* Course Details Section Styling */\n.course-section {\n\tmargin-bottom: var(--space-5);\n\tpadding: var(--space-4);\n\tbackground: rgba(255, 255, 255, 0.6);\n\tborder-radius: var(--border-radius-md);\n\tborder: 1px solid rgba(37, 99, 235, 0.1);\n}\n\n.course-section:last-child {\n\tmargin-bottom: 0;\n}\n\n.section-title {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tfont-size: var(--font-size-md);\n\tfont-weight: var(--font-weight-semibold);\n\tcolor: var(--color-text-primary);\n\tmargin-bottom: var(--space-3);\n\tpadding-bottom: var(--space-2);\n\tborder-bottom: 2px solid var(--color-primary-light);\n}\n\n.section-icon {\n\tfont-size: var(--font-size-lg);\n\tcolor: var(--color-primary);\n}\n\n/* Payment Structure Styling */\n.payment-grid {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr 1fr;\n\tgap: var(--space-4);\n\tmargin: var(--space-3) 0;\n}\n\n@media (max-width: 640px) {\n\t.payment-grid {\n\t\tgrid-template-columns: 1fr;\n\t}\n}\n\n.payment-option {\n\tbackground: rgba(5, 150, 105, 0.05);\n\tpadding: var(--space-3);\n\tborder-radius: var(--border-radius-sm);\n\tborder-left: 3px solid var(--color-secondary);\n\tfont-size: var(--font-size-sm);\n}\n\n.payment-option.split-payment {\n\tbackground: rgba(124, 58, 237, 0.05);\n\tborder-left-color: var(--color-accent);\n}\n\n/* Mentorship CTA Styling */\n.mentorship-cta {\n\tbackground: linear-gradient(135deg, var(--color-accent), var(--color-primary));\n\tcolor: white;\n\tpadding: var(--space-4);\n\tborder-radius: var(--border-radius-lg);\n\ttext-align: center;\n\tmargin-top: var(--space-4);\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.mentorship-cta::before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: -50%;\n\tleft: -50%;\n\twidth: 200%;\n\theight: 200%;\n\tbackground: linear-gradient(45deg, transparent, rgba(255,255,255,0.1), transparent);\n\ttransform: rotate(45deg);\n\tanimation: shimmer 3s infinite;\n}\n\n@keyframes shimmer {\n\t0% { transform: translateX(-100%) translateY(-100%) rotate(45deg); }\n\t100% { transform: translateX(100%) translateY(100%) rotate(45deg); }\n}\n\n.mentorship-cta strong {\n\tcolor: white;\n\tfont-size: var(--font-size-md);\n}\n\n.mentorship-cta a {\n\tcolor: rgba(255, 255, 255, 0.9);\n\tfont-weight: var(--font-weight-medium);\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.3);\n\ttransition: all var(--transition-fast);\n}\n\n.mentorship-cta a:hover {\n\tcolor: white;\n\tborder-bottom-color: white;\n}\n\n/* Dark mode adjustments for description */\n@media (prefers-color-scheme: dark) {\n\t.form-description {\n\t\tbackground: rgba(30, 41, 59, 0.8);\n\t\tborder-color: var(--color-border-light);\n\t}\n\t\n\t.course-section {\n\t\tbackground: rgba(51, 65, 85, 0.6);\n\t\tborder-color: rgba(148, 163, 184, 0.1);\n\t}\n\t\n\t.payment-option {\n\t\tbackground: rgba(5, 150, 105, 0.1);\n\t}\n\t\n\t.payment-option.split-payment {\n\t\tbackground: rgba(124, 58, 237, 0.1);\n\t}\n}\n\n/* Form Field Styling */\n.form-field {\n\tmargin-bottom: var(--space-6);\n}\n\n.form-label {\n\tdisplay: block;\n\tfont-size: var(--font-size-label);\n\tfont-weight: var(--font-weight-medium);\n\tcolor: var(--color-label);\n\tmargin-bottom: var(--space-2);\n\tposition: relative;\n}\n\n.form-label.required::after {\n\tcontent: '*';\n\tcolor: var(--color-required);\n\tmargin-left: var(--space-1);\n\tfont-weight: var(--font-weight-bold);\n}\n\n/* Input Styling */\n.form-input,\n.form-select,\n.form-textarea {\n\twidth: 100%;\n\theight: var(--input-height);\n\tpadding: var(--padding-form-input) var(--space-4);\n\tfont-size: var(--font-size-input);\n\tfont-family: var(--font-family);\n\tcolor: var(--color-input-text);\n\tbackground: var(--color-surface);\n\tborder: 2px solid var(--color-input-border);\n\tborder-radius: var(--border-radius-input);\n\ttransition: all var(--transition-fast);\n\toutline: none;\n}\n\n.form-textarea {\n\theight: auto;\n\tmin-height: 120px;\n\tresize: vertical;\n\tpadding-top: var(--space-3);\n\tpadding-bottom: var(--space-3);\n}\n\n.form-input:focus,\n.form-select:focus,\n.form-textarea:focus {\n\tborder-color: var(--color-focus-border);\n\tbox-shadow: var(--box-shadow-input-focus);\n\ttransform: translateY(-1px);\n}\n\n.form-input::placeholder,\n.form-textarea::placeholder {\n\tcolor: var(--color-text-placeholder);\n\topacity: var(--opacity-placeholder);\n}\n\n.form-input:hover,\n.form-select:hover,\n.form-textarea:hover {\n\tborder-color: var(--color-border-medium);\n}\n\n/* Select Styling */\n.form-select {\n\tbackground-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");\n\tbackground-position: right var(--space-3) center;\n\tbackground-repeat: no-repeat;\n\tbackground-size: 16px;\n\tpadding-right: var(--space-10);\n\tcursor: pointer;\n}\n\n/* Checkbox and Radio Styling */\n.form-checkbox,\n.form-radio {\n\twidth: var(--checkbox-size);\n\theight: var(--checkbox-size);\n\tmargin-right: var(--space-3);\n\taccent-color: var(--color-primary);\n\tcursor: pointer;\n}\n\n.form-checkbox-label,\n.form-radio-label {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tcursor: pointer;\n\tfont-size: var(--font-size-base);\n\tline-height: 1.5;\n\tmargin-bottom: var(--space-3);\n}\n\n/* Multiple Choice Styling */\n.form-multiple-choice {\n\tdisplay: grid;\n\tgap: var(--space-3);\n}\n\n/* Submit Button Styling */\n.form-submit {\n\twidth: 100%;\n\theight: var(--submit-btn-height);\n\tpadding: 0 var(--space-6);\n\tfont-size: var(--font-size-lg);\n\tfont-weight: var(--font-weight-semibold);\n\tcolor: var(--color-submit-btn-text);\n\tbackground: var(--color-submit-btn-bg);\n\tborder: none;\n\tborder-radius: var(--border-radius-input);\n\tcursor: pointer;\n\ttransition: all var(--transition-normal);\n\tposition: relative;\n\toverflow: hidden;\n\ttext-transform: uppercase;\n\tletter-spacing: 0.5px;\n}\n\n.form-submit::before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: -100%;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);\n\ttransition: left var(--transition-slow);\n}\n\n.form-submit:hover {\n\tbackground: var(--color-submit-btn-hover);\n\tbox-shadow: var(--box-shadow-button-hover);\n\ttransform: translateY(-2px);\n}\n\n.form-submit:hover::before {\n\tleft: 100%;\n}\n\n.form-submit:active {\n\ttransform: translateY(0);\n\tbox-shadow: var(--shadow-sm);\n}\n\n/* Error Styling */\n.form-error {\n\tcolor: var(--color-error);\n\tfont-size: var(--font-size-error);\n\tmargin-top: var(--space-1);\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n.form-error::before {\n\tcontent: '⚠';\n\tfont-size: var(--font-size-sm);\n}\n\n.form-input.error,\n.form-select.error,\n.form-textarea.error {\n\tborder-color: var(--color-border-error);\n\tbox-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);\n}\n\n/* Test Notice Styling */\n.test-notice {\n\tbackground: var(--color-test-notice-bg);\n\tcolor: var(--color-test-notice-text);\n\tborder: 1px solid var(--color-test-notice-border);\n\tborder-radius: var(--border-radius-md);\n\tpadding: var(--padding-test-notice-vertical) var(--padding-test-notice-horizontal);\n\tmargin-bottom: var(--space-6);\n\tfont-size: var(--font-size-test-notice);\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.test-notice::before {\n\tcontent: 'ℹ';\n\tfont-weight: var(--font-weight-bold);\n\tfont-size: var(--font-size-base);\n}\n\n/* Progress Indicator */\n.form-progress {\n\theight: 4px;\n\tbackground: var(--color-border-light);\n\tborder-radius: var(--border-radius-sm);\n\tmargin-bottom: var(--space-6);\n\toverflow: hidden;\n}\n\n.form-progress-bar {\n\theight: 100%;\n\tbackground: linear-gradient(90deg, var(--color-primary), var(--color-secondary));\n\tborder-radius: var(--border-radius-sm);\n\ttransition: width var(--transition-slow);\n\twidth: 0%;\n}\n\n/* Loading State */\n.form-loading {\n\topacity: var(--opacity-disabled);\n\tpointer-events: none;\n\tposition: relative;\n}\n\n.form-loading::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 20px;\n\theight: 20px;\n\tmargin: -10px 0 0 -10px;\n\tborder: 2px solid var(--color-primary);\n\tborder-top-color: transparent;\n\tborder-radius: var(--border-radius-full);\n\tanimation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n}\n\n/* Responsive Design */\n@media (max-width: 640px) {\n\t:root {\n\t\t--container-width: 100%;\n\t\t--padding-container-top: var(--space-4);\n\t\t--card-padding: var(--space-4);\n\t\t--font-size-header: var(--font-size-3xl);\n\t}\n\t\n\t.form-container {\n\t\tpadding: var(--space-4) var(--space-3);\n\t}\n\t\n\t.form-submit {\n\t\theight: 48px;\n\t\tfont-size: var(--font-size-base);\n\t}\n}\n\n/* Dark Mode Support */\n@media (prefers-color-scheme: dark) {\n\t:root {\n\t\t--color-background: #0f172a;\n\t\t--color-surface: #1e293b;\n\t\t--color-surface-elevated: #334155;\n\t\t--color-text-primary: #f8fafc;\n\t\t--color-text-secondary: #cbd5e1;\n\t\t--color-text-tertiary: #94a3b8;\n\t\t--color-text-placeholder: #64748b;\n\t\t--color-border-light: #334155;\n\t\t--color-border-medium: #475569;\n\t\t--color-card-border: #334155;\n\t\t--color-card-shadow: rgba(0, 0, 0, 0.3);\n\t}\n\t\n\tbody {\n\t\tbackground: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);\n\t}\n}\n\n/* Accessibility Improvements */\n@media (prefers-reduced-motion: reduce) {\n\t* {\n\t\tanimation-duration: 0.01ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: 0.01ms !important;\n\t}\n}\n\n.sr-only {\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\tpadding: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tclip: rect(0, 0, 0, 0);\n\twhite-space: nowrap;\n\tborder: 0;\n}",
          "appendAttribution": false
        },
        "formTitle": "API testing and Automation Mastery Program - Enrollment Form",
        "formFields": {
          "values": [
            {
              "html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n  <style>\n    body {\n      font-family: 'Segoe UI', sans-serif;\n      background-color: #f7f9fc;\n      margin: 0;\n      padding: 30px;\n      line-height: 1.6;\n      color: #333;\n    }\n\n    .container {\n      max-width: 900px;\n      margin: auto;\n      background: #ffffff;\n      padding: 40px;\n      border-radius: 10px;\n      box-shadow: 0 0 12px rgba(0, 0, 0, 0.06);\n    }\n\n    h1 {\n      text-align: center;\n      color: #0056b3;\n    }\n\n    h2 {\n      color: #003366;\n      margin-top: 30px;\n      margin-bottom: 10px;\n      border-bottom: 1px solid #ddd;\n      padding-bottom: 5px;\n    }\n\n    ul {\n      padding-left: 20px;\n    }\n\n    ul li {\n      margin-bottom: 10px;\n    }\n\n    a {\n      color: #007bff;\n      text-decoration: none;\n    }\n\n    a:hover {\n      text-decoration: underline;\n    }\n\n    .highlight {\n      background-color: #e9f5ff;\n      padding: 10px 15px;\n      border-left: 4px solid #007bff;\n      margin-top: 20px;\n      border-radius: 5px;\n    }\n\n    .footer {\n      margin-top: 40px;\n      text-align: center;\n      font-size: 0.9em;\n      color: #555;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <h1>API Testing & Automation Training Enrollment</h1>\n\n    <p>Please complete the form below to enroll in our comprehensive hands-on training program focused on <strong>API Testing & Automation using Postman and RestAssured</strong>.</p>\n\n    <h2>📚 Course Overview</h2>\n    <ul>\n      <li><strong>Schedule:</strong> 3 days per week</li>\n      <li><strong>Sessions:</strong> 2 recorded Zoom sessions daily (1.5 hours each)</li>\n      <li><strong>Total Weekly Time:</strong> ~5+ hours/week</li>\n      <li><strong>Content Focus:</strong> Demo projects only (no real-world projects)</li>\n      <li><strong>Certification:</strong> <em>No certificate</em> – focus is on practical skills</li>\n    </ul>\n\n    <h2>🧠 Course Content</h2>\n    <ul>\n      <li>🔹 Introduction to APIs & API Testing Fundamentals</li>\n      <li>🔹 API Testing and Automation using <strong>Postman</strong></li>\n      <li>🔹 API Test Automation using <strong>Newman</strong> (Postman CLI Runner)</li>\n      <li>🔹 API Testing and Automation using <strong>RestAssured</strong> (Java)</li>\n      <li>🔹 Data-driven Testing & Environment Variables</li>\n      <li>🔹 API Testing with <strong>Cucumber</strong> (BDD Framework)</li>\n      <li>🔹 CI/CD Integration for API Automation (GitHub Actions, Jenkins, etc.)</li>\n      <li>🔹 Generating Professional Reports</li>\n      <li>🔹 Version Control with <strong>Git & GitHub</strong></li>\n    </ul>\n\n    <h2>💳 Payment Structure</h2>\n    <ul>\n      <li><strong>API, Performance, Database & Security Courses:</strong> Full payment upon completion</li>\n      <li><strong>Web, Mobile & AI Automation Courses:</strong>\n        <ul>\n          <li>50% after the first month</li>\n          <li>Remaining 50% at course completion</li>\n        </ul>\n      </li>\n      <li><strong>Risk-Free:</strong> Cancel anytime within the first month – no fees</li>\n    </ul>\n\n    <h2>✅ Requirements for Enrollment</h2>\n    <ul>\n  <li>\n    Must have <strong>basic knowledge of any programming language</strong> (preferably Java)\n  </li>\n  <li>\n    If you don’t have this background, please watch the first 60 videos of this\n    <a href=\"https://www.youtube.com/playlist?list=PL28DDB2DCF87BEE43\" target=\"_blank\">\n      YouTube Programming Basics Playlist\n    </a>\n    before enrolling.\n  </li>\n      <li>Completion of <strong>all assigned projects</strong> and tasks by deadlines</li>\n      <li>Active participation in sessions and assignments</li>\n      <li>Failure to meet requirements may affect future course access</li>\n    </ul>\n\n    <h2>🎁 Free Mentorship</h2>\n    <p>Have questions or need personalized guidance? Connect on LinkedIn:</p>\n    <p><a href=\"https://www.linkedin.com/in/shady-ahmed97/\" target=\"_blank\">Shady Ahmed – LinkedIn</a></p>\n\n    <h2>⏳ Course Duration</h2>\n    <p><strong>2 to 3 months</strong> depending on pace and availability.</p>\n\n    <div class=\"highlight\">\n      <strong>💬 Ready to get started?</strong> Fill out the form below to begin your journey into professional API automation.\n    </div>\n\n    <div class=\"footer\">\n      &copy; 2025 Shady Ahmed | Testing Automation Instructor\n    </div>\n  </div>\n  <br><br>\n</body>\n</html>",
              "fieldType": "html",
              "elementName": "form-desc"
            },
            {
              "fieldLabel": "Full Name",
              "placeholder": "Enter your full name",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email Address",
              "placeholder": "your.email@example.com",
              "requiredField": true
            },
            {
              "fieldLabel": "WhatsApp Number",
              "placeholder": "+201234567890",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Do you have basics of any programming language?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Yes"
                  },
                  {
                    "option": "No"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "checkbox",
              "fieldLabel": "I commit to 3 days per week for 2-3 months",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Agree"
                  },
                  {
                    "option": "Not Agree"
                  }
                ]
              },
              "requiredField": true,
              "limitSelection": "exact"
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Terms and Conditions",
              "fieldOptions": {
                "values": [
                  {
                    "option": "I agree to follow all deadlines and complete assigned tasks/projects"
                  },
                  {
                    "option": "I don't agree"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "1d13a6b7-9cfd-40d0-8c91-53f203a8feb7",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        -304
      ],
      "parameters": {
        "height": 336,
        "content": "### 学生注册"
      },
      "typeVersion": 1
    },
    {
      "id": "6c60192e-98d6-492d-83ec-08ebb6ee3a63",
      "name": "合并用户数据",
      "type": "n8n-nodes-base.set",
      "position": [
        432,
        -272
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a4b4f135-34bd-4bc2-ba72-f2cb9a3b949d",
              "name": "user_context",
              "type": "string",
              "value": "={{ $json['Full Name'] }}, {{ $json['Email Address'] }}, {{ $json['WhatsApp Number'] }}, {{ $json['Do you have basics of any programming language?'] }}, {{ $json['Terms and Conditions'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d80d0ad8-779d-4c61-a78b-e655b18c7879",
      "name": "AI 代理",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1280,
        -272
      ],
      "parameters": {
        "text": "=**Role**\nact as software testing instructor assistant to evaluate students answers then make output of JSON object include if accepted to course or not if user anser with yes and agree for terms and conditions and commit to follow all deadlines and complete assigned tasks/projects then will be accepted otherwise will not be accpted\nfor example \n{\n\"accepted\": true\n}\n\n{{ $('Combine User Data').item.json.user_context }}\n",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "2175cf5a-a984-437d-a636-2ad403ed175d",
      "name": "OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1136,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "CXEjPKMAyq5p5Jjm",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3c2a315b-c88c-49f8-b9b6-1bd9139286bc",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1296,
        144
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"accepted\": true\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "922f1c54-bf54-47dc-845f-f824749fc09a",
      "name": "下载文件",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        624,
        -272
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "list",
          "value": "1HxM_NWizFnOhf4jk-7BQRpTvfd9xQuFNfGrH5hiqTxA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1HxM_NWizFnOhf4jk-7BQRpTvfd9xQuFNfGrH5hiqTxA/edit?usp=drivesdk",
          "cachedResultName": "Course Enrollment"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "zvPCbUMwmjWtNM0a",
          "name": "Google Drive account 2"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "86cb7c06-c364-40d9-a147-ddb37f84c981",
      "name": "Pinecone 向量存储",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        880,
        -272
      ],
      "parameters": {
        "mode": "insert",
        "options": {
          "pineconeNamespace": "course_enrollment"
        },
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "course-enrollment",
          "cachedResultName": "course-enrollment"
        }
      },
      "credentials": {
        "pineconeApi": {
          "id": "ZRuijEjAOJkoX2hV",
          "name": "PineconeApi account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "cbd60d6a-773c-4aca-8ac6-5927cb5b9259",
      "name": "嵌入 Google Gemini",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "position": [
        672,
        160
      ],
      "parameters": {},
      "credentials": {
        "googlePalmApi": {
          "id": "VhlEL4kZCaqxUKQd",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0a217b14-1ecb-42ac-9e33-a5d193465010",
      "name": "默认数据加载器",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        832,
        160
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "b3122baf-ca34-4f58-b4b9-4c01acf20f3c",
      "name": "AI Agent1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1632,
        -272
      ],
      "parameters": {
        "text": "=**Role**\nact as mail agent to send message to mail address with his enrollment status with my course if accpted or not based on the accpted result below if true mean accepted other mean not accepted\n {{ $json.output.accepted }}\n- also use this data of the registered user to format professional email for accepted and rejected.\n{{ $('Combine User Data').item.json.user_context }}\n- - if student \"accepted\" value is false then guide him in the email to check first 60 videos from this youtube playlist \nhttps://www.youtube.com/playlist?list=PL28DDB2DCF87BEE43\n- confirm sending only one email based on accepted result true or false below\n{{ $json.output.accepted }}\n- confirm to use html template on System Message",
        "options": {
          "systemMessage": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n  <style>\n    body {\n      font-family: 'Segoe UI', sans-serif;\n      background-color: #f4f6f9;\n      padding: 30px;\n      color: #333;\n    }\n\n    .container {\n      max-width: 800px;\n      background: #fff;\n      margin: auto;\n      padding: 40px;\n      border-radius: 12px;\n      box-shadow: 0 0 15px rgba(0,0,0,0.05);\n    }\n\n    h1 {\n      color: #0056b3;\n      margin-bottom: 10px;\n    }\n\n    .status {\n      padding: 15px;\n      border-radius: 5px;\n      font-size: 1.1rem;\n      margin-bottom: 20px;\n    }\n\n    .accepted {\n      background-color: #e6ffed;\n      border-left: 5px solid #28a745;\n      color: #155724;\n    }\n\n    .rejected {\n      background-color: #fff3f3;\n      border-left: 5px solid #dc3545;\n      color: #721c24;\n    }\n\n    .details {\n      margin-top: 20px;\n    }\n\n    .details h2 {\n      color: #333;\n      margin-bottom: 10px;\n    }\n\n    .details p {\n      margin: 5px 0;\n    }\n\n    .summary {\n      margin-top: 30px;\n      padding: 15px;\n      background: #f0f8ff;\n      border-left: 5px solid #007bff;\n    }\n\n    strong {\n      color: #000;\n    }\n\n    .signature {\n      margin-top: 40px;\n      font-style: italic;\n      color: #333;\n      border-top: 1px solid #ddd;\n      padding-top: 20px;\n      text-align: right;\n      font-size: 1rem;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <h1>📨 Enrollment Status Notification</h1>\n\n    {{#if $json.output.accepted}}\n      <div class=\"status accepted\">\n        ✅ <strong>{{ $('Combine User Data').item.json.user_context.name }}</strong> has been <strong>accepted</strong> into the course.\n      </div>\n    {{else}}\n      <div class=\"status rejected\">\n        ❌ <strong>{{ $('Combine User Data').item.json.user_context.name }}</strong> was <strong>not accepted</strong> into the course at this time.\n      </div>\n    {{/if}}\n\n    <div class=\"details\">\n      <h2>📄 Student Details</h2>\n      <p><strong>Name:</strong> {{ $('Combine User Data').item.json.user_context.name }}</p>\n      <p><strong>Email:</strong> {{ $('Combine User Data').item.json.user_context.email }}</p>\n      <p><strong>WhatsApp:</strong> {{ $('Combine User Data').item.json.user_context.whatsapp }}</p>\n      <p><strong>Programming Basics:</strong> {{ $('Combine User Data').item.json.user_context.has_basics }}</p>\n      <p><strong>Availability:</strong> {{ $('Combine User Data').item.json.user_context.availability }}</p>\n    </div>\n\n    <div class=\"summary\">\n      <h3>📬 Email Summary</h3>\n      <ul>\n        {{#if $json.output.accepted}}\n          <li><strong>Acceptance Email:</strong> Sent successfully to {{ $('Combine User Data').item.json.user_context.email }}</li>\n        {{else}}\n          <li><strong>Rejection Email:</strong> Sent to {{ $('Combine User Data').item.json.user_context.email }}</li>\n        {{/if}}\n        <li>Notification processed automatically based on form input.</li>\n      </ul>\n    </div>\n\n    <div class=\"signature\">\n      Best regards,<br>\n      <strong>Shady Ahmed</strong><br>\n      Automation Instructor\n    </div>\n  </div>\n</body>\n</html>"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "12297e0d-48a3-4a7b-a511-922a1f97b004",
      "name": "OpenAI 聊天模型1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1504,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "CXEjPKMAyq5p5Jjm",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "34f98f22-8839-43cc-a4e2-df4b28828bff",
      "name": "在 Gmail 中发送消息",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        1968,
        144
      ],
      "webhookId": "dec56e5e-50e9-48f0-95f5-5118f5ccb2eb",
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json['Email Address'] }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "JfSof8X3kWXePnXK",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "dbf537a6-8c5c-460b-8d76-695eb2ab79fb",
      "name": "在表格中追加行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1984,
        -272
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $('On form submission').item.json['Full Name'] }}",
            "Time": "={{ $('On form submission').item.json.submittedAt }}",
            "Email": "={{ $('On form submission').item.json['Email Address'] }}",
            "Accepted": "={{ $('AI Agent').item.json.output.accepted }}",
            "WhatsApp": "={{ $('On form submission').item.json['WhatsApp Number'] }}",
            "Have Basics of Programming": "={{ $('On form submission').item.json['Do you have basics of any programming language?'] }}",
            "Agree to Terms and Conditions": "={{ $('On form submission').item.json['Terms and Conditions'] }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "WhatsApp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "WhatsApp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Have Basics of Programming",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Have Basics of Programming",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Agree to Terms and Conditions",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Agree to Terms and Conditions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Accepted",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Accepted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1HxM_NWizFnOhf4jk-7BQRpTvfd9xQuFNfGrH5hiqTxA/edit#gid=0",
          "cachedResultName": "API"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1HxM_NWizFnOhf4jk-7BQRpTvfd9xQuFNfGrH5hiqTxA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1HxM_NWizFnOhf4jk-7BQRpTvfd9xQuFNfGrH5hiqTxA/edit?usp=drivesdk",
          "cachedResultName": "Course Enrollment"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lCnwBHjgpXXtRTYx",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9fb77584-d69e-4e5e-8550-3ce40e72684e",
      "name": "Pinecone Vector Store1",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        1632,
        144
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "topK": 5,
        "options": {},
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "course-enrollment",
          "cachedResultName": "course-enrollment"
        },
        "toolDescription": "=retreive data based on this email:  {{ $('On form submission').item.json['Email Address'] }}"
      },
      "credentials": {
        "pineconeApi": {
          "id": "ZRuijEjAOJkoX2hV",
          "name": "PineconeApi account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "efb9c765-3141-4264-ba4c-433756c685e8",
      "name": "嵌入 Google Gemini1",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "position": [
        1712,
        304
      ],
      "parameters": {},
      "credentials": {
        "googlePalmApi": {
          "id": "VhlEL4kZCaqxUKQd",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b24a262a-d576-4b24-837e-b375b45404cd",
  "connections": {
    "d80d0ad8-779d-4c61-a78b-e655b18c7879": {
      "main": [
        [
          {
            "node": "b3122baf-ca34-4f58-b4b9-4c01acf20f3c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b3122baf-ca34-4f58-b4b9-4c01acf20f3c": {
      "main": [
        [
          {
            "node": "dbf537a6-8c5c-460b-8d76-695eb2ab79fb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "922f1c54-bf54-47dc-845f-f824749fc09a": {
      "main": [
        [
          {
            "node": "86cb7c06-c364-40d9-a147-ddb37f84c981",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6c60192e-98d6-492d-83ec-08ebb6ee3a63": {
      "main": [
        [
          {
            "node": "922f1c54-bf54-47dc-845f-f824749fc09a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2175cf5a-a984-437d-a636-2ad403ed175d": {
      "ai_languageModel": [
        [
          {
            "node": "d80d0ad8-779d-4c61-a78b-e655b18c7879",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "912fb0fd-fef4-4feb-8112-6418581342b8": {
      "main": [
        [
          {
            "node": "6c60192e-98d6-492d-83ec-08ebb6ee3a63",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "12297e0d-48a3-4a7b-a511-922a1f97b004": {
      "ai_languageModel": [
        [
          {
            "node": "b3122baf-ca34-4f58-b4b9-4c01acf20f3c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0a217b14-1ecb-42ac-9e33-a5d193465010": {
      "ai_document": [
        [
          {
            "node": "86cb7c06-c364-40d9-a147-ddb37f84c981",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "86cb7c06-c364-40d9-a147-ddb37f84c981": {
      "main": [
        [
          {
            "node": "d80d0ad8-779d-4c61-a78b-e655b18c7879",
            "type": "main",
            "index": 0
          }
        ]
      ],
      "ai_tool": [
        []
      ]
    },
    "9fb77584-d69e-4e5e-8550-3ce40e72684e": {
      "ai_tool": [
        [
          {
            "node": "b3122baf-ca34-4f58-b4b9-4c01acf20f3c",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "34f98f22-8839-43cc-a4e2-df4b28828bff": {
      "ai_tool": [
        [
          {
            "node": "b3122baf-ca34-4f58-b4b9-4c01acf20f3c",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "cbd60d6a-773c-4aca-8ac6-5927cb5b9259": {
      "ai_embedding": [
        [
          {
            "node": "86cb7c06-c364-40d9-a147-ddb37f84c981",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "3c2a315b-c88c-49f8-b9b6-1bd9139286bc": {
      "ai_outputParser": [
        [
          {
            "node": "d80d0ad8-779d-4c61-a78b-e655b18c7879",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "efb9c765-3141-4264-ba4c-433756c685e8": {
      "ai_embedding": [
        [
          {
            "node": "9fb77584-d69e-4e5e-8550-3ce40e72684e",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 工单管理, AI 摘要总结

需要付费吗?

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

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

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

外部链接
在 n8n.io 查看

分享此工作流

分类

分类: 34