TikTok の文字起こし
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、21個のノードを含みます。主にIf, Code, Wait, HttpRequest, GoogleSheetsなどのノードを使用。 RapidAPIとGoogle Sheetsを使ってTikTok動画の自動文字起こし
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "OW8DfG2xXPS60mSj",
"meta": {
"instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752"
},
"name": "TikTok Transcript",
"tags": [],
"nodes": [
{
"id": "c0de0228-f79b-4b18-9e5d-ee6218259078",
"name": "Google Sheets2",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1380,
40
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "qUtlCnYpk7bXXaYp",
"name": "Google Sheets account 3"
}
},
"typeVersion": 4.5
},
{
"id": "4b18deea-cfc2-4a8d-b2f3-8b31cac0d573",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
-560,
40
],
"parameters": {
"url": "https://tiktok-transcript-generator.p.rapidapi.com/tiktok/index.php",
"method": "POST",
"options": {
"response": {
"response": {}
}
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json['Video Url'] }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "tiktok-transcript-generator.p.rapidapi.com"
},
{
"name": "x-rapidapi-key"
}
]
}
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "baad7161-51f5-4f29-8af0-39244e10eb60",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
580,
-40
],
"parameters": {
"columns": {
"value": {
"Video Url": "={{ $('If').item.json['Video Url'] }}",
"Transcript": "={{ $json.cleanedSubtitles }}",
"Generated Date": "={{ new Date().toISOString().slice(0, 10) }}"
},
"schema": [
{
"id": "Video Url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Video Url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Transcript",
"type": "string",
"display": true,
"required": false,
"displayName": "Transcript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Generated Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Generated Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Video Url"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "qUtlCnYpk7bXXaYp",
"name": "Google Sheets account 3"
}
},
"typeVersion": 4.5
},
{
"id": "ab5bcc9b-e2a0-4ec7-a4db-de512662549d",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-1100,
40
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "d5d6e8a4-a2da-4cd5-80fc-3cf7c294697d",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
900,
140
],
"webhookId": "74ac1ccb-f843-41b8-97c4-b8d32892a5ea",
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "6bea9362-5502-4c3c-acac-3f1a16bb0c64",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-820,
60
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e0b7b7c8-3a7a-466d-bae7-269282b49d34",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json['Video Url'] }}",
"rightValue": ""
},
{
"id": "64dde394-0e49-4306-a24a-de2bf448fc95",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.Transcript }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a9ca3926-efbd-42fa-9388-b24625690145",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
-20,
-40
],
"parameters": {
"jsCode": "return items.map(item => {\n const raw = item.json.subtitles;\n\n // Remove \"WEBVTT\" header and timestamp lines\n const cleaned = raw\n .replace(/^WEBVTT\\s*/gm, '') // Remove \"WEBVTT\"\n .replace(/^\\d{2}:\\d{2}:\\d{2} --> \\d{2}:\\d{2}:\\d{2}/gm, '') // Remove timestamps\n .replace(/^\\s*\\n/gm, '') // Remove empty lines\n .trim();\n\n return {\n json: {\n cleanedSubtitles: cleaned\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "becf9d6b-26a1-4498-9683-18ad15bc82ea",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
-260,
40
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cd25e377-5c82-40b1-85ea-b372ee7765b7",
"operator": {
"type": "number",
"operation": "notEquals"
},
"leftValue": "={{ $json.error.status }}",
"rightValue": 404
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7c8d30f1-df83-4ee1-83ce-32f6d9b0a810",
"name": "Google Sheets1",
"type": "n8n-nodes-base.googleSheets",
"position": [
300,
140
],
"parameters": {
"columns": {
"value": {
"Video Url": "={{ $('If').item.json['Video Url'] }}",
"Transcript": "No transcription available",
"Generated Date": "={{ new Date().toISOString().slice(0, 10) }}"
},
"schema": [
{
"id": "Video Url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Video Url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Transcript",
"type": "string",
"display": true,
"required": false,
"displayName": "Transcript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Generated Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Generated Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Video Url"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "qUtlCnYpk7bXXaYp",
"name": "Google Sheets account 3"
}
},
"typeVersion": 4.5
},
{
"id": "90a316f5-0f08-42f8-86a0-318bcc9814f9",
"name": "ワークフロー実行時",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1580,
40
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5d36dbf3-ebd6-4cd8-913b-ee1308d6847b",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2500,
-480
],
"parameters": {
"width": 780,
"height": 980,
"content": "# 📝 TikTok Transcript Extraction & Logging Workflow\n\nThis n8n workflow automatically fetches TikTok video transcripts via the RapidAPI TikTok Transcript Generator and updates a Google Sheet with cleaned transcriptions. It processes only rows missing transcripts, handles errors, and adds timestamps.\n\n---\n\n## 🧩 Node-by-Node Explanation\n1. **Manual Trigger** – Starts the workflow manually on demand. \n2. **Google Sheets2** – Reads TikTok video URLs and existing transcripts from the sheet. \n3. **Loop Over Items** – Processes rows in batches of 10 for rate limiting. \n4. **If** – Checks if a video URL exists and transcript is missing. \n5. **HTTP Request** – Calls TikTok transcript API to fetch subtitles. \n6. **If1** – Verifies the API response is successful (no 404 error). \n7. **Code** – Cleans raw subtitles by removing timestamps and headers. \n8. **Google Sheets** – Updates the sheet with cleaned transcript and date. \n9. **Google Sheets1** – Marks videos with no transcript available in the sheet. \n10. **Wait** – Pauses workflow to manage API rate limits before next batch. \n\n---\n\n## 🔑 Summary Use Cases \n- Automate generation of TikTok video transcripts for content teams. \n- Maintain a centralized Google Sheet of transcripts for SEO, captions, or repurposing content. \n- Reduce manual effort and errors in transcribing TikTok videos. \n- Handle API errors and missing data gracefully.\n\n---\n\n**This workflow enables seamless, automated transcription fetching and management for TikTok videos via Google Sheets integration, ideal for marketing, social media managers, and content creators.**\n"
},
"typeVersion": 1
},
{
"id": "708c75c1-2ed7-48eb-b606-d6ff3eca7e30",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1660,
-320
],
"parameters": {
"height": 580,
"content": "### 1. When clicking ‘Execute workflow’ \n**Type:** Manual Trigger \n**Purpose:** \nManually triggers the workflow to start the process of reading TikTok URLs and generating transcripts. \n**Use Case:** \nInitiate the entire flow on demand without waiting for scheduled triggers."
},
"typeVersion": 1
},
{
"id": "b7c01b0d-726b-44e7-8099-93812eccce4b",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1400,
-320
],
"parameters": {
"height": 580,
"content": "### 2. Google Sheets2 \n**Type:** Google Sheets (Read) \n**Purpose:** \nReads rows from the specified Google Sheet containing TikTok video URLs and existing transcript data. \n**Use Case:** \nFetch the list of videos to process and identify which ones need transcription.\n"
},
"typeVersion": 1
},
{
"id": "2d5229aa-2c40-41f6-8556-77690c3ed956",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1140,
-320
],
"parameters": {
"height": 580,
"content": "### 3. Loop Over Items \n**Type:** Split In Batches \n**Purpose:** \nProcesses the fetched rows in smaller batches (default 10 items per batch) to avoid rate limits or overload. \n**Use Case:** \nControl the workflow execution speed and resource usage when handling large data sets.\n"
},
"typeVersion": 1
},
{
"id": "89710512-98f5-4dc2-b8a5-234ae49d343f",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
-320
],
"parameters": {
"height": 580,
"content": "### 4. If \n**Type:** Conditional Check (If) \n**Purpose:** \nFilters each row to process only those where the `Video Url` is not empty and `Transcript` is empty (i.e., videos needing transcription). \n**Use Case:** \nSkip rows already having transcripts to avoid redundant API calls."
},
"typeVersion": 1
},
{
"id": "7514d668-1b6d-4786-8e7f-f07fbfeac194",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
-320
],
"parameters": {
"height": 580,
"content": "### 5. HTTP Request \n**Type:** HTTP Request \n**Purpose:** \nCalls the TikTok Transcript Generator API with the video URL to retrieve the transcript. \n**Use Case:** \nGet the subtitle/transcript data for TikTok videos programmatically.\n"
},
"typeVersion": 1
},
{
"id": "2cfb2c0d-980c-4654-9486-45bc765372c6",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
-320
],
"parameters": {
"height": 580,
"content": "### 6. If \n**Type:** Conditional Check (If) \n**Purpose:** \nChecks if the API response is valid and does not contain a 404 error. \n**Use Case:** \nHandle cases where transcripts are unavailable or the video URL is invalid."
},
"typeVersion": 1
},
{
"id": "167cf773-1543-4778-ba99-d4adc87f3ec3",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-100,
-320
],
"parameters": {
"height": 580,
"content": "### 7. Code \n**Type:** Code (JavaScript) \n**Purpose:** \nCleans the raw subtitles returned by the API by removing headers, timestamps, and empty lines for better readability. \n**Use Case:** \nPrepare the transcript text for clean storage and further processing."
},
"typeVersion": 1
},
{
"id": "ad776fb7-d066-4f10-917e-a1fbf476e961",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
-180
],
"parameters": {
"height": 480,
"content": "### 8. Google Sheets \n**Type:** Google Sheets (Append or Update) \n**Purpose:** \nWrites the cleaned transcript, video URL, and generation date back into the Google Sheet, updating existing rows. \n**Use Case:** \nMaintain an up-to-date record of transcripts next to each TikTok video URL."
},
"typeVersion": 1
},
{
"id": "45271bfa-118b-46c7-8e73-e077119ce31f",
"name": "付箋9",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
-380
],
"parameters": {
"height": 580,
"content": "### 9. Google Sheets1 \n**Type:** Google Sheets (Append or Update) \n**Purpose:** \nFor cases where the API returns an error (like 404), it updates the sheet with a \"No transcription available\" message for that video URL. \n**Use Case:** \nClearly indicate videos for which transcripts could not be generated."
},
"typeVersion": 1
},
{
"id": "4bb59f93-a06c-4252-bec4-2809fa4d6067",
"name": "付箋10",
"type": "n8n-nodes-base.stickyNote",
"position": [
840,
-220
],
"parameters": {
"height": 540,
"content": "### 10. Wait \n**Type:** Wait \n**Purpose:** \nPauses the workflow briefly between batches to prevent hitting API rate limits and ensure smooth execution. \n**Use Case:** \nThrottle the flow execution for stability and API compliance."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "957a8859-b78c-4fdc-b1c6-50de2acaa6a0",
"connections": {
"6bea9362-5502-4c3c-acac-3f1a16bb0c64": {
"main": [
[
{
"node": "4b18deea-cfc2-4a8d-b2f3-8b31cac0d573",
"type": "main",
"index": 0
}
],
[
{
"node": "ab5bcc9b-e2a0-4ec7-a4db-de512662549d",
"type": "main",
"index": 0
}
]
]
},
"becf9d6b-26a1-4498-9683-18ad15bc82ea": {
"main": [
[
{
"node": "a9ca3926-efbd-42fa-9388-b24625690145",
"type": "main",
"index": 0
}
],
[
{
"node": "7c8d30f1-df83-4ee1-83ce-32f6d9b0a810",
"type": "main",
"index": 0
}
]
]
},
"a9ca3926-efbd-42fa-9388-b24625690145": {
"main": [
[
{
"node": "baad7161-51f5-4f29-8af0-39244e10eb60",
"type": "main",
"index": 0
}
]
]
},
"d5d6e8a4-a2da-4cd5-80fc-3cf7c294697d": {
"main": [
[
{
"node": "ab5bcc9b-e2a0-4ec7-a4db-de512662549d",
"type": "main",
"index": 0
}
]
]
},
"4b18deea-cfc2-4a8d-b2f3-8b31cac0d573": {
"main": [
[
{
"node": "becf9d6b-26a1-4498-9683-18ad15bc82ea",
"type": "main",
"index": 0
}
]
]
},
"baad7161-51f5-4f29-8af0-39244e10eb60": {
"main": [
[
{
"node": "d5d6e8a4-a2da-4cd5-80fc-3cf7c294697d",
"type": "main",
"index": 0
}
]
]
},
"7c8d30f1-df83-4ee1-83ce-32f6d9b0a810": {
"main": [
[
{
"node": "d5d6e8a4-a2da-4cd5-80fc-3cf7c294697d",
"type": "main",
"index": 0
}
]
]
},
"c0de0228-f79b-4b18-9e5d-ee6218259078": {
"main": [
[
{
"node": "ab5bcc9b-e2a0-4ec7-a4db-de512662549d",
"type": "main",
"index": 0
}
]
]
},
"ab5bcc9b-e2a0-4ec7-a4db-de512662549d": {
"main": [
[],
[
{
"node": "6bea9362-5502-4c3c-acac-3f1a16bb0c64",
"type": "main",
"index": 0
}
]
]
},
"90a316f5-0f08-42f8-86a0-318bcc9814f9": {
"main": [
[
{
"node": "c0de0228-f79b-4b18-9e5d-ee6218259078",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
画像 Transform AI、Google Sheets、および Google Driveを使用して画像を生成し、アップロードする
画像変換GPT、Google Sheets、Driveを使用して画像の生成・アップロード
If
Code
Wait
+
If
Code
Wait
23 ノードEvoort Solutions
コンテンツ作成
記事構造の分析で主要出力を生成
RapidAPI AIを使ってGoogle スプレッドシートからリードマグネのクリエイティブを生成する
If
Wait
Http Request
+
If
Wait
Http Request
15 ノードEvoort Solutions
コンテンツ作成
Shopify で注文後に WhatsApp での感謝メッセージ+ロイヤリティクーポン自動送信(Rapiwa API を使用)
Rapiwa を使用してShopifyから自動のにWhatsAppで感謝メッセージとロイヤルティクーポンを送信
If
Code
Wait
+
If
Code
Wait
17 ノードSpaGreen Creative
コンテンツ作成
Apollo データスクレイピングとタッチアウトフロー 1 ✅
Apollo、AI による解析と計画されたメール.follow-up によるリード生成の自動化
If
Code
Wait
+
If
Code
Wait
39 ノードDeniz
コンテンツ作成
FalAI_SeeDanceV1.0_英語テンプレート
GPT-4o、Fal.AI Seedance、音声でテキストプロンプトから映画級ビデオを生成
If
Code
Wait
+
If
Code
Wait
38 ノードJaruphat J.
コンテンツ作成
Gemini_NanoBanana_テンプレート
Google SheetsからFal.aiのモデル(nano-banana、WAN2.2、Veo3)でUGC広告生成
If
Set
Code
+
If
Set
Code
36 ノードJaruphat J.
コンテンツ作成