YTB-Ausreißer-Finder
Experte
Dies ist ein Automatisierungsworkflow mit 16 Nodes. Hauptsächlich werden If, Set, Code, Wait, Airtable und andere Nodes verwendet. Entdeckung verborgener YouTube-Trends/anomaler Videos in Ihrer Nische (Apify + Airtable)
Voraussetzungen
- •Airtable API Key
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Verwendete Nodes (16)
Kategorie
-
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"id": "",
"meta": {
"instanceId": "",
"templateCredsSetupCompleted": true
},
"name": "YTB Outlier Finder",
"tags": [],
"nodes": [
{
"id": "Warten-0",
"name": "Warten",
"type": "n8n-nodes-base.wait",
"position": [
0,
-460
],
"webhookId": "",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "Wenn-1",
"name": "Wenn",
"type": "n8n-nodes-base.if",
"position": [
-160,
-640
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "SUCCEEDED"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "Pr-fen-ob-beendet-2",
"name": "Prüfen ob beendet",
"type": "n8n-nodes-base.httpRequest",
"position": [
-440,
-640
],
"parameters": {
"url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/runs/last?token=[YOUR_API_TOKEN]",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "Videodaten-abrufen-3",
"name": "Videodaten abrufen",
"type": "n8n-nodes-base.httpRequest",
"position": [
160,
-660
],
"parameters": {
"url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/runs/last/dataset/items?token=[YOUR_API_TOKEN]",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "Videodatensatz-erstellen-4",
"name": "Videodatensatz erstellen",
"type": "n8n-nodes-base.httpRequest",
"position": [
-700,
-640
],
"parameters": {
"url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/runs?token=[YOUR_API_TOKEN]",
"method": "POST",
"options": {},
"jsonBody": "={\n \"dateFilter\": \"week\",\n \"downloadSubtitles\": true,\n \"hasCC\": false,\n \"hasLocation\": false,\n \"hasSubtitles\": false,\n \"is360\": false,\n \"is3D\": false,\n \"is4K\": false,\n \"isBought\": false,\n \"isHD\": false,\n \"isHDR\": false,\n \"isLive\": false,\n \"isVR180\": false,\n \"lengthFilter\": \"between420\",\n \"maxResultStreams\": 0,\n \"maxResults\": 3,\n \"maxResultsShorts\": 0,\n \"preferAutoGeneratedSubtitles\": false,\n \"saveSubsToKVS\": false,\n \"searchQueries\": [\n \"{{ $json.keyword1 }}\",\n \"{{ $json.keyword2 }}\",\n \"{{ $json.keyword3 }}\"\n ],\n \"sortingOrder\": \"relevance\",\n \"subtitlesLanguage\": \"en\"\n} ",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "-ber-Elemente-iterieren-5",
"name": "Über Elemente iterieren",
"type": "n8n-nodes-base.splitInBatches",
"position": [
400,
-660
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "Mistral-Cloud-Chat-Model-6",
"name": "Mistral Cloud Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
"position": [
980,
-300
],
"parameters": {
"options": {}
},
"credentials": {
"mistralCloudApi": {
"id": "",
"name": "Mistral Cloud account"
}
},
"typeVersion": 1
},
{
"id": "Keine-Aktion-7",
"name": "Keine Aktion",
"type": "n8n-nodes-base.noOp",
"position": [
900,
-680
],
"parameters": {},
"typeVersion": 1
},
{
"id": "Airtable-8",
"name": "Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
1460,
-320
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/[YOUR_DB]",
"cachedResultName": "YTB Trend Finder"
},
"table": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/[YOUR_DB]",
"cachedResultName": "Listing"
},
"columns": {
"value": {
"Link": "={{ $('Loop Over Items').item.json.url }}",
"Title": "={{ $('Loop Over Items').item.json.title }}",
"Duration": "={{ $('Loop Over Items').item.json.duration }}",
"Structure": "={{ $json.text }}",
"SubsCount": "={{ $('Loop Over Items').item.json.numberOfSubscribers }}",
"Thumbnail": "={{ [{ \"url\": $('Loop Over Items').item.json.thumbnailUrl }] }}",
"ViewsCount": "={{ $('Loop Over Items').item.json.viewCount }}",
"ChannelName": "={{ $('Loop Over Items').item.json.channelName }}",
"CommentsCount": "={{ $('Loop Over Items').item.json.commentsCount }}"
},
"schema": [
{
"id": "Link",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ChannelName",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "ChannelName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Thumbnail",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Thumbnail",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ViewsCount",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "ViewsCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SubsCount",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "SubsCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "CommentsCount",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "CommentsCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Duration",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Duration",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Structure",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Structure",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "VSC Ratio",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "VSC Ratio",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "Zeitplan-Trigger-9",
"name": "Zeitplan-Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1220,
-640
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
1
]
}
]
}
},
"typeVersion": 1.2
},
{
"id": "Notiz2-10",
"name": "Notiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1300,
-900
],
"parameters": {
"color": 7,
"width": 780,
"height": 440,
"content": "## SETUP\n\n**Scheduled Trigger :** Select the Frequency you want. If you change it, update the data accordingly in the \"Create Videos Dataset\" HTTP Request Node in Body ➡️ JSON ➡️ dateFilter.\n\n\n**Setup Keywords :** Enter Keyword Related to the niche you want. If you change the number of keywords, update the data accordingly in the \"Create Videos Dataset\" HTTP Request Node in Body ➡️ JSON ➡️ searchQueries.\n\n**Create Videos Dataset :** Refer to the Apify Documentation for more https://docs.apify.com/api/v2/getting-started\n\n**APIs :** For all HTTP Request node in the URL field, replace [YOUR_API_TOKEN] with your API Token. "
},
"typeVersion": 1
},
{
"id": "Textbereinigung-11",
"name": "Textbereinigung",
"type": "n8n-nodes-base.code",
"position": [
700,
-500
],
"parameters": {
"jsCode": "// Assume input is a single string like SRT format\nconst input = $input.first().json.subtitles[0].srt; // or wherever your caption string is\n\n// Step-by-step cleanup\nconst cleaned = input\n // Remove caption numbers (lines with only digits)\n .replace(/^\\d+\\s*$/gm, \"\")\n // Remove timing lines\n .replace(/^\\d{2}:\\d{2}:\\d{1,2},\\d{1,3} --> \\d{2}:\\d{2}:\\d{1,2},\\d{1,3}\\s*$/gm, \"\")\n // Remove leftover newlines\n .replace(/\\n{2,}/g, \"\\n\")\n // Trim and flatten everything to single paragraph\n .replace(/\\n/g, \" \")\n .trim();\n\nreturn [{ cleanedText: cleaned }];"
},
"typeVersion": 2
},
{
"id": "Textsynthese-12",
"name": "Textsynthese",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
960,
-500
],
"parameters": {
"text": "={{ $json.cleanedText }}",
"messages": {
"messageValues": [
{
"type": "HumanMessagePromptTemplate",
"message": "=You are a summarization assistant. Given a transcript of a YouTube video, your task is to summarize the content using only information found in the transcript, do not invent, infer, or add anything beyond what is said. Structure your output as follows: \n\n1. Intro how the video begins or introduces the topic. Don't do any modification on this part. \n\n2. Structure of the Video A breakdown of the video’s flow using bullet points: \nMajor Points: The main topics or arguments discussed. \nSubpoints: Supporting details, examples, or smaller elements related to each major point. Use indentation or clear labeling to distinguish between major points and their related subpoints. \n"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "Schl-sselw-rter-einrichten-13",
"name": "Schlüsselwörter einrichten",
"type": "n8n-nodes-base.set",
"position": [
-960,
-640
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "",
"name": "keyword1",
"type": "string",
"value": "Healthy food"
},
{
"id": "",
"name": "keyword2",
"type": "string",
"value": "Meal prep healthy"
},
{
"id": "",
"name": "keyword3",
"type": "string",
"value": "High Protein Snack"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "Notiz-14",
"name": "Notiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1300,
-1140
],
"parameters": {
"color": 7,
"width": 780,
"height": 220,
"content": "## How this is Working ?\n**1 -** Every Week retrieve Keywords you want to track\n**2 -** Thanks to Apify, scrap video from Youtube Search related to these Keywords filtered by relevance\n**3 -** Wait until the Dataset is completed\n**4 -** Get the Information contained in the Dataset\n**5 -** For each Video, clean and summarize the script\n**6 -** Upload everything in your Airtable Database\n\n**Youtube Video Tutorial : https://youtu.be/pH2hVaij3FY**\n**Need Help with Your Workflows ? https://tally.so/r/wayeqB**"
},
"typeVersion": 1
},
{
"id": "Notiz1-15",
"name": "Notiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
-700
],
"parameters": {
"color": 7,
"width": 320,
"height": 620,
"content": "## Airtable DB Fields\n**1 -** Video Link (ID)\n**2 -** Video Title\n**3 -** Channel Name\n**4 -** Thumbnail ⬇️\nTo Upload an Image on Airtable Attachement Field you need an Array of the URL in this format : {{ [{ \"url\": $json.thumbnail}] }}\n**5 -** Views Count\n**6 -** Subs Count\n**7 -** Comments Count\n**8 -** Duration\n**9 -** Structure\n**10 -** VSC Ratio ⬇️\nFormula :(ViewsCount/SubsCount)*0.7 + (CommentsCount/ViewsCount)*0.3)\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"Wenn-1": {
"main": [
[
{
"node": "Videodaten-abrufen-3",
"type": "main",
"index": 0
}
],
[
{
"node": "Warten-0",
"type": "main",
"index": 0
}
]
]
},
"Warten-0": {
"main": [
[
{
"node": "Pr-fen-ob-beendet-2",
"type": "main",
"index": 0
}
]
]
},
"Airtable-8": {
"main": [
[
{
"node": "-ber-Elemente-iterieren-5",
"type": "main",
"index": 0
}
]
]
},
"Textbereinigung-11": {
"main": [
[
{
"node": "Textsynthese-12",
"type": "main",
"index": 0
}
]
]
},
"Schl-sselw-rter-einrichten-13": {
"main": [
[
{
"node": "Videodatensatz-erstellen-4",
"type": "main",
"index": 0
}
]
]
},
"Videodaten-abrufen-3": {
"main": [
[
{
"node": "-ber-Elemente-iterieren-5",
"type": "main",
"index": 0
}
]
]
},
"-ber-Elemente-iterieren-5": {
"main": [
[
{
"node": "Keine-Aktion-7",
"type": "main",
"index": 0
}
],
[
{
"node": "Textbereinigung-11",
"type": "main",
"index": 0
}
]
]
},
"Textsynthese-12": {
"main": [
[
{
"node": "Airtable-8",
"type": "main",
"index": 0
}
]
]
},
"Zeitplan-Trigger-9": {
"main": [
[
{
"node": "Schl-sselw-rter-einrichten-13",
"type": "main",
"index": 0
}
]
]
},
"Pr-fen-ob-beendet-2": {
"main": [
[
{
"node": "Wenn-1",
"type": "main",
"index": 0
}
]
]
},
"Videodatensatz-erstellen-4": {
"main": [
[
{
"node": "Pr-fen-ob-beendet-2",
"type": "main",
"index": 0
}
]
]
},
"Mistral-Cloud-Chat-Model-6": {
"ai_languageModel": [
[
{
"node": "Textsynthese-12",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Virale Titel/Thumbnail-Generierung
Automatisierte Erstellung von viralen YouTube-Titeln und Thumbnails (FLUX.1 + Apify)
If
Set
Code
+
If
Set
Code
41 NodesNasser
Künstliche Intelligenz
Arbeite mit GPT-4 und Airtable, um Workflow-Logs automatisch zu erfassen und zu sichern
Automatische Protokollierung und Sicherung von Workflows mithilfe von GPT-4 und Airtable
If
N8n
Set
+
If
N8n
Set
38 NodesGuillaume Duvernay
KI-Zusammenfassung
YTB-Metadaten-Generator
Generieren von YouTube-Videometadaten (Zeitstempel, Tags, Beschreibungen usw.)
If
Code
Wait
+
If
Code
Wait
22 NodesNasser
Künstliche Intelligenz
Automatisierte Lead-Generierung und Direktnachrichten-Kontaktierung auf LinkedIn mit Airtable, OpenAI und Unipile
Automatisierte LinkedIn-Lead-Generierung und Direktnachrichten-Kontaktaufnahme mit Airtable, OpenAI und Unipile
If
Set
Code
+
If
Set
Code
143 NodesRuben AI
Lead-Pflege
Verwenden Sie AI und Apify, um LinkedIn-Post-Interaktionen in qualifizierte Leads umzuwandeln
Wandeln Sie LinkedIn-Post-Interaktionen mithilfe von KI und Apify in qualifizierte Leads um
If
Set
Code
+
If
Set
Code
26 NodesAnna Bui
Lead-Generierung
Verwenden Sie AI und Freepik, um Reddit-Geschäftsprobleme in virales LinkedIn-Inhalt umzuwandeln
Verwandeln Sie Reddit-Geschäftsprobleme mithilfe von KI und Freepik in virale LinkedIn-Inhalte
If
Set
Code
+
If
Set
Code
48 NodesDaniel Lianes
Content-Erstellung
Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes16
Kategorie-
Node-Typen12
Autor
Externe Links
Auf n8n.io ansehen →
Diesen Workflow teilen