Chcete-li vybrat veřejná videa na TikToku, která zmiňují značku a obsahují zjevné reklamní formulace, shromážděte výsledky z několika vyhledávacích dotazů, získejte popisky a označte klíčová slova. Výsledkem je CSV s odkazy a dostupnými metrikami, tedy fronta pro lidskou kontrolu, nikoli automatický závěr o souladu s pravidly.
Takový postup se hodí agentuře, která porovnává kampaň se zadáním, nebo internímu týmu, jenž spravuje seznam veřejných zmínek. Pomůže uspořádat výsledky vyhledávání a uchovat indicie, na jejichž základě analytik rozhodne, které video otevřít a prozkoumat.
Co přesně ve videích hledat?
Při kontrole reklamy je důležitá souvislost autora se značkou a způsob, jakým je tato souvislost uvedena u doporučení. Pokyny FTC pro influencery vysvětlují, že podstatná souvislost může být finanční, pracovní, osobní nebo rodinná a její zveřejnění musí být dobře viditelné a srozumitelné. U doporučení ve videu FTC uvádí, že označení má být přímo ve videu, nikoli pouze v popisku. Popisek se proto hodí k třídění, ale sám o sobě neukazuje, co divák viděl na obrazovce nebo slyšel ve zvuku.
Úkol tohoto skriptu je užší: ve vrácených výsledcích vyhledávání najít videa, jejichž popisky obsahují fráze týkající se značky a možné označující výrazy, jako jsou „reklama“, „sponzor“ nebo „partnerství“. Slovník přizpůsobte jazyku a terminologii kampaně. Pokud se označující výraz v popisku nenajde, otevřete video a zkontrolujte jeho obsah: textová shoda nepotvrzuje, zda je označení přímo ve videu.
Jak změnit výsledky vyhledávání na frontu ke kontrole?
Sestavte krátký seznam dotazů: název značky, kampaně a běžný způsob zápisu názvu produktu. Dotazy spouštějte jednotlivě a ukládejte jejich znění spolu s výsledky. Tým tak uvidí, který dotaz video našel, a v případě potřeby může sběr zopakovat.


Ke sběru lze použít TikTok Scraper API jsonscraper. Dokumentovaná GET trasa /searchVideo je dostupná na adrese https://tiktok.evelode.com a přijímá parametry keyword, count, date_posted, sort_by, region a cursor. V pozorované odpovědi TikTok obsahovala videa položka search_item_list[].aweme_info; položka aweme_list mohla být prázdná. Níže uvedený parser kontroluje obě umístění.
Klíč se předává v parametru license_key. Uložte jej do proměnné prostředí, nikoli do skriptu nebo repozitáře. Dokumentace tras TikToku uvádí názvy parametrů vyhledávání; pro další stránku použijte vrácený cursor. Zaznamenávejte počet zpracovaných položek i samotný vyhledávací dotaz: stránkování umožňuje pokračovat ve výpisu, ale samo o sobě nezaručuje úplnost výsledné sady.
Jednoduchý příklad v Pythonu
Skript odešle jeden požadavek pro každou frázi, shromáždí obě dokumentované podoby výsledku, odstraní duplicity podle ID videa, označí slova v popisku a zapíše CSV. Nainstalujte requests příkazem python -m pip install requests, nastavte v prostředí JSONSCRAPER_TIKTOK_LICENSE_KEY a spusťte soubor. Příklad je kompatibilní s Pythonem 3.8 a novějším.
import csv
import os
import sys
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not KEY:
raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")
QUERIES = ["Example Brand", "Example Product", "Example Campaign"]
MARKERS = ("#реклама", "реклама", "спонсор", "партнерство", "партнёрство", "#ad", "sponsored")
def videos_from(payload):
data = payload.get("tiktok") or {}
videos = data.get("aweme_list") or []
if not videos:
videos = [
item.get("aweme_info")
for item in (data.get("search_item_list") or [])
if isinstance(item, dict) and isinstance(item.get("aweme_info"), dict)
]
return [video for video in videos if isinstance(video, dict)]
rows = {}
for query in QUERIES:
response = requests.get(
BASE_URL,
params={"keyword": query, "count": 20, "date_posted": "this-month", "license_key": KEY},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
print("Unexpected API status for query:", query, file=sys.stderr)
continue
for video in videos_from(payload):
video_id = video.get("aweme_id")
if not video_id:
continue
author = video.get("author") or {}
stats = video.get("statistics") or {}
caption = video.get("desc") or ""
matched = [word for word in MARKERS if word in caption.casefold()]
row = rows.setdefault(str(video_id), {
"video_id": str(video_id),
"url": video.get("share_url") or "",
"author": author.get("unique_id") or author.get("nickname") or "",
"caption": caption,
"queries": set(),
"disclosure_markers": set(),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"review_status": "manual_review",
})
row["queries"].add(query)
row["disclosure_markers"].update(matched)
with open("tiktok_disclosure_review.csv", "w", newline="", encoding="utf-8-sig") as file:
fields = ["video_id", "url", "author", "caption", "queries", "disclosure_markers",
"play_count", "digg_count", "comment_count", "review_status"]
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
for row in rows.values():
row["queries"] = " | ".join(sorted(row["queries"]))
row["disclosure_markers"] = " | ".join(sorted(row["disclosure_markers"]))
writer.writerow(row)
print("Saved", len(rows), "unique returned videos")
Před uložením kódu zkontrolujte stav odpovědi externí služby a poté data v tiktok. Normalizátor načítá videa z obou umístění. Pro další stránku lze předat získaný cursor v následujícím požadavku beze změny; tento jednoduchý příklad záměrně zpracovává pouze jednu stránku na dotaz.
Co CSV obsahuje?
Každý řádek propojuje ID a odkaz na video, dostupný identifikátor autora, popisek, vyhledávací fráze a nalezená označující slova. Pokud odpověď obsahuje údaje o zhlédnutích, lajcích a komentářích, uloží se pro kontext při stanovení pořadí kontroly. Tyto údaje mohou chybět; skript v takovém případě ponechá pole prázdná, místo aby doplnil nuly.
Poté video otevřete, ověřte přítomnost a viditelnost označení přímo ve videu a výsledek zaznamenejte podle dohodnutých kategorií, například „nalezeno“, „vyžaduje další kontrolu“ nebo „při zhlédnutí nezjištěno“. Samotný kód hledá přesné textové výrazy v popisku; neanalyzuje obraz ani zvuk a nerozhoduje o souladu s pravidly.
Při pravidelném používání spouštějte sběr podle plánu, zaznamenávejte čas požadavku a ukládejte původní JSON spolu s CSV. Omezte seznam dotazů na potřebné fráze a stanovte dobu uchování shromážděných údajů. Zásady odpovědného sběru dat jsonscraper doporučují přiměřenou četnost požadavků, minimalizaci dat a kontrolu výstupů AI před následnými kroky.
Výsledkem je opakovatelná fronta veřejných videí k ruční kontrole označení reklamy: shody ve vyhledávání a dostupné metriky pomáhají určit, co otevřít jako první, zatímco posouzení samotného videa zůstává na kontrolujícím. Názvy parametrů lze ověřit v dokumentaci TikTok API a informace o produktu na stránce TikTok Scraper API.