テンプレート-Jsoncut画像をビデオに変換-nocodb
上級
これは自動化ワークフローで、32個のノードを含みます。主にIf, Code, Wait, Merge, NocoDbなどのノードを使用。 テキストプロンプトからGPT、Gemini、JsonCutを使ってウイルスのなストーリービデオを作成
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •OpenAI API Key
使用ノード (32)
カテゴリー
-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "FeATxwI6wsWxI9FS",
"meta": {
"instanceId": "9d644af8fe730dfb972042f018ed45ff1dc2e7905a9737d59584dbe5b8c7f571",
"templateCredsSetupCompleted": true
},
"name": "Template-Jsoncut-images-to-video-nocodb",
"tags": [
{
"id": "4f5HsQRwHRxYIUuf",
"name": "jsoncut",
"createdAt": "2025-10-12T07:39:06.742Z",
"updatedAt": "2025-10-12T07:39:06.742Z"
}
],
"nodes": [
{
"id": "efbe1b62-900e-4b67-9269-b260fab0fa93",
"name": "待機",
"type": "n8n-nodes-base.wait",
"position": [
1808,
-304
],
"webhookId": "4dbe100a-7853-4e41-aca9-e85575d1782a",
"parameters": {
"unit": "seconds",
"amount": 3
},
"typeVersion": 1
},
{
"id": "c6ecd939-fca4-495f-ba6e-e4942d840729",
"name": "成功時",
"type": "n8n-nodes-base.if",
"position": [
2224,
-304
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.data.status }}",
"value2": "COMPLETED"
}
]
}
},
"typeVersion": 1
},
{
"id": "913331fc-3926-4fce-b727-f1ef610d9ae3",
"name": "エラー時",
"type": "n8n-nodes-base.if",
"position": [
2240,
-64
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.data.status }}",
"value2": "FAILED"
},
{
"value1": "={{ $json.data.status }}",
"value2": "CANCELLED"
}
]
}
},
"typeVersion": 1
},
{
"id": "c89e1256-72cd-4346-9043-4b7630e45626",
"name": "画像ダウンロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
-320
],
"parameters": {
"url": "=https://api.jsoncut.com/api/v1/files/{{ $json.data.outputFileId }}/download",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/octet-stream"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.1
},
{
"id": "c1b3af1d-fab0-4c91-88ef-8d5fbae01823",
"name": "エラー停止",
"type": "n8n-nodes-base.stopAndError",
"position": [
2432,
-64
],
"parameters": {
"errorMessage": "Failed to generate image"
},
"typeVersion": 1
},
{
"id": "1c23012e-a186-4174-bd63-8e05bea44b81",
"name": "集約",
"type": "n8n-nodes-base.aggregate",
"position": [
1376,
-304
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "upload_results"
},
"typeVersion": 1
},
{
"id": "d9dbc3a6-e2d1-47a3-979e-014ba6f2e26b",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
-608
],
"parameters": {
"width": 432,
"height": 896,
"content": "### Upload Files to JsonCut API"
},
"typeVersion": 1
},
{
"id": "1a9195a4-e997-4d80-9abb-99a96ee3ab9c",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
-400
],
"parameters": {
"color": 4,
"width": 1104,
"height": 576,
"content": "### Create Job with Jsoncut API and wait for the result\nAlternatively, the JsonCut Community node can also be used (https://github.com/jsoncut/n8n-nodes-jsoncut)."
},
"typeVersion": 1
},
{
"id": "116c4e0b-2533-4ef1-bee3-8c90d15b1527",
"name": "JsonCutジョブ作成",
"type": "n8n-nodes-base.httpRequest",
"position": [
1584,
-304
],
"parameters": {
"url": "https://api.jsoncut.com/api/v1/jobs",
"method": "POST",
"options": {},
"jsonBody": "={\n \"type\": \"video\",\n \"config\": {\n \"width\": 1080,\n \"height\": 1920,\n \"fps\": 25,\n \"format\": \"mp4\",\n \"audioTracks\": [\n {\n \"path\": \"{{ $json.upload_results[1].body.data.storageUrl }}\",\n \"mixVolume\": 0.8,\n \"start\": 1,\n \"cutFrom\": 0,\n \"cutTo\": {{ $('calculate audio duration').item.json.duration_seconds }}\n },\n {\n \"path\": \"{{ $json.upload_results[2].data.storageUrl }}\",\n \"mixVolume\": 0.2,\n \"start\": 0,\n \"cutFrom\": 0\n }\n ],\n \"defaults\": {\n \"layer\": {\n \"googleFont\": \"Montserrat:700\",\n \"textColor\": \"#ffffff\",\n \"fontSize\": 54\n }\n },\n \"clips\": [\n {\n \"duration\": {{ $('calculate audio duration').item.json.duration_seconds + 2 }},\n \"layers\": [\n {\n \"type\": \"fill-color\",\n \"color\": \"#000000\"\n },\n {\n \"type\": \"image-overlay\",\n \"path\": \"{{ $json.upload_results[0].storageUrl[0] }}\",\n \"start\": 1,\n \"stop\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 5) }},\n \"zoomDirection\": \"in\",\n \"zoomAmount\": 0.15,\n \"height\": 1,\n \"opacity\": 0.9\n },\n {\n \"type\": \"image-overlay\",\n \"path\": \"{{ $json.upload_results[0].storageUrl[1] }}\",\n \"start\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 5) }},\n \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 2 ) }},\n \"zoomDirection\": \"right\",\n \"zoomAmount\": 0.15,\n \"height\": 1,\n \"opacity\": 0.9\n },\n {\n \"type\": \"image-overlay\",\n \"path\": \"{{ $json.upload_results[0].storageUrl[2] }}\",\n \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 2 ) }},\n \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 3 ) }},\n \"zoomDirection\": \"left\",\n \"zoomAmount\": 0.15,\n \"height\": 1,\n \"opacity\": 0.9\n },\n {\n \"type\": \"image-overlay\",\n \"path\": \"{{ $json.upload_results[0].storageUrl[3] }}\",\n \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 3 ) }},\n \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 4 ) }},\n \"zoomDirection\": \"out\",\n \"zoomAmount\": 0.15,\n \"height\": 1,\n \"opacity\": 0.9\n },\n {\n \"type\": \"image-overlay\",\n \"path\": \"{{ $json.upload_results[0].storageUrl[4] }}\",\n \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 5) * 4 ) }},\n \"stop\": {{ $('calculate audio duration').item.json.duration_seconds + 1 }},\n \"zoomDirection\": \"in\",\n \"zoomAmount\": 0.15,\n \"height\": 1,\n \"opacity\": 0.9\n },\n {\n \"type\": \"image-overlay\",\n \"path\": \"{{ $json.upload_results[3].data.storageUrl }}\",\n \"start\": 1,\n \"stop\": {{ $('calculate audio duration').item.json.duration_seconds + 1 }},\n \"position\": \"bottom\",\n \"width\": 0.1,\n \"height\": 0.1,\n \"zoomDirection\": null\n },\n {\n \"type\": \"title\",\n \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[0] }}\",\n \"start\": 1,\n \"stop\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 4) }},\n \"position\": \"center\",\n \"zoomDirection\": null\n },\n {\n \"type\": \"title\",\n \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[1] }}\",\n \"start\": {{ 1 + ($('calculate audio duration').item.json.duration_seconds / 4) }},\n \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 2 ) }},\n \"position\": \"center\",\n \"zoomDirection\": null\n },\n {\n \"type\": \"title\",\n \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[2] }}\",\n \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 2 ) }},\n \"stop\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 3 ) }},\n \"position\": \"center\",\n \"zoomDirection\": null\n },\n {\n \"type\": \"title\",\n \"text\": \"{{ $('Generate content and Image Prompt').item.json.message.content.text_segments[3] }}\",\n \"start\": {{ 1 + ( ($('calculate audio duration').item.json.duration_seconds / 4) * 3 ) }},\n \"stop\": {{ $('calculate audio duration').item.json.duration_seconds + 1 }},\n \"position\": \"center\",\n \"zoomDirection\": null\n }\n ]\n }\n ]\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.1
},
{
"id": "8368485d-a6e4-4376-8f7f-b5633844dba3",
"name": "JsonCutジョブステータス確認",
"type": "n8n-nodes-base.httpRequest",
"position": [
2032,
-304
],
"parameters": {
"url": "=https://api.jsoncut.com/api/v1/jobs/{{ $('Create JsonCut Job').item.json.data.jobId }}",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.1
},
{
"id": "e5750b7b-8b1c-4abd-9ffe-7e474991c710",
"name": "コンテンツと画像プロンプト生成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-96,
-448
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-5-mini",
"cachedResultName": "GPT-5-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are a creative video director and scriptwriter for short-form social media videos (Instagram, TikTok, YouTube Shorts). \nYour task is to generate **cohesive and emotionally consistent content** based on a given *theme*:\n\n```\n{{ $json['Video Theme'] }}\n```\nand the *setting* (ignore if empty):\n```\n{{ $json['Video Setting'] || \"\"}}\n```\n\nUse the following Style for the background images (if not empty). Also keep the full style for each image prompt (e.g. is it a painting or photo?):\n```\n{{ $json['Image Style'] || \"\"}}\n```\n\n---\n\n### GOAL\nCreate a concept for a 20–40 second video with consistent **visual style, tone, and lighting**, including:\n1. **5 detailed prompts** for AI-generated background images \n2. **1 full narration text** (to be spoken by a narrator) \n3. **4 sequential text segments** that align perfectly with the narration (each about the same length, representing the same story flow) \n4. **1 short caption** for a social media post promoting this video \n\n---\n\n### IMAGE PROMPT GUIDELINES\n- Each image prompt should clearly describe the **scene**, **style**, **setting**, **mood**, **lighting**, and **color tone**. \n- All 5 images must feel visually and emotionally consistent. \n- Choose an appropriate general lighting mood (e.g. bright and hopeful, dark and moody, colorful and energetic, monochrome and calm). \n- Example structure for each image prompt: \n *“A cinematic photo of [subject/scene], [lighting type], [environment details], [emotion/feeling], [color palette/style].”* \n- Style examples: “cinematic”, “soft focus”, “warm tones”, “volumetric light”, “dreamy atmosphere”, etc. \n\n---\n\n### TEXT CREATION GUIDELINES\n- The full text should sound natural when spoken by a narrator. \n- It should flow smoothly and build emotional or motivational impact. \n- The 4 text segments should represent logical parts of the full narration (e.g. setup, reflection, climax, resolution). \n- Keep tone consistent with the image prompts (motivational, dramatic, peaceful, etc.).\n- Do not use \"-\" or \"—\" (thinking / pause )\n\n---\n\n### OUTPUT FORMAT (JSON)\nReturn the result **only** as valid JSON structured like this:\n\n```json\n{\n \"image_prompts\": [\n \"Prompt 1\",\n \"Prompt 2\",\n \"Prompt 3\",\n \"Prompt 4\",\n \"Prompt 5\"\n ],\n \"full_text\": \"Complete narration text here.\",\n \"text_segments\": [\n \"Part 1 text\",\n \"Part 2 text\",\n \"Part 3 text\",\n \"Part 4 text\"\n ],\n \"caption\": \"Short social media caption here.\"\n}\n```\n\nexample output:\n{\n \"image_prompts\": [\n \"A cinematic sunrise over misty mountains, golden light, hopeful tone, warm color palette\",\n \"A lone runner on a foggy trail, morning light breaking through clouds, determination and focus\",\n \"Close-up of hands tying running shoes, soft golden backlight, texture-rich realism\",\n \"Runner pushing through rain, dramatic contrast lighting, resilience mood\",\n \"A victorious silhouette at the mountain peak, glowing sky, triumphant energy\"\n ],\n \"full_text\": \"Every dream begins as a whisper. Most give up before the echo returns. But those who keep moving, step by step, turn the whisper into a roar. Keep going, your sunrise is closer than you think.\",\n \"text_segments\": [\n \"Every dream begins as a whisper.\",\n \"Most give up before the echo returns.\",\n \"But those who keep moving, step by step, turn the whisper into a roar.\",\n \"Keep going... your sunrise is closer than you think.\"\n ],\n \"caption\": \"Don’t stop now, your sunrise is coming. 🌅 #motivation #dreambig\"\n}\n"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "nthYYcpDIou7MYYb",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "9b178dec-c384-4706-9bb2-0ff6e20c6842",
"name": "ロゴアップロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
112
],
"parameters": {
"url": "https://api.jsoncut.com/api/v1/files/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.1
},
{
"id": "731fba29-88e3-49be-b923-761fed1852fa",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
80
],
"parameters": {
"color": 3,
"width": 272,
"height": 208,
"content": "### Download external ressources"
},
"typeVersion": 1
},
{
"id": "4489772b-903b-429a-bedf-f56acae3d07a",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-608
],
"parameters": {
"color": 3,
"width": 752,
"height": 432,
"content": "### Generate Script and Background Image Prompts"
},
"typeVersion": 1
},
{
"id": "9b384086-9370-445c-a405-be429a6e6850",
"name": "透かしダウンロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
-80,
128
],
"parameters": {
"url": "https://img.icons8.com/?size=100&id=532&format=png&color=000000",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "35542d13-b584-439c-9b4b-793b3f026a56",
"name": "背景音楽リスト取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
-48,
-112
],
"parameters": {
"url": "https://api.openverse.engineering/v1/audio/",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "ambiente"
},
{
"name": "license",
"value": "cc0,by,by-sa"
},
{
"name": "format",
"value": "json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "6c959a7f-82b0-4180-ac6b-a929eca0c5d2",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-160
],
"parameters": {
"color": 3,
"width": 480,
"height": 224,
"content": "### download Random Background music"
},
"typeVersion": 1
},
{
"id": "1d248ef1-3fe8-40ec-9289-b606895934a7",
"name": "MP3ダウンロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
160,
-112
],
"parameters": {
"url": "={{ $json.results[Math.floor(Math.random() * $json.results.length)].url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "e5c524c4-3741-49ca-b1b6-e18d3755f16b",
"name": "背景音楽アップロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
-112
],
"parameters": {
"url": "https://api.jsoncut.com/api/v1/files/upload",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.2
},
{
"id": "86c12a83-8f1e-45e3-88d9-7c34c8f24a29",
"name": "画像プロンプト分割",
"type": "n8n-nodes-base.splitOut",
"position": [
256,
-528
],
"parameters": {
"options": {},
"fieldToSplitOut": "message.content.image_prompts"
},
"typeVersion": 1
},
{
"id": "87c26b9e-1553-4ed4-973d-a81b11a3a519",
"name": "画像生成",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
464,
-528
],
"parameters": {
"prompt": "=Generate in the format 9:16 (no text in image): {{ $json['message.content.image_prompts'] }}",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/imagen-4.0-generate-001",
"cachedResultName": "models/imagen-4.0-generate-001"
},
"options": {},
"resource": "image"
},
"credentials": {
"googlePalmApi": {
"id": "5rD55sSvtNJ9AlHH",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "a5d687a8-bc65-4bac-915d-deccdc2c8098",
"name": "音声生成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
256,
-336
],
"parameters": {
"input": "={{ $json.message.content.full_text }}",
"voice": "echo",
"options": {},
"resource": "audio"
},
"credentials": {
"openAiApi": {
"id": "nthYYcpDIou7MYYb",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "5f471cee-9b78-4cb0-8711-dfcbb4897d01",
"name": "背景画像アップロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
-528
],
"parameters": {
"url": "https://api.jsoncut.com/api/v1/files/upload",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.2
},
{
"id": "4c4efcd6-0224-4003-85b6-3269359085df",
"name": "音声アップロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
-320
],
"parameters": {
"url": "https://api.jsoncut.com/api/v1/files/upload",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
},
"response": {
"response": {
"fullResponse": true
}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "SX6i9sHw3AcKihne",
"name": "JsonCut API Key"
}
},
"typeVersion": 4.2
},
{
"id": "bd711a93-ab0c-4dba-bdf2-d149030decdb",
"name": "背景画像URL",
"type": "n8n-nodes-base.aggregate",
"position": [
976,
-528
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "data.storageUrl"
}
]
}
},
"typeVersion": 1
},
{
"id": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
"name": "全アップロード統合",
"type": "n8n-nodes-base.merge",
"position": [
1232,
-336
],
"parameters": {
"numberInputs": 4
},
"typeVersion": 3.2
},
{
"id": "4f0167a3-e215-4524-b606-7e70835796da",
"name": "音声時間計算",
"type": "n8n-nodes-base.code",
"position": [
464,
-336
],
"parameters": {
"mode": "runOnceForEachItem",
"language": "python",
"pythonCode": "import base64\n\n# Get binary MP3 data from the input item\nbinary_data = _input.item.binary['data']\nbuffer = base64.b64decode(binary_data['data'])\n\ndef get_bitrate(bitrate_index, version, layer):\n bitrates = {\n 'V1L3': [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320],\n 'V2L3': [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],\n }\n table = bitrates['V1L3'] if version == 3 else bitrates['V2L3']\n return table[bitrate_index] * 1000\n\nbitrate = 0\nfile_size = len(buffer)\n\n# Scan for first MP3 frame header (starts with 0xFFE)\nfor i in range(len(buffer) - 4):\n if buffer[i] == 0xFF and (buffer[i + 1] & 0xE0) == 0xE0:\n version_bits = (buffer[i + 1] >> 3) & 0x03\n layer_bits = (buffer[i + 1] >> 1) & 0x03\n bitrate_index = (buffer[i + 2] >> 4) & 0x0F\n\n version = 3 if version_bits == 3 else 2\n layer = 3 - (layer_bits - 1)\n\n bitrate = get_bitrate(bitrate_index, version, layer)\n if bitrate > 0:\n break\n\nif bitrate == 0:\n _input.item.json['duration_seconds'] = None\n _input.item.json['error'] = 'Could not detect bitrate'\n return _input.item\n\n# Calculate duration: file size (bits) / bitrate\nduration_seconds = (file_size * 8) / bitrate\n\n# Write results into JSON\n_input.item.json['duration_seconds'] = round(duration_seconds, 2)\n_input.item.json['duration_minutes'] = round(duration_seconds / 60, 2)\n_input.item.json['bitrate'] = bitrate\n_input.item.json['file_size_bytes'] = file_size\n\nreturn _input.item\n"
},
"typeVersion": 2
},
{
"id": "efd1bde6-0c7e-41df-80ec-de2e7b80bfb4",
"name": "フォーム送信時",
"type": "n8n-nodes-base.formTrigger",
"position": [
-384,
-272
],
"webhookId": "d3afd952-d50b-4e19-8eb5-9e37816d355a",
"parameters": {
"options": {},
"formTitle": "Social Video Production Input",
"formFields": {
"values": [
{
"fieldType": "textarea",
"fieldLabel": "Video Theme",
"placeholder": "Enter the main theme or motto for your video (e.g., ‘Embrace the small wins’ for a motivational video).",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Video Setting",
"placeholder": "Describe the setting or mood of the video (e.g., a calm, cozy evening with soft lighting for a relaxed, reflective feel).",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Image Style",
"placeholder": "Optional: Define the style of the background images (e.g. Watercolor Painting)"
}
]
},
"formDescription": "Provide the core idea and the setting for your video. These details will guide the generation of a polished, ready-to-publish social media video."
},
"typeVersion": 2.2
},
{
"id": "01a424d4-17f9-4d47-8921-d231c3f1d7f3",
"name": "NocoDBに動画保存",
"type": "n8n-nodes-base.nocoDb",
"position": [
2688,
-320
],
"parameters": {
"table": "mu9r5htgfwxolb2",
"fieldsUi": {
"fieldValues": [
{
"fieldName": "Theme",
"fieldValue": "={{ $('On form submission').item.json['Video Theme'] }}"
},
{
"fieldName": "Setting",
"fieldValue": "={{ $('On form submission').item.json['Video Setting'] || \"\" }}"
},
{
"fieldName": "Style",
"fieldValue": "={{ $('On form submission').item.json['Image Style'] || \"\" }}"
},
{
"fieldName": "Output",
"binaryData": true,
"binaryProperty": "data"
}
]
},
"operation": "create",
"projectId": "prcn8tlyu7dbn60",
"authentication": "nocoDbApiToken"
},
"credentials": {
"nocoDbApiToken": {
"id": "JQaKWA6ljHUEheIi",
"name": "NocoDB Local"
}
},
"typeVersion": 3
},
{
"id": "d341edf1-f747-43c5-8192-56900d04da04",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-528
],
"parameters": {
"color": 6,
"width": 560,
"height": 416,
"content": "## Exmpe Form Input\n\n1. General Video Theme:\nOvercoming struggles / personal growth\n\n2. Video Setting:\nIntrospective, deep thinking, sunrise or twilight moments, emotional reflection\n\n3. Background Image Style: \nWatercolor painting with muted colors, low light"
},
"typeVersion": 1
},
{
"id": "763a2957-3e11-4f38-872e-ed58b84a9378",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
-576
],
"parameters": {
"color": 6,
"width": 480,
"height": 464,
"content": "## Stores the final output in a new Table Row\n\n### Row Content:\n1. Theme\n2. Setting\n3. Style\n4. Output Video File"
},
"typeVersion": 1
},
{
"id": "5be95991-a680-4363-8f1b-7e0b1c7a18a1",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
-80
],
"parameters": {
"color": 6,
"width": 480,
"height": 128,
"content": "## Example Output\n\n[📹 View Video (Google Drive)](https://drive.google.com/file/d/1Cl0KwgRgcuBPVdGgL-nqAcheyvfVXttD/preview)\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "826504f6-36f9-4c5b-83d8-1a1f30d8f248",
"connections": {
"efbe1b62-900e-4b67-9269-b260fab0fa93": {
"main": [
[
{
"node": "8368485d-a6e4-4376-8f7f-b5633844dba3",
"type": "main",
"index": 0
}
]
]
},
"913331fc-3926-4fce-b727-f1ef610d9ae3": {
"main": [
[
{
"node": "c1b3af1d-fab0-4c91-88ef-8d5fbae01823",
"type": "main",
"index": 0
}
],
[
{
"node": "efbe1b62-900e-4b67-9269-b260fab0fa93",
"type": "main",
"index": 0
}
]
]
},
"1c23012e-a186-4174-bd63-8e05bea44b81": {
"main": [
[
{
"node": "116c4e0b-2533-4ef1-bee3-8c90d15b1527",
"type": "main",
"index": 0
}
]
]
},
"c6ecd939-fca4-495f-ba6e-e4942d840729": {
"main": [
[
{
"node": "c89e1256-72cd-4346-9043-4b7630e45626",
"type": "main",
"index": 0
}
],
[
{
"node": "913331fc-3926-4fce-b727-f1ef610d9ae3",
"type": "main",
"index": 0
}
]
]
},
"9b178dec-c384-4706-9bb2-0ff6e20c6842": {
"main": [
[
{
"node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
"type": "main",
"index": 3
}
]
]
},
"1d248ef1-3fe8-40ec-9289-b606895934a7": {
"main": [
[
{
"node": "e5c524c4-3741-49ca-b1b6-e18d3755f16b",
"type": "main",
"index": 0
}
]
]
},
"c89e1256-72cd-4346-9043-4b7630e45626": {
"main": [
[
{
"node": "01a424d4-17f9-4d47-8921-d231c3f1d7f3",
"type": "main",
"index": 0
}
]
]
},
"a5d687a8-bc65-4bac-915d-deccdc2c8098": {
"main": [
[
{
"node": "4f0167a3-e215-4524-b606-7e70835796da",
"type": "main",
"index": 0
}
]
]
},
"87c26b9e-1553-4ed4-973d-a81b11a3a519": {
"main": [
[
{
"node": "5f471cee-9b78-4cb0-8711-dfcbb4897d01",
"type": "main",
"index": 0
}
]
]
},
"fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2": {
"main": [
[
{
"node": "1c23012e-a186-4174-bd63-8e05bea44b81",
"type": "main",
"index": 0
}
]
]
},
"116c4e0b-2533-4ef1-bee3-8c90d15b1527": {
"main": [
[
{
"node": "efbe1b62-900e-4b67-9269-b260fab0fa93",
"type": "main",
"index": 0
}
]
]
},
"9b384086-9370-445c-a405-be429a6e6850": {
"main": [
[
{
"node": "9b178dec-c384-4706-9bb2-0ff6e20c6842",
"type": "main",
"index": 0
}
]
]
},
"efd1bde6-0c7e-41df-80ec-de2e7b80bfb4": {
"main": [
[
{
"node": "e5750b7b-8b1c-4abd-9ffe-7e474991c710",
"type": "main",
"index": 0
},
{
"node": "35542d13-b584-439c-9b4b-793b3f026a56",
"type": "main",
"index": 0
},
{
"node": "9b384086-9370-445c-a405-be429a6e6850",
"type": "main",
"index": 0
}
]
]
},
"4c4efcd6-0224-4003-85b6-3269359085df": {
"main": [
[
{
"node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
"type": "main",
"index": 1
}
]
]
},
"86c12a83-8f1e-45e3-88d9-7c34c8f24a29": {
"main": [
[
{
"node": "87c26b9e-1553-4ed4-973d-a81b11a3a519",
"type": "main",
"index": 0
}
]
]
},
"01a424d4-17f9-4d47-8921-d231c3f1d7f3": {
"main": [
[]
]
},
"bd711a93-ab0c-4dba-bdf2-d149030decdb": {
"main": [
[
{
"node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
"type": "main",
"index": 0
}
]
]
},
"e5c524c4-3741-49ca-b1b6-e18d3755f16b": {
"main": [
[
{
"node": "fa3bd8e1-a251-4fa0-a2f8-6c6ec83801b2",
"type": "main",
"index": 2
}
]
]
},
"8368485d-a6e4-4376-8f7f-b5633844dba3": {
"main": [
[
{
"node": "c6ecd939-fca4-495f-ba6e-e4942d840729",
"type": "main",
"index": 0
}
]
]
},
"5f471cee-9b78-4cb0-8711-dfcbb4897d01": {
"main": [
[
{
"node": "bd711a93-ab0c-4dba-bdf2-d149030decdb",
"type": "main",
"index": 0
}
]
]
},
"4f0167a3-e215-4524-b606-7e70835796da": {
"main": [
[
{
"node": "4c4efcd6-0224-4003-85b6-3269359085df",
"type": "main",
"index": 0
}
]
]
},
"35542d13-b584-439c-9b4b-793b3f026a56": {
"main": [
[
{
"node": "1d248ef1-3fe8-40ec-9289-b606895934a7",
"type": "main",
"index": 0
}
]
]
},
"e5750b7b-8b1c-4abd-9ffe-7e474991c710": {
"main": [
[
{
"node": "86c12a83-8f1e-45e3-88d9-7c34c8f24a29",
"type": "main",
"index": 0
},
{
"node": "a5d687a8-bc65-4bac-915d-deccdc2c8098",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
テンプレート-Jsoncut-rss-転送
GPT-5 そして JsonCut を使って RSS フィードから AI 生成のソーシャルメディア投稿を作成
If
Wait
Merge
+
If
Wait
Merge
24 ノード8Automator
テンプレート-Jsoncut-ワ不透
JSONCut APIを使用して専門のな画像ウォーターマークを作成
If
Wait
Merge
+
If
Wait
Merge
14 ノードKev
コンテンツ作成
PDF から注文へ
AIを使ってPDFの購入注文をAdobe Commerceの販売注文に自動変換する
If
Set
Code
+
If
Set
Code
96 ノードJKingma
文書抽出
WordPress コンテンツジェネレータ v3
WordPress コンテンツジェネレーター v3
If
Set
Code
+
If
Set
Code
102 ノードAlex Kim
人工知能
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
競合企業のコンテンツ分析を通じて市場調査と SEO のコンテンツカンパスを発見
競合サイトのコンテンツ空白をInfraNodusのGraphRAGで分析し、SEOを支援
If
Code
Wait
+
If
Code
Wait
37 ノードInfraNodus
人工知能