YTB 메타데이터 생성기
고급
이것은AI, Marketing분야의자동화 워크플로우로, 22개의 노드를 포함합니다.주로 If, Code, Wait, YouTube, HttpRequest 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. YouTube 비디오 메타데이터(타임스탬프, 태그, 설명 등) 생성
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
사용된 노드 (22)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "",
"meta": {
"instanceId": "",
"templateCredsSetupCompleted": true
},
"name": "YTB Metadata Generator",
"tags": [],
"nodes": [
{
"id": "Mistral-Cloud-Chat-Model-0",
"name": "Mistral Cloud Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
"position": [
700,
-40
],
"parameters": {
"model": "mistral-large-latest",
"options": {}
},
"credentials": {
"mistralCloudApi": {
"id": "",
"name": "Mistral Cloud account"
}
},
"typeVersion": 1
},
{
"id": "--1",
"name": "아무 작업 없음",
"type": "n8n-nodes-base.noOp",
"position": [
-440,
120
],
"parameters": {},
"typeVersion": 1
},
{
"id": "Structured-Output-Parser-2",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
860,
-40
],
"parameters": {
"jsonSchemaExample": "[\n {\n \"name\": \"preview\",\n \"type\": \"string\",\n \"description\": \"Short preview (100–200 characters, no hashtags)\"\n },\n {\n \"name\": \"timestamps\",\n \"type\": \"string\",\n \"description\": \"YouTube-style timestamps, each on a new line, starts with 00:00\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"string\",\n \"description\": \"Comma-separated keywords (no hashtags)\"\n }\n]\n"
},
"typeVersion": 1.2
},
{
"id": "-1-3",
"name": "아무 작업 없음1",
"type": "n8n-nodes-base.noOp",
"position": [
700,
100
],
"parameters": {},
"typeVersion": 1
},
{
"id": "--4",
"name": "완료 여부 확인",
"type": "n8n-nodes-base.httpRequest",
"position": [
-160,
-80
],
"parameters": {
"url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/runs/last?token=[YOUR_API_TOKEN]",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "--5",
"name": "데이터셋 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
240,
-100
],
"parameters": {
"url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/runs/last/dataset/items?token=[YOUR_API_TOKEN]",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "--6",
"name": "동영상 스크래핑",
"type": "n8n-nodes-base.httpRequest",
"position": [
-440,
-80
],
"parameters": {
"url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/runs?token=[YOUR_API_TOKEN]",
"method": "POST",
"options": {},
"jsonBody": "={\n \"downloadSubtitles\": true,\n \"preferAutoGeneratedSubtitles\": false,\n \"startUrls\": [\n {\n \"url\": \"{{ $('Trigger New Video Posted').item.json.link }}\",\n \"method\": \"GET\"\n }\n ],\n \"subtitlesLanguage\": \"en\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "--7",
"name": "완료 시",
"type": "n8n-nodes-base.if",
"position": [
20,
-80
],
"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": "--8",
"name": "대기",
"type": "n8n-nodes-base.wait",
"position": [
180,
120
],
"webhookId": "",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "--9",
"name": "최근일 경우",
"type": "n8n-nodes-base.if",
"position": [
-660,
20
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ new Date($json[\"pubDate\"]).getTime() }}",
"rightValue": "={{ new Date().getTime() - 10 * 60 * 1000 }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "--10",
"name": "생성되지 않았을 경우",
"type": "n8n-nodes-base.if",
"position": [
460,
-100
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.text }}",
"rightValue": "00:00"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "--11",
"name": "설명 생성",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
700,
-200
],
"parameters": {
"text": "You are given the full script of a YouTube video. Your task is to extract metadata in a structured format to be used in a YouTube upload.",
"messages": {
"messageValues": [
{
"type": "HumanMessagePromptTemplate",
"message": "=Script Input:\n{{ $json.subtitles[0].srt }}\n\nFinal Output Format:\n\nPreview:\n[short preview description]\n\nTimestamps:\n00:00 [Title]\n00:30 [Title]\n...\n\nTags:\ntag1,tag2,tag3,...\n\nFollow these instructions strictly:\n\n1. Short Preview Description\nWrite a short preview (100–200 characters max) of the video.\nUse engaging language, and include relevant keywords from the topic of the video.\nThis should be a single sentence or two, no hashtags, no line breaks.\n\n2. Timestamps\nFormat: MM:SS Timestamp Title (each on a new line)\nMust start with 00:00\nEach timestamp section must be at least 30 seconds apart\nOnly 3 to 7 total timestamps\nEach timestamp title should be maximum 3 words, summarize the section clearly\nExample format:\n\"00:00 Intro \n00:47 Key Concept \n02:12 Real Example\"\n\n3. Tags\nProvide 5 to 10 relevant SEO-friendly keywords separated by commas\nNo hashtags\nFormat like this:\n\"automation,n8n,ai workflows,youtube growth,openai\"\n"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "--12",
"name": "형식 지정",
"type": "n8n-nodes-base.code",
"position": [
1100,
-200
],
"parameters": {
"jsCode": "// Assuming input data contains preview, timestamps, tags\nconst preview = $input.first().json.output[0].description;\nconst timestamps = $input.first().json.output[1].description;\n\n// Hardcoded links section (edit as needed)\nconst links = `\nLinks:\n- Website: https://example.com\n- Twitter: https://twitter.com/example\n- GitHub: https://github.com/example\n`;\n\n// Format description string\nconst description = preview + \"\\n\" +links + \"\\n\" +timestamps \n\n// Return the formatted description\nreturn [\n {\n json: {\n description: description.trim(),\n },\n },\n];\n"
},
"typeVersion": 2
},
{
"id": "-3-13",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
-100
],
"parameters": {
"color": 7,
"width": 420,
"height": 340,
"content": "## 1- Input\nEnter the ID of the YTB channel to trigger the workflow when a new video is posted"
},
"typeVersion": 1
},
{
"id": "--14",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
-180
],
"parameters": {
"color": 7,
"height": 480,
"content": "## 2- Create DataSet\nApify scrape the last YTB video of the channel"
},
"typeVersion": 1
},
{
"id": "-1-15",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-280
],
"parameters": {
"color": 7,
"width": 600,
"height": 580,
"content": "## 4- Check and Generate Metadata\nVerify if Metadata are not already generated and generate them with LLM\n"
},
"typeVersion": 1
},
{
"id": "-2-16",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
-280
],
"parameters": {
"color": 7,
"width": 460,
"height": 240,
"content": "## 5- Output\nFormat all the data created and update YTB Video"
},
"typeVersion": 1
},
{
"id": "-4-17",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-180
],
"parameters": {
"color": 7,
"width": 640,
"height": 500,
"content": "## 3- Wait for Completion & Get DataSet\nWait until the dataset is completed in Apify and get it"
},
"typeVersion": 1
},
{
"id": "-5-18",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
-800
],
"parameters": {
"color": 7,
"width": 780,
"height": 240,
"content": "## How it works?\n**1 -** Enter the ID of the YTB channel to trigger the workflow when a new video is posted\n**2 -** Apify scrape the last YTB video of the channel\n**3 -** Wait until the dataset is completed in Apify and get it\n**4 -** Verify if Metadata are not already generated and generate them with LLM\n**5 -** Format all the data created and update YTB Video\n\n**📺 Youtube Video Tutorial : https://youtu.be/HaQPAa6l5bU**\n**🛠️ Need Help with Your Workflows ? https://tally.so/r/wayeqB**\n**👨💻 More Workflows : https://n8n.io/creators/nasser/**"
},
"typeVersion": 1
},
{
"id": "-6-19",
"name": "스티키 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
-540
],
"parameters": {
"color": 7,
"width": 780,
"height": 340,
"content": "## SETUP\n\n**Setup Input YTB Chanel :** Go to the channel's page on YouTube, and look at the URL of the page. The channel ID is the value that comes after channel/ in the URL. Add it after \"?channel_id=\" You can also use free tools available to retrieve channel ID.\n\n**Setup Output YTB Video Update :** Connect your YTB account to your n8n instance thanks to the Google Cloud Console. You can find tutorials by typing \"youtube api Oauth\" on Google.\n\n**APIs :** For the following third-party integrations, replace [YOUR_API_TOKEN] with your API Token or connect your account via Client ID / Secret to your n8n instance : \n- Apify : https://docs.apify.com/api/v2/getting-started\n- Youtube : https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.youtube/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.youTube#templates-and-examples"
},
"typeVersion": 1
},
{
"id": "--20",
"name": "새 동영상 게시 트리거",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
-880,
20
],
"parameters": {
"feedUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=[YOUR_CHANNEL_ID]",
"pollTimes": {
"item": [
{
"mode": "everyX",
"unit": "minutes",
"value": 10
}
]
}
},
"typeVersion": 1
},
{
"id": "YTB--21",
"name": "YTB 동영상 업데이트",
"type": "n8n-nodes-base.youTube",
"position": [
1280,
-200
],
"parameters": {
"title": "={{ $('Get DataSet').item.json.title }}",
"videoId": "={{ $('Get DataSet').item.json.id }}",
"resource": "video",
"operation": "update",
"regionCode": "US",
"updateFields": {
"tags": "={{ $('Generate Description').item.json.output[2].description }}",
"description": "={{ $json.description }}"
}
},
"credentials": {
"youTubeOAuth2Api": {
"id": "",
"name": "YouTube account"
}
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"--8": {
"main": [
[
{
"node": "--4",
"type": "main",
"index": 0
}
]
]
},
"--12": {
"main": [
[
{
"node": "YTB--21",
"type": "main",
"index": 0
}
]
]
},
"--9": {
"main": [
[
{
"node": "--6",
"type": "main",
"index": 0
}
],
[
{
"node": "--1",
"type": "main",
"index": 0
}
]
]
},
"--5": {
"main": [
[
{
"node": "--10",
"type": "main",
"index": 0
}
]
]
},
"--7": {
"main": [
[
{
"node": "--5",
"type": "main",
"index": 0
}
],
[
{
"node": "--8",
"type": "main",
"index": 0
}
]
]
},
"--6": {
"main": [
[
{
"node": "--4",
"type": "main",
"index": 0
}
]
]
},
"--10": {
"main": [
[
{
"node": "--11",
"type": "main",
"index": 0
}
],
[
{
"node": "-1-3",
"type": "main",
"index": 0
}
]
]
},
"--4": {
"main": [
[
{
"node": "--7",
"type": "main",
"index": 0
}
]
]
},
"--11": {
"main": [
[
{
"node": "--12",
"type": "main",
"index": 0
}
]
]
},
"Mistral-Cloud-Chat-Model-0": {
"ai_languageModel": [
[
{
"node": "--11",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured-Output-Parser-2": {
"ai_outputParser": [
[
{
"node": "--11",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"--20": {
"main": [
[
{
"node": "--9",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 인공지능, 마케팅
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
바이럴 제목/섬네일 생성
바이럴 YouTube 제목 및 썸네일 생성 자동화(FLUX.1 + Apify)
If
Set
Code
+
If
Set
Code
41 노드Nasser
인공지능
AI个性化多제품이메일마케팅
基于SMTP轮换의AI个性化多제품이메일마케팅(GPT-4o/o3-mini)
If
Code
Wait
+
If
Code
Wait
41 노드Badr
영업
[템플릿] AI 반려동물 가게 v8
🐶 AI 펫 샵 어시스턴트 - GPT-4o, Google 캘린더 및 WhatsApp/Instagram/Facebook 통합
If
N8n
Set
+
If
N8n
Set
244 노드Amanda Benks
영업
YTB 이상치 찾기 도구
귀하의 세분화된 분야에서 숨겨진 YouTube 트렌드/이상 비디오(Apify + Airtable)를 발견
If
Set
Code
+
If
Set
Code
16 노드Nasser
AI를 사용하여 WordPress 블로그 게시물에 태그 자동 추가
AI를 사용하여 WordPress 블로그 글에 자동 태그 지정
If
Set
Code
+
If
Set
Code
32 노드Ludwig
인공지능
AI, ElevenLabs, 다중 플랫폼을 사용하여 POV 비디오를 생성하고 승인
AI, ElevenLabs, 및 다중 플랫폼에서 POV 비디오를 생성하고 승인하기 (TikTok/IG/YT)
If
Set
Code
+
If
Set
Code
60 노드Immanuel
디자인