AutomationFlowsData & Sheets › Auto-Generate CS Manual from Notion Product Status

Auto-Generate CS Manual from Notion Product Status

Original n8n title: 파이프라인 ① Cs 매뉴얼 초안 생성

파이프라인 ① CS 매뉴얼 초안 생성. Uses notionTrigger, httpRequest. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexity8 nodesNotion TriggerHTTP Request
Data & Sheets Trigger: Event Nodes: 8 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "\ud30c\uc774\ud504\ub77c\uc778 \u2460 CS \ub9e4\ub274\uc5bc \ucd08\uc548 \uc0dd\uc131",
  "nodes": [
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "event": "pagedUpdatedInDatabase",
        "databaseId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $env.NOTION_PRODUCT_DB_ID }}"
        },
        "simple": false
      },
      "id": "notion-trigger",
      "name": "Notion \uc0c1\ud488 \uc0c1\ud0dc \ubcc0\uacbd \uac10\uc9c0",
      "type": "n8n-nodes-base.notionTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "leftValue": "={{ $json.properties['\uc0c1\ud0dc'].select.name }}",
              "rightValue": "\ub7f0\uce6d\ub300\uae30",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        }
      },
      "id": "if-status-ready",
      "name": "\uc0c1\ud0dc = \ub7f0\uce6d\ub300\uae30 \uccb4\ud06c",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.notion.com/v1/databases/{{ $env.NOTION_RESEARCH_DB_ID }}/query",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "notionApi",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Notion-Version",
              "value": "2022-06-28"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"filter\": {\n    \"property\": \"\uc0c1\ud488\",\n    \"relation\": {\n      \"contains\": \"{{ $json.id }}\"\n    }\n  }\n}"
      },
      "id": "notion-get-research",
      "name": "\uc2dc\uc7a5\uc870\uc0ac \ubcf4\uace0\uc11c \uc870\ud68c",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        -100
      ]
    },
    {
      "parameters": {
        "jsCode": "// \uc0c1\ud488 \uc815\ubcf4\uc640 \uc2dc\uc7a5\uc870\uc0ac \ub370\uc774\ud130 \ud1b5\ud569\nconst product = $('\uc0c1\ud0dc = \ub7f0\uce6d\ub300\uae30 \uccb4\ud06c').first().json;\nconst research = $input.first().json;\n\n// \uc2dc\uc7a5\uc870\uc0ac \ub370\uc774\ud130 \ucd94\ucd9c\nlet researchData = {};\nif (research.results && research.results.length > 0) {\n  const r = research.results[0];\n  researchData = {\n    competitors: r.properties['\uacbd\uc7c1\uc0ac \ubd84\uc11d']?.rich_text?.[0]?.text?.content || '',\n    target: r.properties['\ud0c0\uac9f \uace0\uac1d']?.rich_text?.[0]?.text?.content || '',\n    usp: r.properties['USP']?.rich_text?.[0]?.text?.content || '',\n    cautions: r.properties['\uc8fc\uc758\uc0ac\ud56d']?.rich_text?.[0]?.text?.content || ''\n  };\n}\n\nreturn [{\n  json: {\n    product_id: product.id,\n    product_name: product.properties['\uc0c1\ud488\uba85']?.title?.[0]?.text?.content || '',\n    category: product.properties['\uce74\ud14c\uace0\ub9ac']?.select?.name || '',\n    detail_page_url: product.properties['\ud53c\uadf8\ub9c8URL']?.url || '',\n    market_research: researchData\n  }\n}];"
      },
      "id": "merge-data",
      "name": "\ub370\uc774\ud130 \ud1b5\ud569",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"contents\": [{\n    \"parts\": [{\n      \"text\": \"\ub2f9\uc2e0\uc740 \uc774\ucee4\uba38\uc2a4 CS \uc804\ubb38\uac00\uc785\ub2c8\ub2e4. \uc544\ub798 \uc790\ub8cc\ub97c \ubd84\uc11d\ud558\uc5ec CS \ub9e4\ub274\uc5bc\uc744 \uc791\uc131\ud558\uc138\uc694.\\n\\n[\uc0c1\ud488 \uc815\ubcf4]\\n- \uc0c1\ud488\uba85: {{ $json.product_name }}\\n- \uce74\ud14c\uace0\ub9ac: {{ $json.category }}\\n\\n[\uc2dc\uc7a5\uc870\uc0ac \ub370\uc774\ud130]\\n- \uacbd\uc7c1\uc0ac: {{ $json.market_research.competitors }}\\n- \ud0c0\uac9f \uace0\uac1d: {{ $json.market_research.target }}\\n- USP: {{ $json.market_research.usp }}\\n- \uc8fc\uc758\uc0ac\ud56d: {{ $json.market_research.cautions }}\\n\\n[\ucd9c\ub825 \ud615\uc2dd - JSON\uc73c\ub85c \uc751\ub2f5]\\n{\\n  \\\"usp\\\": [\\\"\uac15\uc8101\\\", \\\"\uac15\uc8102\\\", \\\"\uac15\uc8103\\\"],\\n  \\\"specs\\\": \\\"\uc8fc\uc694 \uc2a4\ud399 \uc815\ub9ac\\\",\\n  \\\"cautions\\\": \\\"\uc0ac\uc6a9 \uc2dc \uc8fc\uc758\uc0ac\ud56d\\\",\\n  \\\"faq\\\": [\\n    {\\\"q\\\": \\\"\uc608\uc0c1 \uc9c8\ubb381\\\", \\\"a\\\": \\\"\ub2f5\ubcc01\\\"},\\n    {\\\"q\\\": \\\"\uc608\uc0c1 \uc9c8\ubb382\\\", \\\"a\\\": \\\"\ub2f5\ubcc02\\\"}\\n  ],\\n  \\\"key_phrases\\\": \\\"\uace0\uac1d \uc751\ub300 \uc2dc \ud575\uc2ec \uba58\ud2b8\\\"\\n}\"\n    }]\n  }],\n  \"generationConfig\": {\n    \"temperature\": 0.7,\n    \"maxOutputTokens\": 2048\n  }\n}"
      },
      "id": "gemini-generate",
      "name": "Gemini \ub9e4\ub274\uc5bc \uc0dd\uc131",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        880,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "// Gemini \uc751\ub2f5 \ud30c\uc2f1\nconst response = $input.first().json;\nconst productData = $('\ub370\uc774\ud130 \ud1b5\ud569').first().json;\n\nlet manualContent = {};\ntry {\n  const text = response.candidates[0].content.parts[0].text;\n  // JSON \ubd80\ubd84\ub9cc \ucd94\ucd9c (```json ... ``` \ud615\uc2dd \ucc98\ub9ac)\n  const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n  if (jsonMatch) {\n    manualContent = JSON.parse(jsonMatch[0]);\n  }\n} catch (e) {\n  manualContent = {\n    usp: ['\ud30c\uc2f1 \uc2e4\ud328'],\n    specs: '',\n    cautions: '',\n    faq: [],\n    key_phrases: ''\n  };\n}\n\nreturn [{\n  json: {\n    product_id: productData.product_id,\n    product_name: productData.product_name,\n    category: productData.category,\n    ...manualContent,\n    generated_at: new Date().toISOString()\n  }\n}];"
      },
      "id": "parse-response",
      "name": "\uc751\ub2f5 \ud30c\uc2f1",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1100,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.notion.com/v1/pages",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "notionApi",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Notion-Version",
              "value": "2022-06-28"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"parent\": { \"database_id\": \"{{ $env.NOTION_MANUAL_DB_ID }}\" },\n  \"properties\": {\n    \"\uc0c1\ud488\uba85\": { \"title\": [{ \"text\": { \"content\": \"{{ $json.product_name }}\" } }] },\n    \"\uce74\ud14c\uace0\ub9ac\": { \"select\": { \"name\": \"{{ $json.category }}\" } },\n    \"USP\": { \"rich_text\": [{ \"text\": { \"content\": \"{{ $json.usp.join(', ') }}\" } }] },\n    \"\uc2a4\ud399\": { \"rich_text\": [{ \"text\": { \"content\": \"{{ $json.specs }}\" } }] },\n    \"FAQ\": { \"rich_text\": [{ \"text\": { \"content\": \"{{ JSON.stringify($json.faq) }}\" } }] },\n    \"\uc0dd\uc131\uc77c\": { \"date\": { \"start\": \"{{ $json.generated_at.split('T')[0] }}\" } },\n    \"\uc0c1\ud0dc\": { \"select\": { \"name\": \"\ucd08\uc548\" } }\n  }\n}"
      },
      "id": "notion-create-manual",
      "name": "Notion \ub9e4\ub274\uc5bc DB \ub4f1\ub85d",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1320,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $env.JANDI_WEBHOOK_URL }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"body\": \"[CS \ub9e4\ub274\uc5bc] \ucd08\uc548 \uc0dd\uc131 \uc644\ub8cc\",\n  \"connectColor\": \"#00C73C\",\n  \"connectInfo\": [\n    {\n      \"title\": \"\uc0c1\ud488\",\n      \"description\": \"{{ $('\uc751\ub2f5 \ud30c\uc2f1').first().json.product_name }}\"\n    },\n    {\n      \"title\": \"\uc0c1\ud0dc\",\n      \"description\": \"\uac80\ud1a0 \uc694\uccad\"\n    }\n  ]\n}"
      },
      "id": "jandi-notify",
      "name": "\uc794\ub514 \uc54c\ub9bc",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1540,
        0
      ]
    }
  ],
  "connections": {
    "Notion \uc0c1\ud488 \uc0c1\ud0dc \ubcc0\uacbd \uac10\uc9c0": {
      "main": [
        [
          {
            "node": "\uc0c1\ud0dc = \ub7f0\uce6d\ub300\uae30 \uccb4\ud06c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uc0c1\ud0dc = \ub7f0\uce6d\ub300\uae30 \uccb4\ud06c": {
      "main": [
        [
          {
            "node": "\uc2dc\uc7a5\uc870\uc0ac \ubcf4\uace0\uc11c \uc870\ud68c",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "\uc2dc\uc7a5\uc870\uc0ac \ubcf4\uace0\uc11c \uc870\ud68c": {
      "main": [
        [
          {
            "node": "\ub370\uc774\ud130 \ud1b5\ud569",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ub370\uc774\ud130 \ud1b5\ud569": {
      "main": [
        [
          {
            "node": "Gemini \ub9e4\ub274\uc5bc \uc0dd\uc131",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini \ub9e4\ub274\uc5bc \uc0dd\uc131": {
      "main": [
        [
          {
            "node": "\uc751\ub2f5 \ud30c\uc2f1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uc751\ub2f5 \ud30c\uc2f1": {
      "main": [
        [
          {
            "node": "Notion \ub9e4\ub274\uc5bc DB \ub4f1\ub85d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion \ub9e4\ub274\uc5bc DB \ub4f1\ub85d": {
      "main": [
        [
          {
            "node": "\uc794\ub514 \uc54c\ub9bc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}
Pro

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

About this workflow

파이프라인 ① CS 매뉴얼 초안 생성. Uses notionTrigger, httpRequest. Event-driven trigger; 8 nodes.

Source: https://github.com/USEONGEE/n8n-example/blob/8d817d796e277931d4ecd47aaad930bf3afcca9c/.n8n/pipeline-1-manual-generation.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

This workflow converts Notion pages to markdown, and then converts that markdown back to Notion blocks. It will triple the content of the last updated page it finds. This is useless by itself, but you

Notion Trigger, Notion, HTTP Request
Data & Sheets

Invoice OCR with NOTION and MINDEE. Uses httpRequest, mindee, notion, notionTrigger. Event-driven trigger; 11 nodes.

HTTP Request, Mindee, Notion +1
Data & Sheets

Create images with NOTION and RENDERFORM. Uses notionTrigger, httpRequest, notion. Event-driven trigger; 9 nodes.

Notion Trigger, HTTP Request, Notion
Data & Sheets

Workflow 01.01. Uses notion, executeWorkflowTrigger, httpRequest. Event-driven trigger; 60 nodes.

Notion, Execute Workflow Trigger, HTTP Request
Data & Sheets

Lmchatopenai Workflow. Uses noOp, stickyNote, executeWorkflowTrigger, airtable. Event-driven trigger; 41 nodes.

Execute Workflow Trigger, Airtable, HTTP Request