購入者がTikTokで自社製品について話題にしているなら、ブランド名で検索することで、よくある質問の一覧を作るための材料を集められます。実用的な成果物は、動画の説明文、投稿者、リンク、取得できる反応数をまとめたCSVです。このファイルをサポート担当者に渡したり、トピック分類の入力データとして使ったりできます。

例として、「Acmeのコーヒーメーカーの使い方」という質問を取り上げます。以下のスクリプトはTikTok検索に1回リクエストを送り、文書で示されている2種類のレスポンス構造から動画を適切に取り出して、見つかった結果を保存します。その後、チームが説明文を手作業で確認し、似た表現をまとめて、FAQのトピックや商品ページのヒントにします。
検索結果を表にする理由
検索結果を手作業で確認していると、後から同じ結果を探し直す必要があり、メモもブラウザーややり取りの中に散らばりがちです。保存できる表があれば、各レコードに動画ID、リンク、説明文、投稿者、取得可能な指標をまとめた共通の作業リストになります。定期実行に組み込むこともでき、JSONアーカイブを使えば、特定の実行時にAPIが返した内容を確認できます。
この方法には重要な限界があります。検索で返されるのはクエリに対して見つかった結果であり、言及をすべて網羅した完全なカタログが保証されるわけではありません。そのため、この表は事例の発見や、繰り返し出てくる質問の把握に適しています。頻度について結論を出す場合は、複数回の実行と手動確認で裏付けてください。
検索で返される内容
TikTok Scraper APIのドキュメントによると、/searchVideoルートではkeywordパラメーターが必須です。対応パラメーターにはcount、cursor、date_posted、sort_by、regionも含まれます。この手順では検索キーワードと結果数だけで十分です。
レスポンスには外部ステータスとtiktokオブジェクトが含まれます。確認済みのスキーマでは、動画はaweme_listに含まれる場合と、search_item_list内の要素のaweme_infoに含まれる場合があります。コードは両方の形式に対応し、実際に存在するフィールドだけを取り出します。結果に応じて、動画ID、説明文、リンク、投稿者名とID、投稿日、再生数、いいね数、コメント数、シェア数を取得できます。
Pythonで作る最小限の収集スクリプト
requestsライブラリをインストールし、環境変数JSONSCRAPER_TIKTOK_LICENSE_KEYにキーを設定します。コードはPython 3.8以降に対応しています。元のレスポンスをJSONとして、正規化した行をCSVとして保存します。シークレットはリクエストに渡されますが、画面には出力されません。
import csv
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme コーヒーメーカー"
response = requests.get(
"https://tiktok.evelode.com/searchVideo",
params={
"license_key": API_KEY,
"keyword": KEYWORD,
"count": 30,
"region": "US",
},
timeout=60,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok APIの外部ステータスが想定外です")
tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for result in tiktok.get("search_item_list") or []:
video = result.get("aweme_info")
if video:
items.append(video)
# 初回の出現順を保ちながら重複を除去します。
unique = {}
for item in items:
video_id = item.get("aweme_id")
if video_id:
unique.setdefault(video_id, item)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("data").mkdir(exist_ok=True)
Path(f"data/raw-{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8"
)
columns = [
"video_id", "description", "share_url", "author", "author_id",
"created_at", "views", "likes", "comments", "collected_at"
]
with open("data/videos.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=columns)
writer.writeheader()
for item in unique.values():
author = item.get("author") or {}
stats = item.get("statistics") or {}
created = item.get("create_time")
writer.writerow({
"video_id": item.get("aweme_id"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"author_id": author.get("uid"),
"created_at": created,
"views": stats.get("play_count"),
"likes": stats.get("digg_count"),
"comments": stats.get("comment_count"),
"collected_at": stamp,
})
print(f"保存した行数: {len(unique)}")
依存ライブラリはpython -m pip install requestsでインストールできます。特定のレコードにフィールドがない場合、該当するセルは空欄になります。指標ではこれは重要です。空欄はフィールドが返されなかったことを表し、ゼロに置き換えられることはありません。
CSVを役立つ質問リストに変える方法
最初の段階では、説明文の内容で絞り込みます。「方法」「なぜ」「動かない」といった語や、モデル名、部品の特徴的な名称を検索できます。このフィルターは編集担当者が確認するための候補を作りますが、投稿者の意図をそれだけで判断できるわけではありません。ブランドへの言及は、レビューや冗談、互換性についての質問かもしれません。
トピック分類を行う場合は、説明文と、タスク上必要であれば匿名化したレコードIDだけを分類器に渡します。「初回起動」「お手入れ」「互換性」「故障」「購入」など、固定カテゴリを返すよう指示してください。担当者が分類を確認して誤りを修正できるよう、元の説明文もカテゴリと並べて保存します。
実務レポートには、トピック、見つかった事例数、例として示す動画へのリンク数件、「人による確認済み」の列を含められます。収集したデータセット内の事例数は、そのクエリと収集期間における検索結果を示すもので、問題を抱える購入者全体の割合ではありません。
ページネーションと定期実行
次の検索結果ページが必要な場合、ドキュメントではスクロール用パラメーターとしてcursorが示されています。前のレスポンスのカーソル値を、次のリクエストに渡してください。カーソルは内容を解釈しないトークンとして扱い、結果がなくなるか、APIが次ページなしと通知したら取得を終了します。範囲を限定した試行では、まず1回の検索から始め、結果の内容を確認してからページネーションを追加するのが妥当です。
定期的に収集するには、OSのスケジューラーやCIを使ってスクリプトを実行します。実行ごとに別の元データJSONを保存し、表に収集時刻を追加します。履歴を蓄積する場合は動画IDでレコードを重複排除します。ただし、指標の変化を追跡するタスクでは、繰り返し取得したスナップショットを別々に保存してください。同じレコードのスナップショットが複数なければ、指標を比較する意味はありません。
キーはCIのシークレット管理機能または環境変数に保存し、アーカイブへのアクセスを制限して、社内の保存期間を設定してください。分類システムにデータを渡す前に、実際に必要なフィールドを確認します。これにより、ユーザーデータの不要な複製を減らし、アクセス制御も簡素化できます。
チームが得られる成果
実行後は、元のレスポンスのアーカイブと、見つかった動画および取得可能なフィールドを含むCSVが得られます。サポートチームはリンクを確認し、繰り返し出てくる質問をまとめられます。マーケティングチームは、利用者が課題をどのように表現しているかを把握できます。アナリストは収集を再実行し、異なる日付の結果を比較できます。

まずは製品名と具体的な問題を含む範囲の狭いクエリを設定し、見つかった20~30件を手作業で確認して、カテゴリの語彙を調整します。その後、テーマ別のクエリやスケジュール、表またはデータベースへの出力を追加できます。ルートの機能とパラメーターはTikTok Scraper APIの説明に記載されています。より広範なモニタリングを構築する前に、選んだクエリの結果を確認してください。