n8n의 무료 PDF 생성기 – 외부 라이브러리나 유료 서비스 없이
고급
이것은Document Extraction, Multimodal AI분야의자동화 워크플로우로, 20개의 노드를 포함합니다.주로 Set, Slack, GoogleDrive, HttpRequest, ManualTrigger 등의 노드를 사용하며. OpenAI, Google Docs, 및 Slack을 사용하여 전문 PDF 생성 및 공유
사전 요구사항
- •Slack Bot Token 또는 Webhook URL
- •Google Drive API 인증 정보
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "BY9w2cNMUAvBWpJ7",
"meta": {
"instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
"templateCredsSetupCompleted": true
},
"name": "Free PDF Generator in n8n – No External Libraries or Paid Services",
"tags": [],
"nodes": [
{
"id": "1a0c48b7-71a1-43ea-84f4-bc9d471f3d94",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
176,
144
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "gpt-4.1"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "PPSwAKeLQYgAPobT",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "9c32fc19-37c9-4a40-90b1-a00ac76923d9",
"name": "PDF 파일 아카이빙",
"type": "n8n-nodes-base.googleDrive",
"position": [
1152,
-80
],
"parameters": {
"name": "={{ $json.name }}.pdf",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI",
"cachedResultUrl": "https://drive.google.com/drive/folders/1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI",
"cachedResultName": "SmartSales"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "fC471es5gk5Mm900",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "7e0a5a61-9004-4392-b1a5-786fd40cfcd9",
"name": "첨부 파일 다운로드",
"type": "n8n-nodes-base.googleDrive",
"position": [
1376,
-80
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "fC471es5gk5Mm900",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "bcb58059-951e-4e60-a925-595e4d9a7829",
"name": "문서 파일 생성",
"type": "n8n-nodes-base.httpRequest",
"position": [
704,
-80
],
"parameters": {
"url": "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true",
"body": "=--foo_bar_baz\nContent-Type: application/json; charset=UTF-8\n\n{\n \"name\": \"{{ $json.Today }}\",\n \"mimeType\": \"application/vnd.google-apps.document\",\n \"parents\": [\"{{ $json['Drive Folder ID'] }}\"]\n}\n\n--foo_bar_baz\nContent-Type: text/markdown; charset=UTF-8\n\n{{ $('Generate sample markdown document').item.json.output }}\n\n--foo_bar_baz--",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"contentType": "raw",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"rawContentType": "multipart/related; boundary=foo_bar_baz",
"queryParameters": {
"parameters": [
{
"name": "uploadType",
"value": "multipart"
},
{
"name": "supportsAllDrives",
"value": "true"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "boundary",
"value": "foo_bar_baz"
}
]
},
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "fC471es5gk5Mm900",
"name": "Google Drive account"
}
},
"typeVersion": 4.2
},
{
"id": "e540e238-4bde-4dae-ac86-ac88764e7dc9",
"name": "문서를 PDF로 변환",
"type": "n8n-nodes-base.googleDrive",
"position": [
928,
-80
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "fC471es5gk5Mm900",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "e214322b-302f-4c54-906c-75e1e6c93ba9",
"name": "'워크플로 실행' 클릭 시",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-144,
-80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a36ca7db-6c6d-491a-8cd0-243916a2cd3a",
"name": "메시지 전송",
"type": "n8n-nodes-base.slack",
"position": [
1600,
-80
],
"webhookId": "524619ce-d662-428d-bb56-ea97e5366dec",
"parameters": {
"options": {
"fileName": "={{ $json.name }}",
"channelId": "C097VAKKPUP",
"initialComment": "Formatted PDF file from markdown"
},
"resource": "file",
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"id": "4JSKt9sIRV1KGswQ",
"name": "Slack account"
}
},
"typeVersion": 2.3
},
{
"id": "d1253bec-da2d-4530-baeb-6e5adc989a1c",
"name": "샘플 마크다운 문서 생성",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
80,
-80
],
"parameters": {
"text": "=You are a Markdown expert. Write a single sample document in Markdown format that demonstrates all major Markdown syntax.\nThe document should be well-organized and easy to follow, with each section labeled clearly.\n\nInclude examples for:\n\t1.\tHeadings (H1 to H6)\n\t2.\tParagraphs and line breaks\n\t3.\tBold, italic, bold italic, and strikethrough\n\t4.\tBlockquotes (single and nested)\n\t5.\tLists: unordered, ordered, nested lists, and task lists\n\t6.\tLinks: inline, reference-style, and automatic links\n\t7.\tImages: inline and reference-style\n\t8.\tCode: inline code, fenced code blocks with language highlighting\n\t9.\tTables with alignment options\n\t10.\tHorizontal rules\n\t11.\tFootnotes\n\t12.\tEscaping special characters\n\t13.\tEmoji usage (if supported)\n\t14.\tHTML elements inside Markdown (example: <details> or <sup>)\n\nAt the top, add a short title and description of the document.\nUse clear section headings and short explanations before each example.\nMake sure the output is entirely valid Markdown so it can be rendered directly without edits.\n\nOutput only the Markdown content, nothing else.",
"options": {
"systemMessage": ""
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "17545deb-4c68-4038-abd7-1c7e9de0b99f",
"name": "Google Drive 폴더 구성",
"type": "n8n-nodes-base.set",
"position": [
480,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1ff0b9a4-7d60-44ec-b047-e49252f1ace9",
"name": "Drive Folder ID",
"type": "string",
"value": "1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI"
},
{
"id": "d64a1ac4-15db-4c84-a1db-fbd6b48084f5",
"name": "Today",
"type": "string",
"value": "={{ $now.format(\"ddMMyyyyhhmmss\") }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4bf9bfbc-3791-4c28-b32a-085f1864e726",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
-720
],
"parameters": {
"width": 912,
"height": 1472,
"content": "# Free PDF Generator in n8n – No External Libraries or Paid Services\n> A 100% free n8n workflow for generating professionally formatted PDFs without relying on external libraries or paid converters. It uses OpenAI to create Markdown content, Google Docs to format and convert to PDF, and integrates with Google Drive and Slack for archiving and sharing, ideal for reports, BRDs, proposals, or any document you need directly inside n8n.\n### Watch the demo video below:\n[.jpg)](https://www.youtube.com/watch?v=BB32RPQYI94)\n\n## **Who’s it for**\n- Teams that need **auto-generated documents** (reports, guides, checklists) in PDF format.\n- Operations or enablement teams who want files **archived in Google Drive** and **shared in Slack** automatically.\n- Anyone experimenting with **LLM-powered document generation** integrated into business workflows.\n\n## **How it works / What it does**\n1. **Manual trigger** starts the workflow.\n2. **LLM generates** a sample Markdown document (via OpenAI Chat Model).\n3. **Google Drive folder** is configured for storage.\n4. **Google Doc is created** from the generated Markdown content.\n5. **Document is exported to PDF** using Google Drive. ([Sample PDF generated from comprehensive markdown](https://wisestackai.s3.ap-southeast-1.amazonaws.com/12082025052957.pdf))\n6. **PDF is archived** in a designated Drive folder.\n7. **Archived PDF is downloaded** for sharing.\n8. **Slack message is sent** with the PDF attached.\n\n## **How to set up**\n1. **Add nodes in sequence**:\n - Manual Trigger\n - OpenAI Chat Model (prompt to generate sample Markdown)\n - Set/Manual input for Google Drive folder ID(s)\n - HTTP Request or Google Drive Upload (convert to Google Docs)\n - Google Drive Download (PDF export)\n - Google Drive Upload (archive PDF)\n - Google Drive Download (fetch archived file)\n - Slack Upload (send message with attachment)\n2. **Configure credentials** for OpenAI, Google Drive, and Slack.\n3. **Map output fields**:\n - `data.markdown` → Google Docs creation\n - `docId` → PDF export\n - `fileId` → Slack upload\n4. **Test run** to ensure PDF is generated, archived, and posted to Slack.\n\n## **Requirements**\n- **Credentials**:\n - OpenAI API key (or compatible LLM provider)\n - Google Drive (OAuth2) with read/write permissions\n - Slack bot token with `files:write` permission\n- **Access**:\n - Write access to target Google Drive folders\n - Slack bot invited to the target channel\n\n## **How to customize the workflow**\n- **Change the prompt** in the OpenAI Chat Model to generate different types of content (reports, meeting notes, checklists).\n- **Automate triggering**:\n - Replace Manual Trigger with Cron for scheduled document generation.\n - Use Webhook Trigger to run on-demand from external apps.\n- **Modify storage logic**:\n - Save both `.md` and `.pdf` versions in Google Drive.\n - Use separate folders for drafts vs. final versions.\n- **Enhance distribution**:\n - Send PDFs to multiple Slack channels or via email.\n - Integrate with project management tools for automated task creation."
},
"typeVersion": 1
},
{
"id": "184cfef9-d92a-462d-9e8b-b6034eaa5ff9",
"name": "스티커 메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
-208
],
"parameters": {
"color": 4,
"width": 288,
"height": 480,
"content": "**Trigger the Workflow** \n Start the process manually or replace with another trigger (e.g., Cron or Webhook) to run automatically."
},
"typeVersion": 1
},
{
"id": "49d2e923-1356-4671-96e4-a6a39893e291",
"name": "스티커 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
-208
],
"parameters": {
"color": 4,
"width": 352,
"height": 480,
"content": "**Generate Markdown Content with AI** \n Use the OpenAI Chat Model to create a structured Markdown document based on your prompt, perfect for reports, BRDs, proposals, or meeting notes."
},
"typeVersion": 1
},
{
"id": "350d767b-0ed5-4cbd-9f86-f5ea4044fbff",
"name": "스티커 메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-208
],
"parameters": {
"color": 4,
"width": 432,
"height": 480,
"content": "**Create Google Doc from Markdown** \n Upload the generated Markdown content to Google Drive and convert it into a Google Doc for proper formatting.\n\n[Sample PDF generated from comprehensive markdown](https://wisestackai.s3.ap-southeast-1.amazonaws.com/12082025052957.pdf)"
},
"typeVersion": 1
},
{
"id": "2c5fc8ea-4c52-4b4b-8e13-c2ae0041aa1f",
"name": "스티커 메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
-208
],
"parameters": {
"color": 4,
"width": 384,
"height": 480,
"content": "**Export and Archive as PDF** \n Convert the Google Doc to a PDF file, then upload it to your chosen Google Drive folder for storage and record-keeping."
},
"typeVersion": 1
},
{
"id": "c3e95369-34a3-4f11-9204-78ee6b6e2217",
"name": "스티커 메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
-208
],
"parameters": {
"color": 4,
"width": 400,
"height": 480,
"content": "**Share the PDF via Slack** \n Download the archived PDF and post it to a Slack channel with a message and links for quick access."
},
"typeVersion": 1
},
{
"id": "9bc94ec2-4bce-4ed4-9afd-9270d2e46052",
"name": "스티커 메모7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1808,
-240
],
"parameters": {
"width": 768,
"height": 528,
"content": ""
},
"typeVersion": 1
},
{
"id": "bf330105-df5e-4956-858a-b29d26e651d4",
"name": "스티커 메모8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
352
],
"parameters": {
"width": 768,
"height": 992,
"content": ""
},
"typeVersion": 1
},
{
"id": "12aea9ee-032f-4522-980b-69bee5d89913",
"name": "스티커 메모9",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
352
],
"parameters": {
"width": 768,
"height": 992,
"content": ""
},
"typeVersion": 1
},
{
"id": "e754721c-dce2-4d19-a47d-b146e6bba331",
"name": "스티커 메모10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
352
],
"parameters": {
"width": 768,
"height": 992,
"content": ""
},
"typeVersion": 1
},
{
"id": "53e3dcc8-1e6e-4cb4-9f44-5fa49d731a9a",
"name": "스티커 메모11",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
352
],
"parameters": {
"width": 768,
"height": 992,
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "93a6ffab-7fbe-42af-8025-f3e2a72ceea7",
"connections": {
"1a0c48b7-71a1-43ea-84f4-bc9d471f3d94": {
"ai_languageModel": [
[
{
"node": "d1253bec-da2d-4530-baeb-6e5adc989a1c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"9c32fc19-37c9-4a40-90b1-a00ac76923d9": {
"main": [
[
{
"node": "7e0a5a61-9004-4392-b1a5-786fd40cfcd9",
"type": "main",
"index": 0
}
]
]
},
"bcb58059-951e-4e60-a925-595e4d9a7829": {
"main": [
[
{
"node": "e540e238-4bde-4dae-ac86-ac88764e7dc9",
"type": "main",
"index": 0
}
]
]
},
"e540e238-4bde-4dae-ac86-ac88764e7dc9": {
"main": [
[
{
"node": "9c32fc19-37c9-4a40-90b1-a00ac76923d9",
"type": "main",
"index": 0
}
]
]
},
"7e0a5a61-9004-4392-b1a5-786fd40cfcd9": {
"main": [
[
{
"node": "a36ca7db-6c6d-491a-8cd0-243916a2cd3a",
"type": "main",
"index": 0
}
]
]
},
"17545deb-4c68-4038-abd7-1c7e9de0b99f": {
"main": [
[
{
"node": "bcb58059-951e-4e60-a925-595e4d9a7829",
"type": "main",
"index": 0
}
]
]
},
"d1253bec-da2d-4530-baeb-6e5adc989a1c": {
"main": [
[
{
"node": "17545deb-4c68-4038-abd7-1c7e9de0b99f",
"type": "main",
"index": 0
}
]
]
},
"e214322b-302f-4c54-906c-75e1e6c93ba9": {
"main": [
[
{
"node": "d1253bec-da2d-4530-baeb-6e5adc989a1c",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 문서 추출, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
다중 인공지능 아키텍처 무료 시작 템플릿
협력 판매 계획: 다중 인공지능 AI, Google 문서 및 Slack
Set
Slack
Google Drive
+
Set
Slack
Google Drive
24 노드Trung Tran
문서 추출
Decodo 크롤러 API 워크플로우 템플릿(n8n 자동화 아마존 책 구매 보고서)
Decodo 스크레이퍼와 GPT 4.1 mini를 사용하여 아마존 책 데이터를 추출하고 구매 보고서를 생성합니다.
Set
Code
Slack
+
Set
Code
Slack
22 노드Trung Tran
AI 요약
AWS 자동화 SSL/TLS 인증 만료 보고서
사용AWS ACM과 AI로 Slack과 이메일에서 SSL/TLS 인증 만료 보고서 생성
Set
Code
Slack
+
Set
Code
Slack
23 노드Trung Tran
AI 요약
Slack 후보자 평가를 위한 AI 기반 챗봇 구축
AI 이력서 분석 및 후보자 평가: Slack과 Google 스프레드시트 통합
If
Code
Slack
+
If
Code
Slack
29 노드Trung Tran
AI 챗봇
AI Tool Node와 GPT-4, DALL-E의 다중 지능체 책 작성 워크플로우 생성
GPT-4.1-mini, DALL-E, Google Drive, AWS S3로 AI 생성 도서 생성
Set
Aws S3
Markdown
+
Set
Aws S3
Markdown
25 노드Trung Tran
콘텐츠 제작
더 지능적인 BRD(비즈니스 요구 사항 문서) 작성을 위한 다중 에이전트 RAG 시스템
다중 에이전트 GPT와 Google Workspace를 사용하여 비즈니스 요구 사항 문서 생성
Set
Code
Merge
+
Set
Code
Merge
37 노드Trung Tran
AI RAG
워크플로우 정보
난이도
고급
노드 수20
카테고리2
노드 유형8
저자
Trung Tran
@trungtranEmpowering small and medium businesses with smart automation and practical AI, no big tech team required.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유