Wenn ein Team prüfen möchte, wie Creator in öffentlichen TikTok-Videos ihre Verbindung zu einer Marke offenlegen, ist ein nützliches erstes Ergebnis kein automatisches Urteil, sondern eine kompakte Warteschlange mit Beschreibung, Link und gefundenen Schlüsselwörtern. Im Folgenden zeigen wir einen praktikablen Ablauf: eine Suchanfrage über die TikTok Scraper API von jsonscraper senden, die beiden möglichen Antwortstrukturen vereinheitlichen und eine CSV-Datei für die fachliche Prüfung speichern.
Die Aufgabe: Videos finden, die geprüft werden sollten
Die manuelle Suche nach einem Unternehmensnamen lässt sich nur schwer einheitlich wiederholen: Die Ergebnisse müssen einzeln gesammelt werden, und die Auswahlgründe bleiben im Browser. Mit einer automatisierten Stichprobe lassen sich die Suchanfrage, das Ausführungsdatum und die gefundenen Inhalte in einer Tabelle festhalten, sodass das Team die Videos anhand einer einheitlichen Liste prüfen kann.

In diesem Szenario bezeichnet „Prüfkandidat“ lediglich ein Video aus den zurückgegebenen Suchergebnissen, dessen Beschreibung ein zuvor festgelegtes Wort oder eine entsprechende Formulierung enthält. Das könnten beispielsweise „Werbung“, „Partnerschaft“ oder „gesponsert“ sein. Ein solcher Textfilter hilft dabei, die Aufmerksamkeit eines Menschen gezielt zu lenken, bewertet aber weder das Video selbst noch stellt er fest, ob die geltenden Anforderungen erfüllt sind.
Diese Unterscheidung ist für Marketingteams wichtig. Die Empfehlungen der US-amerikanischen Federal Trade Commission beschreiben die Offenlegung einer wesentlichen Verbindung zu einer Marke als kontextabhängige Verpflichtung; bei Videos empfiehlt die FTC, sowohl die sichtbare als auch die hörbare Form der Offenlegung zu berücksichtigen. Eine Suche in der Beschreibung kann einzelne textliche Hinweise erkennen, doch für eine Entscheidung müssen der Beitrag angesehen und sein Kontext bewertet werden. Der FTC-Leitfaden für Creator erläutert diese Bedingungen anhand von Beispielen.
Ergebnis: eine CSV mit Auswahlgründen
Die Pipeline schreibt eine Zeile pro eindeutiger Video-ID und enthält Beschreibungstext, Link, Autorennamen, verfügbare öffentliche Kennzahlen und die passenden Hinweise. Außerdem fügen wir die ursprüngliche Suchanfrage und den Erfassungszeitpunkt hinzu. So eignet sich die Tabelle für die Weitergabe an eine Prüfwarteschlange und hilft später nachzuvollziehen, warum ein bestimmtes Video aufgenommen wurde.
Das Wörterbuch der Hinweise wird von der Redaktion oder einer Compliance-Fachperson festgelegt. Beginnen Sie mit der Sprache und den Begriffen, die in Ihrer Kampagne tatsächlich verwendet werden, prüfen Sie anschließend die Treffer und erweitern Sie die Liste bei Bedarf. Die Werte im folgenden Code sind bewusst einfach gehalten und sollten an die jeweilige Marke, den Markt und die Inhaltssprache angepasst werden.
Verbindung mit der TikTok Scraper API
Die jsonscraper-Dokumentation nennt für die Videosuche die Route GET /searchVideo unter der Basisadresse https://tiktok.evelode.com. Der Pflichtparameter lautet keyword; zu den optionalen Parametern gehören count, date_posted, sort_by und region. Der Schlüssel wird als license_key übergeben. Bewahren Sie ihn daher in einer Umgebungsvariable auf und nicht im Code oder in der CSV-Datei. Die genauen Parameternamen und die Route finden Sie im TikTok-Endpunktverzeichnis; Produkt- und Zugriffsinformationen stehen auf der Produktseite der TikTok Scraper API.
Eine Besonderheit der Antwort ist für die Vollständigkeit des lokalen Parsers wichtig: Die Daten können sich entweder in tiktok.aweme_list oder in tiktok.search_item_list[].aweme_info befinden. Deshalb prüft das Skript beide Arrays. Gibt die Suche eine leere Liste zurück, erstellt es eine leere CSV-Datei, statt Ergebnisse durch erfundene Zeilen vorzutäuschen.
Python-Beispiel: Suche, Filter und CSV
Das Beispiel verwendet ausschließlich die Python-3.8+-Standardbibliothek. Legen Sie vor dem Start JSONSCRAPER_TIKTOK_LICENSE_KEY in der Umgebung fest. Die Anfrage verwendet keyword, und der Schlüssel wird wie in der Spezifikation angegeben als Query-Parameter license_key übergeben.

import csv
import json
import os
import sys
from datetime import datetime, timezone
from urllib.parse import urlencode
from urllib.request import Request, urlopen
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme"
MARKERS = ["реклама", "партнерство", "партнёрство", "спонсор", "ad", "sponsored"]
params = {
"license_key": API_KEY,
"keyword": KEYWORD,
"count": 30,
"sort_by": "date-posted",
"date_posted": "this-month",
"region": "US",
}
url = "https://tiktok.evelode.com/searchVideo?" + urlencode(params)
request = Request(url, headers={"Accept": "application/json"})
with urlopen(request, timeout=30) as response:
payload = json.load(response)
if payload.get("status") != "ok":
raise RuntimeError("API returned a non-ok outer status")
tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for entry in tiktok.get("search_item_list") or []:
info = entry.get("aweme_info") or {}
if info:
items.append(info)
seen = set()
rows = []
collected_at = datetime.now(timezone.utc).isoformat()
for item in items:
video_id = item.get("aweme_id")
if not video_id or video_id in seen:
continue
seen.add(video_id)
description = item.get("desc") or ""
lowered = description.casefold()
matched = [word for word in MARKERS if word.casefold() in lowered]
if not matched:
continue
author = item.get("author") or {}
stats = item.get("statistics") or {}
rows.append({
"collected_at_utc": collected_at,
"search_keyword": KEYWORD,
"video_id": video_id,
"share_url": item.get("share_url") or "",
"description": description,
"matched_markers": "; ".join(matched),
"author_name": author.get("nickname") or "",
"author_id": author.get("unique_id") or "",
"play_count": stats.get("play_count", ""),
"digg_count": stats.get("digg_count", ""),
"comment_count": stats.get("comment_count", ""),
"share_count": stats.get("share_count", ""),
})
fields = [
"collected_at_utc", "search_keyword", "video_id", "share_url",
"description", "matched_markers", "author_name", "author_id",
"play_count", "digg_count", "comment_count", "share_count",
]
with open("tiktok_review_queue.csv", "w", newline="", encoding="utf-8-sig") as output:
writer = csv.DictWriter(output, fieldnames=fields)
writer.writeheader()
writer.writerows(rows)
print(f"Saved {len(rows)} review candidates to tiktok_review_queue.csv")
Das Skript prüft zunächst den äußeren Status, liest dann das Objekt tiktok und führt die verfügbaren Varianten des Arrays zusammen. Die Deduplizierung anhand von aweme_id verhindert doppelte Zeilen, falls dasselbe Video in beiden Antwortpfaden vorkommt. Die Kennzahlen werden so gespeichert, wie sie zurückgegeben werden; fehlende Werte bleiben leer und werden nicht zu null.
Das Beispiel verwendet die für /searchVideo dokumentierten Parameter: Für date_posted ist der Wert this-month zulässig, für sort_by der Wert date-posted, und region akzeptiert einen Ländercode. Der Wert von count legt die Größe der angeforderten Ergebnismenge fest, garantiert aber keine vollständige Liste aller Beiträge. Wenn Sie die Ergebnisse paginieren, speichern Sie den zurückgegebenen Cursor als undurchsichtigen Wert und übergeben ihn im Parameter cursor.
Manuelle Prüfung und automatisierte Ausführung
Geben Sie die CSV-Datei zusammen mit einer kurzen Anleitung an die zuständige prüfende Person weiter: Link öffnen, Video und Kontext der Beschreibung ansehen, Ergebnis festhalten und kommentieren, wenn der Hinweis in einer anderen Bedeutung verwendet wird. Eine automatische Filterung kann beispielsweise nicht zwischen einer Werbekennzeichnung und einer Diskussion darüber unterscheiden, wie Werbung funktioniert. Die menschliche Prüfung schließt diese semantische Lücke.
Für wiederholbare Erfassungen können Sie das Skript nach Zeitplan über cron, einen CI-Scheduler oder einen Orchestrator ausführen. Speichern Sie die CSV-Datei mit dem Ausführungsdatum oder laden Sie die Zeilen in eine Tabelle mit einem eindeutigen Schlüssel aus Video-ID und Beobachtungsdatum. Wenn Sie ein Auditprotokoll benötigen, speichern Sie auch die ursprüngliche JSON-Antwort unter Zugriffsbeschränkungen: So lassen sich die Umwandlung erneut prüfen und die Herkunft jeder Zeile nachvollziehen.
Für den produktiven Einsatz sollten Sie die Behandlung von Netzwerk- und HTTP-Fehlern, begrenzte Wiederholungsversuche und eine Fehlermeldung ergänzen. Geben Sie die vollständige Anfrage-URL nicht aus, da sie den Zugriffsschlüssel enthält. Bei Teams mit mehreren Nutzern empfiehlt es sich, das Geheimnis in einem Secret-Manager der Laufzeitumgebung zu speichern und den Zugriff auf die Ausgabedateien gemäß den internen Regeln zu beschränken.
Was diese Liste tatsächlich leistet
Nach dem Start verfügt das Team über eine reproduzierbare Auswahl von Videos, die anhand einer Suchphrase gefunden wurden, und einen klaren Grund dafür, warum jeder Kandidat in der Warteschlange gelandet ist. In der Tabelle können irrelevante Treffer manuell ausgeschlossen, prüfende Personen zugewiesen und Ergebnisse nach Hinweis oder Autor gruppiert werden. Bei regelmäßiger Erfassung entsteht außerdem eine Beobachtungshistorie, aus der hervorgeht, welche Videos an einem bestimmten Datum in den zurückgegebenen Suchergebnissen enthalten waren.
Dieser Ansatz eignet sich für die erste Erkennung und Weiterleitung von Inhalten, nicht für eine automatische Beurteilung der Regelkonformität. Er ist durch die Suchergebnisse, das gewählte Schlüsselwort, die Anfrageeinstellungen und die Texthinweise begrenzt. Um eine konkrete Kooperation zu prüfen, vergleichen Sie das Video mit dem Briefing und den Informationen, die Ihrem Team vorliegen, und bewerten Sie anschließend die Botschaft anhand der geltenden Regeln.
Prüfen Sie zunächst die aktuellen Zugriffsbedingungen und Parameter auf der Produktseite der TikTok Scraper API. Vergleichen Sie Antwortformat und Integrationsmöglichkeiten außerdem mit der offiziellen API-Dokumentation.