Du känner igen känslan: du svär på att en kreatör sa något användbart i en video, men för att hitta det måste du skrolla i tidslinjen, titta om på avsnitt och öppna tio flikar.
Den här automatiseringen för transkriptsökning slår hårdast mot marknadsförare som gör konkurrensanalys. Men byråägare som bygger kundinsikter och operatörer som försöker fånga “vad vi lärde oss” från webbinarier sitter i samma röra. Du förvandlar utspridda YouTube-transkriptioner till ett sökbart bibliotek som du kan fråga ut på sekunder.
Du får lära dig vad arbetsflödet gör, vad du behöver för att köra det och hur du ska tänka när du anpassar det för dina egna kanallistor och researchfrågor.
Så fungerar automatiseringen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: YouTube + Google Sheets: sökbara transkriptinsikter
flowchart LR
subgraph sg0["Extract Relevant Res Flow"]
direction LR
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Normalize Output", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Sort by Video Key", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Return API Response"]
n14@{ icon: "mdi:robot", form: "rounded", label: "Extract Relevant Results", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Search API Endpoint"]
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Retrieve Query", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Build Results Template", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "Compose Answer", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Results", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Create Empty Reply", pos: "b", h: 48 }
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Response Fields", pos: "b", h: 48 }
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/redis.svg' width='40' height='40' /></div><br/>Increment Rate Counter"]
n23@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Rate Limit", pos: "b", h: 48 }
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Qdrant Group Search"]
n28["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Embedding Vectors"]
n29@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Groups", pos: "b", h: 48 }
n30@{ icon: "mdi:cog", form: "rounded", label: "Group Reference", pos: "b", h: 48 }
n31@{ icon: "mdi:swap-vertical", form: "rounded", label: "Aggregate Results", pos: "b", h: 48 }
n32@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Transcript Items", pos: "b", h: 48 }
n33["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Return Rate Limit Reply"]
n34["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Return Empty Reply"]
n39@{ icon: "mdi:swap-vertical", form: "rounded", label: "Rate Limit Response", pos: "b", h: 48 }
n42["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>Markdown to HTML"]
n43@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Group Results", pos: "b", h: 48 }
n44@{ icon: "mdi:swap-vertical", form: "rounded", label: "Create Empty Group Reply", pos: "b", h: 48 }
n45["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Return Group Empty Reply"]
n46@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Group Items", pos: "b", h: 48 }
n47@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model A", pos: "b", h: 48 }
n48@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model B", pos: "b", h: 48 }
n42 --> n21
n23 --> n16
n23 --> n39
n16 --> n28
n30 --> n14
n21 --> n13
n15 --> n22
n39 --> n33
n18 --> n42
n19 --> n32
n19 --> n20
n43 --> n46
n43 --> n44
n29 --> n31
n29 --> n30
n28 --> n27
n11 --> n12
n31 --> n19
n14 --> n29
n22 --> n23
n46 --> n29
n12 --> n17
n17 --> n18
n47 -.-> n14
n48 -.-> n18
n27 --> n43
n32 --> n11
n20 --> n34
n44 --> n45
end
subgraph sg1["Subflow Flow"]
direction LR
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Video Captions"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Segment Captions", pos: "b", h: 48 }
n3@{ icon: "mdi:cube-outline", form: "rounded", label: "Qdrant Vector Storage", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Standard Data Loader", pos: "b", h: 48 }
n5@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embedding Generator", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Text Chunker", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Video Reference", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Chunks", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Delay Node", pos: "b", h: 48 }
n25@{ icon: "mdi:play-circle", form: "rounded", label: "Subflow Trigger", pos: "b", h: 48 }
n38@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Caption Chunks", pos: "b", h: 48 }
n10 --> n9
n8 --> n1
n5 -.-> n3
n6 -.-> n4
n9 --> n3
n2 --> n38
n38 --> n9
n4 -.-> n3
n1 --> n2
n3 --> n10
n25 --> n8
end
subgraph sg2["Manual Launch Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Launch Trigger", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Iterate Videos", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Run Sub-Workflow (Configure ..", pos: "b", h: 48 }
n35@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Run Trigger", pos: "b", h: 48 }
n36@{ icon: "mdi:cog", form: "rounded", label: "Skip Seen Items", pos: "b", h: 48 }
n37["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Latest YouTube Videos"]
n7 --> n24
n35 --> n37
n36 --> n7
n24 --> n7
n37 --> n36
n0 --> n37
end
subgraph sg3["Flow 4"]
direction LR
n26["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Web UI Hook"]
n40["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Render Web Page"]
n41["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Generate Web UI"]
n26 --> n41
n41 --> n40
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n25,n0,n35 trigger
class n14,n18,n4,n6 ai
class n47,n48 aiModel
class n3 ai
class n5 ai
class n19,n23,n43 decision
class n22 database
class n13,n15,n27,n28,n33,n34,n45,n1,n37,n26,n40 api
classDef customIcon fill:none,stroke:none
class n13,n15,n22,n27,n28,n33,n34,n42,n45,n1,n37,n26,n40,n41 customIcon
Varför det här spelar roll: hitta svar i långa videor
Video är där de bästa detaljerna om “hur de faktiskt gör” finns, men det är också där kunskap försvinner. Du tar anteckningar i ett dokument, sparar länkar i Slack, kanske lägger några tidsstämplar i ett kalkylark, och sen… ingenting är sökbart. En vecka senare är du tillbaka och tittar om på en 60-minutersintervju bara för att hitta en prissättningstaktik eller en verktygsrekommendation. Multiplicera det med en handfull kanaler och plötsligt blir research ett heltidsjobb, inte en stödprocess.
Det eskalerar snabbt. Här är var det faller isär.
- Du tittar om på samma videor eftersom dina anteckningar saknar tillräcklig kontext för att du ska lita på dem.
- Tidsstämplar försvinner i chattar och dokument, så att dela “exakt den delen” blir ett jobb i sig.
- Manuell hantering av transkriptioner blir inkonsekvent, vilket gör att ditt “bibliotek” i praktiken bara är en hög filer.
- När mängden research ökar sjunker kvaliteten eftersom ingen hinner hålla jämna steg.
Vad du bygger: en YouTube-sökmotor för transkriptioner som du styr själv
Det här arbetsflödet samlar in YouTube-transkriptioner, delar upp dem i mindre sökbara segment och lagrar dem i en vektordatabas (Qdrant) så att du kan “ställa frågor” och få tillbaka relevanta klipp. Det börjar med att hämta nya videor från en kanal, hämta undertexter via HTTP-förfrågningar (med Apify som källa för skrapningen) och dela upp långa transkriptioner i lagom stora avsnitt som är enklare att matcha senare. Varje segment taggas med metadata (videotitel, en videonyckel och andra referenser), sedan skapar OpenAI embeddings och Qdrant lagrar dem för återhämtning. När du söker levererar en webhook ett enkelt webbgränssnitt och en API-endpoint, genererar en query-embedding, kör en grupperad sökning i Qdrant för bredare täckning och använder sedan en LLM för att formulera ett lättläst svar med citerade avsnitt som du kan klicka på och dela.
Arbetsflödet börjar med inläsning (schemalagd eller manuell) för att hålla ditt transkriptbibliotek uppdaterat. Sedan indexerar det transkriptioner i Qdrant med OpenAI-embeddings. Till sist returnerar sökendpointen grupperade resultat plus ett svar du kan skumma och skicka till en kollega utan lång förklaring.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du granskar 10 researchvideor i veckan och att varje video är cirka 45 minuter. Om du tittar om ens 15 minuter per video för att hitta ett citat blir det ungefär 2,5 timmar i veckan bara på “var var den där delen?” Med det här arbetsflödet lägger du vanligtvis en minut på att skriva en fråga i webbgränssnittet, skummar citerade avsnitt och öppnar den exakta träffen. Säg 15 minuter totalt för 10 sökningar. Det är ett par timmar tillbaka varje vecka, utan att tumma på kvaliteten.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Apify för skrapning av YouTube-kanaler och undertexter.
- Qdrant för att lagra vektorer för transkriptsökning.
- OpenAI API-nyckel (hämta den i OpenAI Dashboard)
Svårighetsnivå: Medel. Du kopplar mest in autentisering och klistrar in några endpoints, men du bör vara bekväm med att testa webhooks och läsa körloggar.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Nya videor triggar inläsning. En schemalagd trigger kontrollerar de senaste YouTube-videorna, tar bort dubbletter och batchar det som är nytt så att du bara indexerar en gång.
Transkriptioner samlas in och struktureras. Arbetsflödet hämtar undertexter via HTTP-förfrågningar, segmenterar och normaliserar sedan texten så att varje del får en konsekvent struktur och metadata.
OpenAI skapar embeddings och Qdrant lagrar dem. Textsegmenten skickas genom ett embedding-steg och skrivs sedan till Qdrant som vektorer så att likhetssökning fungerar stabilt i stor skala.
En webhook levererar sök och svar. Du skriver en fråga i webbgränssnittets endpoint, arbetsflödet skapar embedding för frågan, söker i Qdrant med grupperad sökning och AI-kedjan formulerar ett svar med relevanta citerade avsnitt.
Du kan enkelt ändra kanalkällan för att indexera en annan kreatör, eller justera segmentstorleken för att styra hur “granulära” dina källhänvisningar blir. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggertypen
Det här arbetsflödet använder flera ingångspunkter för att hämta in videor och leverera ett sökgränssnitt/UI och API, så ni måste konfigurera varje trigger.
- Öppna Manual Launch Trigger för att bekräfta att den är aktiverad för indexeringstester vid behov.
- Öppna Scheduled Run Trigger och verifiera att schemaregeln är inställd på att köra varje vecka på dag
6och timme6. - Öppna Web UI Hook och ställ in Path till
n8n_videos/med Response Mode inställt påresponseNode. - Öppna Search API Endpoint och ställ in Path till
n8n_videos/api/searchmed Response Mode inställt påresponseNode.
Steg 2: anslut YouTube-transkript och videokällor
Dessa noder hämtar videometadata och undertexter från Apify för indexering och sökning.
- Öppna Fetch Latest YouTube Videos och ställ in URL till
https://api.apify.com/v2/acts/streamers~youtube-channel-scraper/run-sync-get-dataset-items. - Ställ in JSON Body i Fetch Latest YouTube Videos till den angivna payloaden och bekräfta att
startUrlsinnehållerhttps://www.youtube.com/@n8n-io. - Credential Required: Anslut era httpHeaderAuth-credentials i Fetch Latest YouTube Videos.
- Öppna Fetch Video Captions och ställ in URL till
https://api.apify.com/v2/acts/streamers~youtube-channel-scraper/run-sync-get-dataset-itemsmed JSON Body som innehållerdownloadSubtitlesinställt påtrue. - Credential Required: Anslut era httpHeaderAuth-credentials i Fetch Video Captions.
subtitlesLanguage är en och att mål-videon har undertexter aktiverade.Steg 3: konfigurera chunkning av transkript och vektorlager
Den här delen delar upp undertexter, bygger dokument och lägger in vektorer i Qdrant för snabb sökning.
- I Segment Captions, ställ in vtt-tilldelningen till
{{ Array( Math.ceil($json.subtitles[0].vtt.length/30_000) ).fill(0) .map((_,idx) => $json.subtitles[0].vtt.substr(idx*30_000,(idx * 30_000) + 30_000)) }}för att dela långa undertexter i 30k-chunkar. - I Split Caption Chunks, ställ in Field to Split Out till
vtt, och säkerställ sedan att Iterate Chunks är ansluten för batchbearbetning. - I Text Chunker, ställ in Chunk Size till
3000för chunkar som passar embeddings. - I Standard Data Loader, ställ in JSON Data till
{{ $json.vtt.replaceAll('\n\n', '\n') }}och behåll metadatafälten mappade från Video Reference. - Öppna Qdrant Vector Storage och ställ in Mode till
insertmed samlingenn8n_videos. - Credential Required: Anslut era qdrantApi-credentials i Qdrant Vector Storage.
- Credential Required: Anslut era openAiApi-credentials i Embedding Generator. Detta är en AI-embedding-subnod som matar Qdrant Vector Storage.
1 för att strypa chunk-bearbetning och undvika rate limits.Steg 4: konfigurera sökning, rate limiting och query-embeddings
Dessa noder hanterar användarfrågor, tillämpar rate limits och bygger embeddings för vektorsökning.
- I Increment Rate Counter, ställ in Key till
=n8n_videos_session_{{ $json.headers['x-forwarded-for'] }}och behåll Operation inställt påincr. - Credential Required: Anslut era redis-credentials i Increment Rate Counter.
- I Validate Rate Limit, behåll jämförelsen med Left Value som
{{ Object.values($json)[0] }}och Right Value som11för att tillåta upp till 10 sökningar. - I Retrieve Query, ställ in JSON Output till det angivna uttrycket som sanerar
qoch validerartype. - I Fetch Embedding Vectors, ställ in URL till
https://api.openai.com/v1/embeddingsoch Body Parameters så att de inkluderarinput{{ $json.query }}ochmodeltext-embedding-3-small. - Credential Required: Anslut era openAiApi-credentials i Fetch Embedding Vectors.
- I Qdrant Group Search, ställ in URL till
http://qdrant:6333/collections/n8n_videos/points/search/groupsoch säkerställ att group_by ärmetadata.videoId. - Credential Required: Anslut era qdrantApi-credentials i Qdrant Group Search.
{{ $json.data[0].embedding }}). Säkerställ att input från Fetch Embedding Vectors är kopplad korrekt.Steg 5: konfigurera AI-bearbetning och sammanställning av resultat
Dessa noder extraherar relevanta transkriptutdrag, normaliserar output och genererar ett kortfattat AI-svar.
- I Extract Relevant Results, behåll parametern Text inställd på XML-mallen som bäddar in transkriptträffar och
{{ $('Retrieve Query').first().json.query }}. - Säkerställ att OpenAI Chat Model A är ansluten som språkmodell för Extract Relevant Results. Credential Required: Anslut era openAiApi-credentials i OpenAI Chat Model A.
- I Normalize Output, behåll fältmappningarna för title, url, extract, timestamp och video_ts med de angivna uttrycken.
- I Sort by Video Key, ställ in Field Name till
videoIdför gruppering per video. - I Build Results Template, behåll malluttrycket för results som genererar HTML-listobjekt grupperade efter
videoId. - I Compose Answer, säkerställ att Text är inställt på
och att promptmeddelandet ber om en sammanfattning på 1–2 meningar.{{ $json.results }} ... - Säkerställ att OpenAI Chat Model B är ansluten som språkmodell för Compose Answer. Credential Required: Anslut era openAiApi-credentials i OpenAI Chat Model B.
Steg 6: konfigurera rendering av webb-UI och API-svar
Den här delen bygger webbgränssnittet, hanterar svar och formaterar HTML som returneras till UI:t.
- I Generate Web UI, behåll den fullständiga HTML-mallen och bekräfta att formuläret använder
hx-get="/webhook/n8n_videos/api/search"ochhx-target="#results". - I Render Web Page, ställ in Response Body till
{{ $json.html }}och säkerställ att Content-Type ärtext/html. - I Markdown to HTML, ställ in Mode till
markdownToHtmloch Markdown till{{ $json.text }}. - I Map Response Fields, mappa text till
{{ $json.data }}och results till{{ $('Build Results Template').first().json.results }}. - I Return API Response, behåll Respond With som
textoch Response Body inställd på.... - Bekräfta att fallback-noderna Create Empty Reply, Return Empty Reply, Create Empty Group Reply och Return Group Empty Reply är anslutna för fall utan resultat.
Steg 7: konfigurera körning av underarbetsflöde för videobearbetning
Indexeringsflödet förlitar sig på ett underarbetsflöde för att bearbeta varje videoobjekt i batcher.
- Öppna Run Sub-Workflow (Configure Required) och välj målflödet i Workflow ID.
- Behåll Mode inställt på
eachoch ha Wait for Sub-Workflow aktiverat. - Säkerställ att Subflow Trigger är startpunkten i underarbetsflödet och skickar data vidare till Video Reference.
Steg 8: testa och aktivera ert arbetsflöde
Validera både indexeringspipen och sök-UI/API innan ni går live.
- Klicka på Execute Workflow från Manual Launch Trigger för att indexera de senaste videorna och bekräfta att vektorer skrivs i Qdrant Vector Storage.
- Öppna test-URL:en för Web UI Hook och skicka in en fråga; ni ska se resultat och en AI-sammanfattning från Return API Response.
- Testa API:t direkt genom att anropa
/webhook/n8n_videos/api/search?q=your+queryoch bekräfta att Return API Response returnerar HTML med resultat. - När allt fungerar, aktivera arbetsflödet för att slå på Scheduled Run Trigger för löpande indexering.
Felsökningstips
- OpenAI-autentisering kan löpa ut eller blockeras av faktureringsgränser. Om svar plötsligt slutar fungera, kontrollera först din OpenAI API-nyckel och dina användningsgränser i OpenAI Dashboard.
- Om du använder Wait-noder eller extern skrapning varierar processtiderna. Öka väntetiden om efterföljande steg träffar Qdrant innan vektorerna hunnit skrivas.
- Apify-actors och Qdrant-collections behöver rätt behörigheter. När inläsningen kör men sökningen inte ger något, bekräfta att Apify faktiskt returnerade undertexter och att ditt Qdrant-collectionsnamn matchar det arbetsflödet skriver till.
Snabba svar
Räkna med cirka 45 minuter om dina Apify-, Qdrant- och OpenAI-konton är klara.
Nej. Du kopplar tjänster, klistrar in några värden (som collectionsnamn) och testar webhook-endpoints.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med OpenAI API-kostnader (ofta några dollar i månaden vid lätt researchanvändning) samt Qdrant-hosting om du inte kör det lokalt.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärt och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du förmodligen. De flesta byter ut begäran “Fetch Latest YouTube Videos” så att den pekar på en annan kanal och justerar sedan segmentstorlekar i text-splittern så att källhänvisningarna matchar hur de vill läsa. Du kan också ersätta Qdrants grupperade sökning med en enklare vektorsökning om din vektorstore inte stödjer gruppering. Om du vill ha output i ett kalkylark, mappa fälten i “Normalize Output” till Google Sheets i stället för att bara returnera webhook-svaret.
Oftast är det URL:en, API-nyckeln eller att collectionsnamnet inte matchar mellan skrivning och läsning. Dubbelkolla Qdrant-endpointen (cloud vs lokalt) och bekräfta sedan att arbetsflödet skriver vektorer innan du testar sökning. Om inläsningen fungerar men sökningen misslyckas, titta på HTTP Request-noden för gruppsökningen och kontrollera att headers och autentisering skickas. Rate limits kan också se ut som “slumpmässiga fel” när du frågar för snabbt.
Om du kör egen drift finns ingen körningsbegränsning, så det beror främst på din server och hur snabbt Apify och Qdrant svarar.
Ofta, ja, eftersom den här typen av arbetsflöde behöver batchning, förgrening och mönster som “lagra och sedan fråga”, vilket blir klumpigt (och dyrt) i enklare automationsverktyg. n8n fungerar också bättre med LangChain-liknande steg som segmentering, embeddings och anpassad retrieval, vilket är kärnan i transkriptsökning. Zapier eller Make kan fortfarande hjälpa i kanterna, till exempel att skicka highlights till ett CRM eller avisera en kanal när nya videor indexeras. Om du är osäker, definiera utfallet först: vill du ha ett sökbart bibliotek eller bara en engångsexport av en transkription? Prata med en automationsexpert så får du en rak rekommendation.
När detta väl rullar slutar din research att leva i webbläsarhistoriken. Du ställer bättre frågor, hittar svar snabbare och återanvänder faktiskt det du lär dig.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.