8
n8n 한국어amn8n.com

회의 요약 생성기

중급

이것은AI Summarization, Multimodal AI분야의자동화 워크플로우로, 12개의 노드를 포함합니다.주로 Code, GoogleDrive, HttpRequest, GoogleDocsTool, Agent 등의 노드를 사용하며. Google Drive, Gemini AI 및 Google Docs를 사용한 자동화된 회의 요약

사전 요구사항
  • Google Drive API 인증 정보
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "LRTza7My8IikYhSU",
  "meta": {
    "instanceId": "86b74eba715cda37acd36ddce700cd975f9e153aba76b42417c4c1f89dcd777e",
    "templateCredsSetupCompleted": true
  },
  "name": "Meeting Summarizer",
  "tags": [],
  "nodes": [
    {
      "id": "1dcb61d9-0f7c-4b86-8b71-5f3140447b22",
      "name": "요약 문서 생성",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        432,
        144
      ],
      "parameters": {
        "title": "={{ $('Execute when new file created of meeting of audio/video').item.json.name.replace(/\\.mp4$/, '') }}",
        "folderId": "default"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "0dKnfLHBs7hVSMo4",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "dad59a23-6608-4b2c-8059-e324fd2bd5f5",
      "name": "구조화된 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        592,
        224
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"summary_text\": \"Meeting Summary - August 31, 2025\\n\\n- Book club for \\\"Inspired\\\" scheduled for August 7th.\\n- New hires must read \\\"Inspired\\\" as part of onboarding.\\n- Customer interviews: Follow up with contacts from CS and Sales.\\n- Q3 engagement survey to be completed by all members.\",\n  \"doc_id\": \"1-Ht71Q5_0Owh1NRApRn9b9uAqbciwVuWAL_3IvoHIkk\"\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "a2becdc5-fb1a-44de-9e01-3b4b95cf311d",
      "name": "생성된 회의 파일 다운로드",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -80,
        -16
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $json.webViewLink }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "MlBEh59DqIzyGlyS",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "34a20bdd-ed41-4af7-82c7-f6aa4705228d",
      "name": "해당 파일을 텍스트로 변환",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        128,
        -16
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "resource": "audio",
        "inputType": "binary"
      },
      "typeVersion": 1
    },
    {
      "id": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
      "name": "해당 텍스트 요약",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        336,
        -16
      ],
      "parameters": {
        "text": "={{ $json.content.parts[0].text }}",
        "options": {
          "systemMessage": "=You are an assistant that processes meeting transcripts.  \n\nYour job is to:  \n1. Read the meeting transcript provided.  \n2. Extract the main discussion points.  \n   - Keep them short, clear, and action-oriented.  \n   - Focus only on decisions, tasks, or important updates.   \n\nGoogle Docs Rules:  \n- If the Google Doc for this project/meeting does not exist → **create a Summary Docs** with the formatted summary.  \n\nGive summary and docs id Give both Seprately.\n\nFormatting rules:\n- Start with a title in this format: 📌 Meeting Summary – {{new Date().toLocaleDateString()}}\n- Use bold section headers like **✦ Key Discussions** and **✓ Action Items**.\n- Use ✦ bullets for general discussion points.\n- Use ✓ checkmarks for tasks or follow-ups.\n- Keep sentences short, clear, and actionable.\n- Add blank lines between sections for readability.\n- Avoid long paragraphs — use concise bullets only."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "e506c53d-b861-4f0d-81ae-bca14ad8aeb2",
      "name": "새로운 오디오/비디오 회의 파일 생성 시 실행",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        -288,
        -16
      ],
      "parameters": {
        "event": "fileCreated",
        "options": {
          "fileType": "all"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "list",
          "value": "1EongmFhQf1avt1jamhV6aO6MIORrzNvT",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1EongmFhQf1avt1jamhV6aO6MIORrzNvT",
          "cachedResultName": "Speech of Meetings"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ae5f4fb0-a96b-44a5-b291-c92119508300",
      "name": "Google Gemini 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        288,
        224
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "Vn0WzAXggurbHNTb",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "765dd6e3-1d95-409e-b640-2162a15304be",
      "name": "요약 형식 지정",
      "type": "n8n-nodes-base.code",
      "position": [
        848,
        -16
      ],
      "parameters": {
        "jsCode": "// Get text from previous node (adjust field if needed)\nconst input = $input.first().json.output.summary_text;\n\n// Step 1: Clean text (normalize line breaks)\nlet text = input.replace(/\\r\\n/g, \"\\n\");\n\n// Step 2: Parse into plain text + style spans\nlet plainText = \"\";\nlet styles = [];\nlet bullets = [];\nlet cursor = 1;\n\nconst lines = text.split(\"\\n\");\n\nfor (let line of lines) {\n  if (!line.trim()) {\n    plainText += \"\\n\";\n    cursor++;\n    continue;\n  }\n\n  let isBullet = false;\n  if (line.trim().startsWith(\"✦\") || line.trim().startsWith(\"✓\") || line.trim().startsWith(\"-\")) {\n    isBullet = true;\n    line = line.trim().substring(1).trim();\n  }\n\n  const regex = /(\\*\\*([^*]+)\\*\\*|\\*([^*]+)\\*|([^*]+))/g;\n  let match;\n  while ((match = regex.exec(line)) !== null) {\n    let raw = match[0];\n    let clean = match[2] || match[3] || match[4] || \"\";\n    const start = cursor;\n    const end = cursor + clean.length;\n\n    plainText += clean;\n\n    if (raw.startsWith(\"**\")) {\n      styles.push({\n        range: { startIndex: start, endIndex: end },\n        textStyle: { bold: true },\n        fields: \"bold\"\n      });\n    } else if (raw.startsWith(\"*\")) {\n      styles.push({\n        range: { startIndex: start, endIndex: end },\n        textStyle: { italic: true },\n        fields: \"italic\"\n      });\n    }\n\n    cursor = end;\n  }\n\n  plainText += \"\\n\";\n  cursor++;\n\n  if (isBullet) {\n    bullets.push({\n      range: {\n        startIndex: cursor - line.length - 1,\n        endIndex: cursor\n      },\n      bulletPreset: \"BULLET_DISC_CIRCLE_SQUARE\"\n    });\n  }\n}\n\n// Step 3: Build requests\nlet requests = [];\n\n// Insert everything at once\nrequests.push({\n  insertText: {\n    endOfSegmentLocation: {},\n    text: plainText\n  }\n});\n\n// Add styles\nfor (let s of styles) {\n  requests.push({\n    updateTextStyle: {\n      range: s.range,\n      textStyle: s.textStyle,\n      fields: s.fields\n    }\n  });\n}\n\n// Add bullets\nfor (let b of bullets) {\n  requests.push({\n    createParagraphBullets: b\n  });\n}\n\nreturn [\n  {\n    json: { requests }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "d9d69f04-139d-45c3-bdd2-15846639fe84",
      "name": "생성된 문서에 요약 전송",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1056,
        -16
      ],
      "parameters": {
        "url": "=https://docs.googleapis.com/v1/documents/{{ $('Summerizer of that text').item.json.output.doc_id }}:batchUpdate",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "requests",
              "value": "={{ $json.requests }}"
            }
          ]
        },
        "nodeCredentialType": "googleDocsOAuth2Api"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "0dKnfLHBs7hVSMo4",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "47cb35a1-691c-452d-a5a4-e5d463b60d93",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        -128
      ],
      "parameters": {
        "color": 5,
        "width": 1088,
        "height": 528,
        "content": "### Summary Generation\n"
      },
      "typeVersion": 1
    },
    {
      "id": "91ae59b0-7399-451e-b05d-5b066801298b",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        -96
      ],
      "parameters": {
        "color": 3,
        "width": 528,
        "height": 352,
        "content": "### Docs Formatter & Sender\n"
      },
      "typeVersion": 1
    },
    {
      "id": "dc392200-438b-4cb4-b057-e3803dbd21fe",
      "name": "스티커 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1744,
        -544
      ],
      "parameters": {
        "width": 1328,
        "height": 1264,
        "content": "# 🎤 AI Meeting Summary Generator with Google Docs Integration\n## 📋 Overview\n- Automated system that takes meeting audio/video files from Google Drive, transcribes them, generates concise summaries with AI, and formats everything neatly into Google Docs.\n\n## 🔄 How It Works\n#### Real-Time Processing\n1. 🎥 Record Meeting Audio/Video → Capture your meeting and place the file into your chosen Google Drive folder.\n1. 📂 Google Drive Trigger → Watches that folder (e.g., “Speech of Meetings”) for new uploads.\n2. ⬇️ Download File → Fetches the newly uploaded file from Google Drive.\n3. 🎙 Transcribe File (Gemini Audio Model) → Converts meeting speech into raw text transcript.\n4. ✍️ Summarizer (Gemini Agent) → Reads transcript → extracts:\n          - ✦ Key Discussions\n          - ✓ Action Items\n          - Adds title with date, structured bullets, and checkmarks.\n\n#### Document Creation & Structuring\n5. 📄 Create Summary Docs (Google Docs Tool) → Creates a new Google Doc if none exists for the meeting.\n6. 📊 Structured Output Parser → Ensures AI output is structured (summary_text + doc_id).\n7. 🎨 Format Summary (Code Node) → Applies formatting rules:\n- Bold/italic text\n- Bullet points (✦)\n- Checkmarks (✓)\n- Clean line spacing for readability\n\n#### Final Output\n8. 🚀 Send to Google Docs (BatchUpdate API) → Pushes formatted summary into the newly created Google Doc.\n\n## ⚙️ Configuration Required\n#### Credentials Needed:\n- 🔑 Google Drive OAuth2 → For file monitoring & downloads\n- 🔑 Google Docs OAuth2 → For creating & updating docs\n- 🔑 Google Gemini (PaLM) API → For transcription + summarization\n\n#### Settings:\n- Trigger: Every new file created in the specified Drive folder\n- AI Model: gemini-2.5-flash for transcription & summarization\n- Output: Google Docs with structured & styled meeting notes\n\n## 🎯 Key Features\n✅ Auto-transcription of meeting audio/video\n✅ Smart AI-generated summaries (Key Discussions + Action Items)\n✅ Google Docs integration with professional formatting\n✅ Structured JSON parsing for reliable updates\n✅ End-to-end automation (no manual intervention needed)\n\n## 📝 Notes\n- Works for both audio & video meeting files\n- Creates a new doc per meeting automatically\n- Uses batchUpdate API for fine formatting (bullets, bold, italics)\n- Keeps summaries short, clear, and action-oriented"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c86cf8a3-6cb7-40f5-bddc-9181721cb0b4",
  "connections": {
    "765dd6e3-1d95-409e-b640-2162a15304be": {
      "main": [
        [
          {
            "node": "d9d69f04-139d-45c3-bdd2-15846639fe84",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1dcb61d9-0f7c-4b86-8b71-5f3140447b22": {
      "ai_tool": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "221e5fff-cc2a-4ffd-b739-7ac9722527ce": {
      "main": [
        [
          {
            "node": "765dd6e3-1d95-409e-b640-2162a15304be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ae5f4fb0-a96b-44a5-b291-c92119508300": {
      "ai_languageModel": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "dad59a23-6608-4b2c-8059-e324fd2bd5f5": {
      "ai_outputParser": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "34a20bdd-ed41-4af7-82c7-f6aa4705228d": {
      "main": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a2becdc5-fb1a-44de-9e01-3b4b95cf311d": {
      "main": [
        [
          {
            "node": "34a20bdd-ed41-4af7-82c7-f6aa4705228d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e506c53d-b861-4f0d-81ae-bca14ad8aeb2": {
      "main": [
        [
          {
            "node": "a2becdc5-fb1a-44de-9e01-3b4b95cf311d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - AI 요약, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수12
카테고리2
노드 유형10
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Parth Pansuriya

Parth Pansuriya

@parthpansuriya

I build smart and scalable automation workflows using n8n to simplify tasks, connect apps, and boost productivity. From WhatsApp bots to AI-powered systems, I create seamless automations tailored for business and creators.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34