Um öffentliche TikTok-Videos mit Markenerwähnungen und eindeutigen Werbeformulierungen zu erfassen, sammeln Sie Ergebnisse zu mehreren Suchanfragen, extrahieren Sie die Bildunterschriften und markieren Sie entsprechende Begriffe. Das Ergebnis ist eine CSV-Datei mit Links und verfügbaren Kennzahlen – eine Warteschlange für die menschliche Prüfung, kein automatisches Urteil über die Einhaltung von Regeln.
Ein solcher Prozess eignet sich für Agenturen, die eine Kampagne mit einem Briefing abgleichen, oder für interne Teams, die eine Liste öffentlicher Erwähnungen führen. Er hilft dabei, Suchergebnisse zu systematisieren, und hält Merkmale fest, anhand derer Analystinnen und Analysten entscheiden können, welches Video sie öffnen und prüfen.
Wonach genau sollten Sie in Videos suchen?
Bei der Prüfung von Werbung sind die Verbindung der Person zur Marke und die Art ihrer Offenlegung neben einer Empfehlung wichtig. Der FTC-Leitfaden für Influencer erklärt, dass eine wesentliche Verbindung finanzieller, beruflicher, persönlicher oder familiärer Art sein kann und dass eine Offenlegung deutlich und verständlich sein sollte. Bei einer Videoempfehlung weist die FTC darauf hin, dass die Offenlegung im Video selbst und nicht nur in der Beschreibung erscheinen sollte. Eine Bildunterschrift ist daher für die Sortierung nützlich, zeigt aber für sich genommen nicht, was die Zuschauenden im Bild gesehen oder im Ton gehört haben.
Das Ziel dieses Skripts ist enger gefasst: In den zurückgegebenen Suchergebnissen Videos zu finden, deren Bildunterschriften Markenbegriffe und mögliche Kennzeichnungen wie „Werbung“, „Sponsor“ oder „Partnerschaft“ enthalten. Passen Sie das Wörterbuch an die Sprache und die Terminologie der Kampagne an. Wird eine Kennzeichnung in der Bildunterschrift nicht gefunden, öffnen Sie das Video und prüfen Sie den Inhalt: Eine Textübereinstimmung belegt nicht, ob im Video selbst eine Offenlegung enthalten ist.
Wie wird aus den Suchergebnissen eine Prüfliste?
Erstellen Sie eine kurze Liste von Suchanfragen: Markenname, Kampagne und gebräuchliche Schreibweise des Produkts. Führen Sie die Suchanfragen einzeln aus und speichern Sie die jeweilige Formulierung zusammen mit den Ergebnissen. So kann das Team sehen, mit welcher Suchanfrage ein Video gefunden wurde, und die Erfassung bei Bedarf wiederholen.


Für die Erfassung eignet sich die TikTok Scraper API von jsonscraper. Die dokumentierte GET-Route /searchVideo befindet sich unter https://tiktok.evelode.com und akzeptiert die Parameter keyword, count, date_posted, sort_by, region und cursor. In der beobachteten Antwort enthielten die TikTok-Daten Videos unter search_item_list[].aweme_info; aweme_list konnte leer sein. Der folgende Parser prüft beide Speicherorte.
Der Schlüssel wird im Parameter license_key übergeben. Speichern Sie ihn in einer Umgebungsvariable, nicht im Skript oder Repository. Die Dokumentation der TikTok-Routen enthält die Namen der Suchparameter; für die nächste Seite verwenden Sie den zurückgegebenen cursor. Notieren Sie die Zahl der verarbeiteten Objekte und die Suchanfrage selbst: Die Paginierung ermöglicht das Fortsetzen der Ergebnisse, stellt aber für sich genommen nicht deren Vollständigkeit sicher.
Ein minimales Python-Beispiel
Das Skript stellt für jede Formulierung eine Anfrage, sammelt beide dokumentierten Ergebnisformen, entfernt Duplikate anhand der Video-ID, markiert Wörter in der Beschreibung und schreibt eine CSV-Datei. Installieren Sie requests mit dem Befehl python -m pip install requests, setzen Sie JSONSCRAPER_TIKTOK_LICENSE_KEY in der Umgebung und führen Sie die Datei aus. Das Beispiel ist mit Python 3.8 und neuer kompatibel.
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")
Prüfen Sie vor dem Speichern des Codes den Status der externen Antwort und anschließend die Daten unter tiktok. Der Normalisierer liest beide Speicherorte für Videos aus. Für die nächste Seite können Sie den erhaltenen cursor unverändert an die nächste Anfrage übergeben; dieses Minimalbeispiel ist bewusst auf eine Seite pro Suchanfrage beschränkt.
Was enthält die CSV-Datei?
Jede Zeile verbindet die Video-ID und den Link mit der verfügbaren Autorenkennung, der Bildunterschrift, den Suchbegriffen und den gefundenen Kennzeichnungen. Sind in der Antwort Aufrufe, Likes und Kommentare als Kennzahlen enthalten, werden sie als Kontext für die Reihenfolge der Prüfung gespeichert. Diese Felder können fehlen; das Skript lässt sie leer, statt Nullen einzutragen.
Öffnen Sie anschließend das Video, prüfen Sie, ob eine Offenlegung im Video selbst vorhanden und gut erkennbar ist, und halten Sie das Ergebnis anhand vereinbarter Kategorien fest, zum Beispiel „gefunden“, „weitere Prüfung erforderlich“ oder „bei der Sichtung nicht festgestellt“. Der Code selbst sucht nach exakten Textmarkierungen in der Bildunterschrift; er analysiert weder Bild noch Ton und entscheidet nicht über die Regelkonformität.
Führen Sie die Erfassung für einen regelmäßigen Prozess nach Zeitplan aus, protokollieren Sie den Anfragezeitpunkt und speichern Sie das ursprüngliche JSON zusammen mit der CSV-Datei. Beschränken Sie die Suchanfragen auf die erforderlichen Formulierungen und legen Sie eine Aufbewahrungsfrist für die erfassten Daten fest. Die Richtlinie von jsonscraper zur verantwortungsvollen Datenerfassung empfiehlt eine angemessene Anfragerate, Datenminimierung und die Überprüfung von KI-Ergebnissen vor weiteren Maßnahmen.
Das Ergebnis ist eine reproduzierbare Warteschlange öffentlicher Videos zur manuellen Prüfung von Werbekennzeichnungen: Suchtreffer und verfügbare Kennzahlen helfen dabei, festzulegen, was zuerst geöffnet wird; die Bewertung des Videos selbst bleibt der prüfenden Person überlassen. Die Parameternamen lassen sich in der Dokumentation der TikTok API und Produktinformationen auf der Seite zur TikTok Scraper API nachsehen.