YTB 外れ値ファインダー
上級
これは自動化ワークフローで、16個のノードを含みます。主にIf, Set, Code, Wait, Airtableなどのノードを使用。 Apify + Airtableであなたの細分化市場で隐藏されたYouTubeトレンド/異常動画を発見する
前提条件
- •Airtable API Key
- •ターゲットAPIの認証情報が必要な場合あり
使用ノード (16)
カテゴリー
-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "",
"meta": {
"instanceId": "",
"templateCredsSetupCompleted": true
},
"name": "YTB Outlier Finder",
"tags": [],
"nodes": [
{
"id": "--0",
"name": "待機",
"type": "n8n-nodes-base.wait",
"position": [
0,
-460
],
"webhookId": "",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "--1",
"name": "条件分岐",
"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": "--2",
"name": "完了確認",
"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": "--3",
"name": "動画データ取得",
"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": "--4",
"name": "動画データセット作成",
"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": "--5",
"name": "アイテムループ処理",
"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": "--7",
"name": "何もしない",
"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": "--9",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1220,
-640
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
1
]
}
]
}
},
"typeVersion": 1.2
},
{
"id": "-2-10",
"name": "付箋2",
"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": "--11",
"name": "テキストクリーニング",
"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": "--12",
"name": "テキスト統合",
"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": "--13",
"name": "キーワード設定",
"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": "--14",
"name": "付箋",
"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": "-1-15",
"name": "付箋1",
"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": {
"--1": {
"main": [
[
{
"node": "--3",
"type": "main",
"index": 0
}
],
[
{
"node": "--0",
"type": "main",
"index": 0
}
]
]
},
"--0": {
"main": [
[
{
"node": "--2",
"type": "main",
"index": 0
}
]
]
},
"Airtable-8": {
"main": [
[
{
"node": "--5",
"type": "main",
"index": 0
}
]
]
},
"--11": {
"main": [
[
{
"node": "--12",
"type": "main",
"index": 0
}
]
]
},
"--13": {
"main": [
[
{
"node": "--4",
"type": "main",
"index": 0
}
]
]
},
"--3": {
"main": [
[
{
"node": "--5",
"type": "main",
"index": 0
}
]
]
},
"--5": {
"main": [
[
{
"node": "--7",
"type": "main",
"index": 0
}
],
[
{
"node": "--11",
"type": "main",
"index": 0
}
]
]
},
"--12": {
"main": [
[
{
"node": "Airtable-8",
"type": "main",
"index": 0
}
]
]
},
"--9": {
"main": [
[
{
"node": "--13",
"type": "main",
"index": 0
}
]
]
},
"--2": {
"main": [
[
{
"node": "--1",
"type": "main",
"index": 0
}
]
]
},
"--4": {
"main": [
[
{
"node": "--2",
"type": "main",
"index": 0
}
]
]
},
"Mistral-Cloud-Chat-Model-6": {
"ai_languageModel": [
[
{
"node": "--12",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
ウイルスのなタイトル/サムネイル生成
感染拡散型YouTubeタイトルとサム네イル作成の自動化(FLUX.1 + Apify)
If
Set
Code
+
If
Set
Code
41 ノードNasser
人工知能
GPT-4 と Airtable を使用してワークフローを自動のに記録・バックアップ
GPT-4 と Airtable を使用してワーキ弗洛ーを自動のに記録しバックアップする
If
N8n
Set
+
If
N8n
Set
38 ノードGuillaume Duvernay
AI要約
YTBメタデータジェネレータ
YouTube動画のメタデータを生成(「タイムスタンプ」「タグ」「説明」など)
If
Code
Wait
+
If
Code
Wait
22 ノードNasser
人工知能
Airtable、OpenAI、Unipile を使用した LinkedIn リード生成と自動ダイレクトメッセージングの自動化
Airtable、OpenAI、Unipileを使用した自動LinkedInリード生成とInMail投稿
If
Set
Code
+
If
Set
Code
143 ノードRuben AI
リードナーチャリング
LinkedInの投稿の反応をAIとApifyを使用して有効なリードに変換
AIとApifyを使用してLinkedIn投稿の相互作用を有効なリードに転換
If
Set
Code
+
If
Set
Code
26 ノードAnna Bui
リード獲得
AIとFreepikを使用してRedditのビジネス課題をウイルスのLinkedInコンテンツに変換
AIとFreepikを使用してRedditのビジネス課題をウイルスのなLinkedInコンテンツに変換
If
Set
Code
+
If
Set
Code
48 ノードDaniel Lianes
コンテンツ作成