This workflow follows the Google Drive → OpenAI recipe pattern — see all workflows that pair these two integrations.
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 →
{
"nodes": [
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
16,
-80
],
"id": "b8040209-3d4b-4763-a88f-952ec960a6e1",
"name": "Extract from File"
},
{
"parameters": {
"operation": "pdf",
"binaryPropertyName": "file",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
16,
608
],
"id": "356e6742-740a-4622-8e6c-7fc421aec750",
"name": "PDF"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "{\n \"files\": \"success\"\n}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.4,
"position": [
240,
64
],
"id": "7759516d-748c-426e-8d2f-71f70e0db594",
"name": "Respond to Webhook"
},
{
"parameters": {
"name": "example.csv",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "1q12jZ6lyn59FAtlsZ82PQslNZwoLTuwe",
"mode": "list",
"cachedResultName": "YouTubeDemos",
"cachedResultUrl": "https://drive.google.com/drive/folders/1q12jZ6lyn59FAtlsZ82PQslNZwoLTuwe"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
16,
160
],
"id": "77fcdf14-6c2c-41f7-896a-968ce22afeb0",
"name": "Upload file",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"httpMethod": "POST",
"path": "3ec6ab9e-7c7d-4ea3-9a0e-8bcf71b4ef9b",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-208,
64
],
"id": "ba9cf1ef-30c2-4c52-bb60-f39fa4f2c27e",
"name": "CSV"
},
{
"parameters": {
"httpMethod": "POST",
"path": "html-to-markdown",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-208,
384
],
"id": "6de66f94-c519-4aa5-93a5-fd9738f22047",
"name": "HTML1"
},
{
"parameters": {
"html": "={{ $json.data }}",
"options": {}
},
"type": "n8n-nodes-base.markdown",
"typeVersion": 1,
"position": [
240,
384
],
"id": "28f2188b-c908-4227-8a7d-3ce43b88bc43",
"name": "Markdown"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"markwown\": {{ $json.data.toJsonString() }}\n} ",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.4,
"position": [
464,
384
],
"id": "7e608cbd-5740-4c45-bccc-7037febfc989",
"name": "Respond to Webhook1"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"files\": {{ $json.text.toJsonString() }}\n} ",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.4,
"position": [
240,
608
],
"id": "9ca795ee-77ec-4014-bf29-1d43101eb97e",
"name": "Respond to Webhook2"
},
{
"parameters": {
"operation": "text",
"binaryPropertyName": "file",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
16,
384
],
"id": "d27210bb-3d4a-4ea8-b6bf-99235aa17694",
"name": "Extract from File1"
},
{
"parameters": {
"content": "I want the raw html not the HTML converted to object which the HTML Extract does ",
"width": 272
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
368
],
"typeVersion": 1,
"id": "714258bf-4041-4bc6-9dde-9a390b293444",
"name": "Sticky Note"
},
{
"parameters": {
"httpMethod": "POST",
"path": "pdf-to-text",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-208,
608
],
"id": "475e38f6-f35d-4b95-95c3-8bfb2c0f6548",
"name": "PDF to Text"
},
{
"parameters": {
"operation": "pdf",
"binaryPropertyName": "file",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
16,
832
],
"id": "391c8eb6-eac6-4d87-b3f5-f78c8dbf0683",
"name": "PDF1"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"results\": {{ $json.message.content.toJsonString() }}\n} ",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.4,
"position": [
592,
832
],
"id": "400569b5-568f-48dc-9f12-45e103d11674",
"name": "Respond to Webhook4"
},
{
"parameters": {
"httpMethod": "POST",
"path": "pdf-to-structure",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-208,
832
],
"id": "7db30666-7477-4036-9fd6-ab90251285be",
"name": "PDF to Structured"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1",
"mode": "list",
"cachedResultName": "GPT-4.1"
},
"messages": {
"values": [
{
"content": "={{ $json.text }}"
},
{
"content": "# AI Extraction Reference - What Can Be Extracted\n\nThis document shows the structured data that AI can extract from the unstructured PDF text.\n\n## Employee Data\n```json\n{\n \"employees\": [\n {\n \"name\": \"Sarah Johnson\",\n \"employee_id\": \"CS-2847\",\n \"role\": \"Lead Customer Service Representative\",\n \"tickets_processed\": 342,\n \"avg_resolution_time_hours\": 2.3,\n \"satisfaction_score\": 94.7\n },\n {\n \"name\": \"Michael Chen\",\n \"employee_id\": \"CS-1923\",\n \"tickets_processed\": 298,\n \"avg_resolution_time_hours\": 1.8,\n \"satisfaction_score\": 96.2\n },\n {\n \"name\": \"Lisa Rodriguez\",\n \"employee_id\": \"CS-3156\",\n \"role\": \"New Team Member\",\n \"training_completion\": \"2024-12-15\",\n \"tickets_processed\": 89,\n \"avg_resolution_time_hours\": 2.1,\n \"satisfaction_score\": 92.8\n }\n ]\n}\n```\n\n## Performance Metrics\n```json\n{\n \"performance_metrics\": {\n \"response_time_improvement\": \"23%\",\n \"net_promoter_score\": {\n \"previous\": 67,\n \"current\": 74\n },\n \"first_call_resolution\": {\n \"previous\": \"71%\",\n \"current\": \"78%\"\n },\n \"customer_retention_rate\": \"89.3%\",\n \"target_retention_rate\": \"92%\"\n }\n}\n```\n\n## Financial Data\n```json\n{\n \"financial_data\": {\n \"total_revenue_impact\": 847320,\n \"cost_savings\": 156780,\n \"premium_support_price\": 29.99,\n \"premium_support_growth\": \"15%\",\n \"q1_2025_budget\": 234500,\n \"overtime_rate\": 28.50\n }\n}\n```\n\n## Operational Data\n```json\n{\n \"operational_data\": {\n \"total_hours_worked\": 2847,\n \"overtime_hours\": 312,\n \"busiest_day\": {\n \"date\": \"2024-12-03\",\n \"tickets\": 127\n },\n \"quietest_day\": {\n \"date\": \"2024-11-28\",\n \"tickets\": 34\n },\n \"ticket_categories\": {\n \"billing_inquiries\": \"45%\",\n \"technical_support\": \"32%\",\n \"account_management\": \"23%\"\n }\n }\n}\n```\n\n## Future Plans\n```json\n{\n \"future_plans\": {\n \"new_hires\": 3,\n \"ai_chatbot_ticket_reduction\": \"25-30%\",\n \"target_period\": \"Q1 2025\"\n }\n}\n```",
"role": "system"
}
]
},
"jsonOutput": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
240,
832
],
"id": "257c8f84-faf4-48ec-8355-d3855282a6ec",
"name": "Message a model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"httpMethod": "POST",
"path": "audio-to-text",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-208,
1056
],
"id": "426411ca-15be-4ff8-a002-9d14519dacb4",
"name": "Audio to Text"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"results\": {{ $json.text.toJsonString() }}\n} ",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.4,
"position": [
240,
1056
],
"id": "de18037e-f110-45ab-9c8a-b4e1c3a3dab2",
"name": "Respond to Webhook5"
},
{
"parameters": {
"resource": "audio",
"operation": "transcribe",
"binaryPropertyName": "file",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
16,
1056
],
"id": "172e585d-b8b4-46c0-97ec-47452ccfec0a",
"name": "Transcribe a recording",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Extract from File": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"PDF": {
"main": [
[
{
"node": "Respond to Webhook2",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"CSV": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
},
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"HTML1": {
"main": [
[
{
"node": "Extract from File1",
"type": "main",
"index": 0
}
]
]
},
"Markdown": {
"main": [
[
{
"node": "Respond to Webhook1",
"type": "main",
"index": 0
}
]
]
},
"Extract from File1": {
"main": [
[
{
"node": "Markdown",
"type": "main",
"index": 0
}
]
]
},
"PDF to Text": {
"main": [
[
{
"node": "PDF",
"type": "main",
"index": 0
}
]
]
},
"PDF1": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"PDF to Structured": {
"main": [
[
{
"node": "PDF1",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Respond to Webhook4",
"type": "main",
"index": 0
}
]
]
},
"Audio to Text": {
"main": [
[
{
"node": "Transcribe a recording",
"type": "main",
"index": 0
}
]
]
},
"Transcribe a recording": {
"main": [
[
{
"node": "Respond to Webhook5",
"type": "main",
"index": 0
}
]
]
}
},
"meta": {
"templateCredsSetupCompleted": true
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDriveOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Gist:Alnutile. Uses googleDrive, openAi. Webhook trigger; 19 nodes.
Source: https://gist.github.com/alnutile/207b8344d3d428b62edf567fda26c339 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Transforms provider documentation (URLs) into an auditable, enforceable multicloud security control baseline. It: Fetches and sanitizes HTML Uses AI to extract security requirements* (strict 3-line TX
Listens for completed Fireflies transcripts, qualifies whether a proposal is needed using OpenAI, drafts structured proposal content, populates a Google Doc template, converts to PDF, and sends it to
Transform your webinar registrations from basic form submissions into a verified, personalized, and premium attendee experience.
Video Ads Automation - Real Estate. Uses openAi, telegram, httpRequest, googleDrive. Webhook trigger; 24 nodes.
This system meticulously guides each lead through a fully automated journey, from initial contact to a personalized follow-up and CRM integration.