購入者が複数のTikTok動画で同じ質問をしている場合、サポートチームが元の動画と表現の一覧を取得し、内容を確認できると便利です。複数の検索語で検索結果を収集し、動画IDで統合したうえで、サンプルを手作業で分類するところから始められます。
以下は、取得した検索結果を集め、動画へのリンク、説明文、各動画が見つかった検索フレーズを含むCSVを作成するPythonスクリプトです。検索結果どうしの重なりを把握するのに役立ちますが、それだけで意味的に似た質問を特定するものではありません。分類は担当者が行うか、別の分類器を使って、その後に人が確認します。
収集で解決したい課題
たとえば、チームが保温マグを販売しており、公開動画で何が話題になっているかを知りたいとします。「保温マグ 漏れる」という検索語では、苦情、レビュー、使い方の動画が見つかるかもしれません。「保温マグ 洗い方」では、別のサンプルが得られます。複数のフレーズを使うことで、サポート内容やコンテンツ計画を検討するための実例を集められます。

スクリプトの出力は、投稿ID、説明文、リンク、該当した検索フレーズの一覧を含む表です。同じ動画が複数の検索結果に現れても、それだけで動画内に繰り返しの質問があるとは言えません。質問の一覧を作るには、リンクを開いて文脈を確認し、実際に確認できた表現にテーマを割り当てます。
この方法は、収集を自動化する開発者にも、再現可能な分析用サンプルを必要とするアナリストにも役立ちます。元の動画をたどれるため、説明書を変更したり、新しいコンテンツを作成したりする前に結論を確認できます。
検索で取得できるデータ
ルート/searchVideoとそのパラメーターは、TikTok APIリファレンスに記載されています。必須パラメーターはkeywordです。追加パラメーターにはcount、cursor、region、date_posted、sort_by、cache_timeoutがあります。リクエストの認証にはlicense_keyパラメーターを使います。以下の例では、検索フレーズとページサイズを指定します。
確認したレスポンス形式には、トップレベルのstatusとtiktokオブジェクトがあります。各項目には、ID、説明文、リンク、投稿者情報、再生数やコメント数などの統計情報が含まれることがあります。個別のフィールドが存在しない場合もあるため、CSVではゼロにせず空欄のままにします。
検索レスポンスには、aweme_listに項目が格納される形式と、search_item_list[].aweme_infoに格納される形式の2種類があります。正規化処理はどちらにも対応しています。また、tiktokオブジェクトの有無も確認し、想定外のレスポンス形式を検索結果が空だっただけだと誤認しないようにします。
そのまま使えるPython収集スクリプト
この例はPython 3.8以降とrequestsライブラリに対応しています。検索フレーズごとに1回リクエストを送り、HTTPレスポンスとAPIのステータスを確認し、IDで項目を統合し、一致した検索フレーズを保存してCSVに書き出します。キーは環境変数から読み込み、表示しません。

import csv
import os
import sys
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
QUERIES = [
"保温マグ 漏れる",
"保温マグ 洗い方",
"保温マグ 保温できない",
]
if not KEY:
sys.exit("JSONSCRAPER_TIKTOK_LICENSE_KEYを設定してください")
def extract_items(payload):
data = payload.get("tiktok")
if not isinstance(data, dict):
raise RuntimeError("レスポンスにtiktokオブジェクトがありません")
items = list(data.get("aweme_list") or [])
for entry in data.get("search_item_list") or []:
video = entry.get("aweme_info") if isinstance(entry, dict) else None
if isinstance(video, dict):
items.append(video)
return items
rows = {}
for query in QUERIES:
response = requests.get(
BASE_URL,
params={"license_key": KEY, "keyword": query, "count": 20},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("APIがok以外のステータスを返しました")
for item in extract_items(payload):
video_id = item.get("aweme_id")
if not video_id:
continue
stats = item.get("statistics") or {}
author = item.get("author") or {}
row = rows.setdefault(video_id, {
"video_id": video_id,
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"play_count": stats.get("play_count"),
"comment_count": stats.get("comment_count"),
"matched_queries": set(),
})
row["matched_queries"].add(query)
fields = ["video_id", "description", "share_url", "author",
"play_count", "comment_count", "matched_queries"]
with open("tiktok_questions.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
for row in rows.values():
output = dict(row)
output["matched_queries"] = " | ".join(sorted(row["matched_queries"]))
writer.writerow(output)
python -m pip install requestsを実行して依存関係をインストールし、プロセスの環境変数にJSONSCRAPER_TIKTOK_LICENSE_KEYを設定してから、ファイルを実行してください。キーをソースコード、CSV、ログに書き込まないでください。定期実行する場合は、変数を利用できる安全な環境でスクリプトを実行します。
CSVを質問の確認リストに変える
収集後に動画を開き、実際の質問を手作業で特定してから、確認済みの表現を「密閉性」「お手入れ」「保温」などのテーマに分類します。検索フレーズは投稿を見つける手がかりになりますが、動画の説明文や検索フレーズとの一致だけでは、文脈の確認に代わりません。
言語モデルを使う場合は、説明文を渡して、短いテーマラベルと質問の候補を提案するよう依頼できます。担当者が分類の根拠を確認できるよう、元のテキスト、リンク、モデルの出力を並べて保存してください。説明文に存在しない場合は、モデルが提案した表現を動画内の質問そのものとして扱わないでください。
取得件数が示すのは、指定した検索語に対して返された結果だけです。話題全体の量や需要を測るものではありません。社内レポート用には、実行日、元の検索フレーズ、ID、未加工のAPIレスポンスを保存してください。こうすれば、再実行時の結果を比較し、新しいIDを個別に記録できます。
この例には自動ページネーションを意図的に含めていません。次のページにはcursorパラメーターを使うとドキュメントに記載されています。その値は前のレスポンスから取得し、変換せずに次のリクエストへ渡します。1ページで得られるのは取得できた結果の一部であり、検索結果全体ではありません。
チームが確認できる内容
tiktok_questions.csvには、指定した検索フレーズで見つかった一意のIDごとに1行が記録されます。matched_queries列を見ると、その動画がどの検索語で見つかったかがわかります。検索結果の重なりを見つけ、確認する事例を選ぶのに便利ですが、質問の分類は別途行う必要があります。
その後、CSVを週次の自動処理に組み込めます。スケジューラーが収集を実行し、ストレージにスナップショットを保存し、まだ記録されていないIDが追加されたときに通知を送る仕組みです。これは外部のオーケストレーションであり、検索エンドポイントの機能ではありません。チームが受け取るのは分析用のリンク一覧であり、購入者の行動理由についての結論ではありません。
ルートのパラメーターはAPIドキュメントで確認でき、リクエストはTikTok APIデモ環境で試せます。定期的に収集する前に、実際のレスポンス形式を確認し、要約から個々の動画へたどるために必要な値を保存してください。製品の説明はTikTok Scraper APIのページにあります。
有用な成果物は、具体的な検索語と結び付いた、確認可能な動画のサンプルです。手作業で分析する素材を選び、コンテンツ計画に採用した各テーマの出典を保存するのに役立ちます。