Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anpigon/9b00cd9959fd3bf7bc1bfaf6fa48cd81 to your computer and use it in GitHub Desktop.
Save anpigon/9b00cd9959fd3bf7bc1bfaf6fa48cd81 to your computer and use it in GitHub Desktop.
구글 제미나이를 사용한 유튜브 영상 요약 n8n 워크플로우
{
"name": "Summarize YouTube Videos with Google Gemini 2.5",
"nodes": [
{
"parameters": {
"content": "## YouTube Video Summarization Workflow\n\n이 워크플로우는 다음 단계를 통해 YouTube 영상의 요약을 자동화합니다:\n\n1. Form Trigger: 사용자로부터 YouTube URL 입력\n2. Set (Summary Prompt): AI에 전달할 프롬프트 구성\n3. HTTP Request: Google Gemini(PaLM) 모델에 요청\n4. Set (Output): 응답에서 요약 텍스트 추출\n5. No Operation: 워크플로우 종료\n\n• 모델: Gemini 2.5 Flash\n• 자격증명: n8n Credential Manager의 Google Palm API 사용\n\n### 제한 사항\n- 공개된 YouTube 영상만 처리 가능(비공개 또는 비공개 동영상은 처리할 수 없음).\n- API 할당량 제한이 있을 수 있음(무료 티어는 하루 8시간. 유료 티어는 제한 없음).",
"height": 380,
"width": 1140,
"color": 7
},
"id": "07acb4e8-39c1-4dc6-aaac-0b086b5df71f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-260
],
"typeVersion": 1
},
{
"parameters": {
"content": "YouTube URL을 입력하세요.\n\n필요 시 다른 트리거(예: Webhook, Schedule Trigger)로 변경할 수 있습니다.",
"height": 100,
"width": 290
},
"id": "8cb5183e-9302-4415-b5c9-bcceab66f608",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
480
],
"typeVersion": 1
},
{
"parameters": {
"content": "HTTP Request 노드에 미리 정의된 Google Palm API 자격증명을 사용합니다.\n\n• Endpoint: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent\n• 인증 정보는 Credential Manager에서 관리됩니다.",
"height": 360,
"width": 280,
"color": 3
},
"id": "96ba7e22-eb2a-4063-8bec-1131f5f884b7",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
380,
140
],
"typeVersion": 1
},
{
"parameters": {},
"id": "679ce767-271c-4caf-860f-357c4a194824",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
1040,
340
],
"typeVersion": 1
},
{
"parameters": {
"formTitle": "YouTube 동영상 요약",
"formFields": {
"values": [
{
"fieldLabel": "Youtube URL",
"placeholder": "유튜브 URL을 입력하세요."
}
]
},
"responseMode": "lastNode",
"options": {}
},
"id": "e3ea71af-6eaf-4627-9381-147190d38311",
"name": "YouTube video URL",
"type": "n8n-nodes-base.formTrigger",
"position": [
20,
340
],
"webhookId": "8fc21e3b-8434-490f-b38d-1923fdadc8dd",
"typeVersion": 2.2
},
{
"parameters": {
"content": "☝️ 선택사항 \n만약 워크플로가 여기서 끝난다면, 다른 강화 서비스와 확인을 고려하세요.\n\n추가 확장 기능:\n\n• 요약 결과를 Notion, Google Sheets 등에 저장\n• 번역 또는 감성 분석 노드 연결\n• Slack 또는 이메일로 알림 전송",
"height": 180,
"width": 440,
"color": 4
},
"id": "a64e9724-63d7-47b9-842f-b4b673a373cb",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
480
],
"typeVersion": 1
},
{
"parameters": {
"content": "Summary Prompt 노드에서 지정한 프롬프트를 기반으로 PaLM 모델이 핵심 내용을 추출합니다.\n\nOutput 노드에서 최종 요약 결과를 확인할 수 있습니다.",
"height": 360,
"width": 280,
"color": 5
},
"id": "8c886b1c-01c5-4ad2-82e4-917b39e8a25e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
700,
140
],
"typeVersion": 1
},
{
"parameters": {
"method": "POST",
"url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googlePalmApi",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": \"{{ $('Summary Prompt').item.json['text'] }}\"\n },\n {\n \"file_data\": {\n \"file_uri\": \"{{ $('YouTube video URL').item.json['Youtube URL'] }}\"\n }\n }\n ]\n }\n ]\n}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
340
],
"id": "da54eef9-6757-4cc6-b9ad-85fe6f73c153",
"name": "HTTP Request",
"credentials": {
"googlePalmApi": {
"id": "51V2X1yPT6FghBrv",
"name": "Google Gemini(PaLM) Api account"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b9541a30-c22d-46be-8377-db08a0fcabfd",
"name": "text",
"value": "=# 역할 당신은 유튜브 영상의 스크립트를 분석하여 핵심 내용만을 정확하고 간결하게 요약하는 전문 요약가입니다. # 지시사항 제공되는 유튜브 영상 스크립트를 바탕으로, 다음 원칙에 따라 핵심 내용을 한국어로 요약해 주세요. # 요약 원칙 1. **핵심 정보 식별:** 영상의 주제, 주요 주장, 핵심 근거, 결론을 정확하게 파악합니다. 2. **간결한 문장:** 누구나 이해하기 쉽도록 복잡한 문장은 피하고 명확하고 간결하게 작성합니다. 3. **객관적 시각 유지:** 개인적인 의견이나 추측은 배제하고, 영상에서 제시된 내용만을 기반으로 요약합니다. 4. **구조화:** 전체 내용을 쉽게 파악할 수 있도록 서론, 본론, 결론 또는 글머리 기호 등을 사용하여 구조적으로 제시합니다. 5. **불필요한 내용 제거:** 예시, 농담, 개인적인 이야기 등 핵심 내용과 관련 없는 부분은 과감하게 생략합니다. # 출력 형식 **1. 영상 제목:** [영상 제목] **2. 한 줄 요약:** [영상 전체 내용을 한 문장으로 압축하여 요약] **3. 핵심 내용 요약:** * **[소주제 1]:** [첫 번째 핵심 내용] * **[소주제 2]:** [두 번째 핵심 내용] * **[소주제 3]:** [세 번째 핵심 내용] * (필요시) 하위 항목 추가 **4. 결론:** [영상의 최종 결론이나 시청자에게 전달하는 핵심 메시지]",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
240,
340
],
"id": "232fb2ad-b406-42b6-839b-e9d4dc237b29",
"name": "Summary Prompt"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "c28693f3-5f98-4f8e-b72a-2f3a6ac5b625",
"name": "output",
"value": "={{ $json.candidates[0].content.parts[0].text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
780,
340
],
"id": "89ccda56-4ef0-4503-b332-7429c17c4759",
"name": "Output"
}
],
"pinData": {},
"connections": {
"YouTube video URL": {
"main": [
[
{
"node": "Summary Prompt",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Output",
"type": "main",
"index": 0
}
]
]
},
"Summary Prompt": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Output": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "9d8f7cbe-8b4a-43e0-b84e-ab203c56ed4e",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "fcd018c589f0738f053cc4c03e304e3f6403cc1e21b596ffc0cbf5dc1f4ef4a3"
},
"id": "iaYSKXqkPOByzDrq",
"tags": []
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment