AutomationFlowsAI & RAG › Process Youtube Transcripts with Apify, Openai & Pinecone Database

Process Youtube Transcripts with Apify, Openai & Pinecone Database

Original n8n title: 🚀 Process Youtube Transcripts with Apify, Openai & Pinecone Database

ByAdyl Itto @adyl on n8n.io

This tutorial explains how to build the backend workflow in n8n that indexes YouTube video transcripts into a Pinecone vector database. Note: This workflow handles the processing and indexing of transcripts only—the retrieval agent (which searches these embeddings) is…

Event trigger★★★★☆ complexityAI-powered16 nodesAirtableHTTP RequestPinecone Vector StoreOpenAI EmbeddingsDocument Default Data LoaderText Splitter Recursive Character Text Splitter
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #3184 — we link there as the canonical source.

This workflow follows the Airtable → HTTP Request 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 →

Download .json
{
  "id": "Vlyhg8yXcCMMVq7k",
  "name": "YT RAG Agent Backend Transcript-format-pineconeUpsert",
  "tags": [],
  "nodes": [
    {
      "id": "308ee339-14ae-4920-8830-0756440f06b3",
      "name": "Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        40,
        260
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "4a0324d8-27a0-468b-9a37-d7297c419cc0",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        240,
        260
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "14e43ff8-16fd-45f6-b7d9-5ac7e4f10dfe",
      "name": "Airtable1",
      "type": "n8n-nodes-base.airtable",
      "onError": "continueErrorOutput",
      "position": [
        1180,
        340
      ],
      "parameters": {},
      "typeVersion": 2.1,
      "alwaysOutputData": true
    },
    {
      "id": "f1e16621-7642-42df-baff-fa943f5ec7f9",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        540,
        340
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "2a17f4a3-91be-465d-9318-f889b87b47ca",
      "name": "Apify NinjaPost",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        400,
        340
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "a3071928-a592-4f26-a548-ac52cfb18ca6",
      "name": "Get JSON TS",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        680,
        340
      ],
      "parameters": {},
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "9216991d-e5de-4681-bab0-c20ddd00c77c",
      "name": "JSON Stringifier",
      "type": "n8n-nodes-base.code",
      "position": [
        820,
        340
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "90db5c4e-e23e-4101-8465-10bbb686b658",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        980,
        340
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "c04e0167-8104-4149-8b81-09ebe7957e91",
      "name": "Airtable2",
      "type": "n8n-nodes-base.airtable",
      "position": [
        100,
        740
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "b5132329-2385-4fb9-8d8a-ce838974c189",
      "name": "Pinecone Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        420,
        740
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4c68d784-d86e-4f87-ad72-b2085cb998a1",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        420,
        920
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "6f641b5d-5716-4283-bd09-2bb746e41939",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -40,
        740
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6ed623e3-0256-44ba-b3d2-c74ea7f38399",
      "name": "Transcript Processor",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        740
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "5f77e165-4288-4e40-a381-23d2ef409752",
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        540,
        900
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "50495550-405a-4ab5-aa1c-dbd5731fa3f1",
      "name": "Recursive Character Text Splitter1",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        540,
        1060
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "aafb300a-7311-43a2-8bbe-67dfabfec313",
      "name": "Installation Tutorial",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -260,
        -760
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "89526f4d-4135-4cc1-87bc-4fcbf0bc213e",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get JSON TS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable2": {
      "main": [
        [
          {
            "node": "Transcript Processor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Airtable1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get JSON TS": {
      "main": [
        [
          {
            "node": "JSON Stringifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apify NinjaPost": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Apify NinjaPost",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JSON Stringifier": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Transcript Processor": {
      "main": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Airtable2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Recursive Character Text Splitter1": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This tutorial explains how to build the backend workflow in n8n that indexes YouTube video transcripts into a Pinecone vector database. Note: This workflow handles the processing and indexing of transcripts only—the retrieval agent (which searches these embeddings) is…

Source: https://n8n.io/workflows/3184/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th

OpenAI, Gmail, Text Classifier +16
AI & RAG

Automate Outreach Prospect automates finding, enriching, and messaging potential partners (like restaurants, malls, and bars) using Apify Google Maps scraping, Perplexity enrichment, OpenAI LLMs, Goog

@Devlikeapro/N8N Nodes Waha, Google Drive Trigger, @Apify/N8N Nodes Apify +14
AI & RAG

Code Extractfromfile. Uses manualTrigger, sort, httpRequest, compression. Event-driven trigger; 50 nodes.

HTTP Request, Compression, Edit Image +15
AI & RAG

2464. Uses httpRequest, compression, editImage, documentDefaultDataLoader. Event-driven trigger; 50 nodes.

HTTP Request, Compression, Edit Image +15
AI & RAG

Workflow 2464. Uses httpRequest, compression, editImage, documentDefaultDataLoader. Event-driven trigger; 50 nodes.

HTTP Request, Compression, Edit Image +15