Pokud zákazníci pokládají stejnou otázku v několika videích na TikToku, je pro tým podpory užitečné získat seznam původních videí a formulací, které lze ověřit. Začít lze shromážděním výsledků vyhledávání podle několika dotazů, jejich sloučením podle ID videa a předáním vzorku k ručnímu označení.
Níže uvedený skript v Pythonu shromažďuje vrácené výsledky a vytváří soubor CSV s odkazy, popisy videí a vyhledávacími frázemi, podle nichž bylo každé video nalezeno. Pomáhá odhalit překryvy mezi vyhledáváními; sám o sobě neurčuje sémanticky podobné otázky. O tom rozhoduje specialista nebo samostatný klasifikátor s následnou kontrolou.
Jakou otázku má sběr zodpovědět
Představme si, že tým prodává termohrnek a chce zjistit, na co se lidé ptají ve veřejných videích. Dotaz „termohrnek protéká“ může vrátit videa se stížnostmi, recenzemi i návody. Dotaz „jak umýt termohrnek“ přinese jiný vzorek. Několik výrazů vytvoří pracovní soubor příkladů pro kontrolu podpory a plánu obsahu.

Výsledkem skriptu je tabulka, v níž má každý záznam ID příspěvku, popis, odkaz a seznam vyhledávacích frází, podle kterých se objevil. Výskyt videa ve více výsledcích vyhledávání ukazuje jejich překryv, ale ještě nedokazuje, že video obsahuje opakující se otázku. Chcete-li sestavit frontu otázek, otevřete odkazy, ověřte kontext a přiřaďte potvrzeným formulacím téma.
Tento postup se hodí vývojáři, který automatizuje sběr, i analytikovi, jenž potřebuje reprodukovatelný soubor pro rozbor. Propojení s původním videem umožňuje ověřit závěr dříve, než se změní návod nebo připraví nový materiál.
Jaká data vyhledávání vrací
Cesta /searchVideo a její parametry jsou uvedeny v referenční příručce TikTok API. Povinný je parametr keyword; mezi dalšími parametry jsou uvedeny count, cursor, region, date_posted, sort_by a cache_timeout. Požadavek se autentizuje pomocí parametru license_key. Níže uvedený příklad používá frázi a velikost stránky.
Ověřená podoba odpovědi obsahuje kořenové pole status a objekt tiktok. Položky mohou obsahovat ID, popis, odkaz, informace o autorovi a statistiky, včetně počtu zhlédnutí a komentářů. Některá pole mohou chybět: v CSV proto zůstávají prázdná, místo aby se měnila na nulu.
Vyhledávací odpověď podporuje dvě struktury: položky mohou být v aweme_list nebo uvnitř search_item_list[].aweme_info. Normalizátor zpracovává obě varianty. Kód také kontroluje, zda je přítomen objekt tiktok, aby neočekávanou podobu odpovědi nepovažoval za úspěšné prázdné výsledky.
Hotový sběrač v Pythonu
Příklad je kompatibilní s Pythonem 3.8+ a knihovnou requests. Pro každou frázi odešle jeden požadavek, ověří HTTP odpověď i stav API, sloučí záznamy podle ID, uloží odpovídající vyhledávací fráze a zapíše CSV. Klíč čte z proměnné prostředí a nevypisuje ho.

import csv
import os
import sys
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
QUERIES = [
"termohrnek protéká",
"jak umýt termohrnek",
"termohrnek neudrží teplo",
]
if not KEY:
sys.exit("Nastavte JSONSCRAPER_TIKTOK_LICENSE_KEY")
def extract_items(payload):
data = payload.get("tiktok")
if not isinstance(data, dict):
raise RuntimeError("V odpovědi chybí objekt 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 vrátilo jiný stav než 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)
Závislost nainstalujte příkazem python -m pip install requests, nastavte proměnnou JSONSCRAPER_TIKTOK_LICENSE_KEY v prostředí procesu a spusťte soubor. Nevkládejte klíč do zdrojového kódu, CSV ani protokolů. Při plánovaném spouštění používejte zabezpečené prostředí, v němž má úloha k proměnné přístup.
Jak z CSV vytvořit frontu otázek
Po sběru otevřete videa, ručně vyberte skutečné otázky a potvrzené formulace pak seskupte podle témat, například „těsnění“, „péče“ nebo „udržení tepla“. Vyhledávací fráze pomáhá příspěvek najít, ale popis videa ani shoda dotazů nenahrazují kontrolu kontextu.
Pokud používáte jazykový model, předejte mu popis a požádejte o návrh stručného tematického štítku a možné otázky. Vedle výsledku modelu uchovávejte původní text a odkaz, aby mohl specialista ověřit podklady klasifikace. Neprezentujte formulaci navrženou modelem jako doslovnou otázku, pokud se v popisu nevyskytuje.
Počet nalezených záznamů popisuje pouze výsledky vrácené pro konkrétní dotazy. Neměří celkový objem diskusí ani poptávku. Pro interní přehled uchovávejte datum spuštění, původní frázi, ID a nezpracovanou odpověď API. Díky tomu lze porovnávat výsledky opakovaných spuštění a samostatně označovat nová ID.
Příklad záměrně neobsahuje automatickou stránkovou navigaci. Pro další stránky dokumentace uvádí parametr cursor; jeho hodnotu převezměte z předchozí odpovědi a předejte dál beze změny. Jedna stránka představuje pouze získanou část výsledků, nikoli celé vyhledávání.
Co tým uvidí
Soubor tiktok_questions.csv obsahuje jeden řádek pro každé jedinečné ID nalezené podle zadaných frází. Sloupec matched_queries ukazuje, ve kterých dotazech se dané video objevilo. Je to praktický způsob, jak vyhledat překryvy mezi výsledky a vybrat příklady ke kontrole; klasifikaci otázek je nutné provést zvlášť.
CSV pak lze zapojit do týdenní automatizace: plánovač spustí sběr, úložiště uchová snímek a při výskytu ID, které ještě není v záznamu, se odešle oznámení. Jde o logiku externí orchestrace, nikoli o funkci vyhledávacího endpointu. Tým získá frontu odkazů k analýze, ne hotový závěr o příčinách chování zákazníků.
Parametry cest jsou dostupné v dokumentaci API; požadavek si můžete vyzkoušet na testovacím prostředí TikTok API. Před pravidelným sběrem ověřte podobu skutečné odpovědi a ukládejte hodnoty potřebné k přechodu od souhrnu ke konkrétnímu videu. Popis produktu najdete na stránce TikTok Scraper API.
Užitečným výsledkem je ověřitelný soubor videí propojených s konkrétními vyhledávacími výrazy. Pomáhá vybrat materiál k ručnímu rozboru a uchovat zdroje pro každé téma zařazené do plánu obsahu.