For å finne offentlige TikTok-videoer som omtaler en merkevare og inneholder tydelige reklameformuleringer, kan du samle resultater fra flere søk, hente bildetekstene og markere signalord. Resultatet er en CSV-fil med lenker og tilgjengelige måltall – en kø for menneskelig gjennomgang, ikke en automatisk vurdering av om reglene er fulgt.
En slik arbeidsflyt kan være nyttig for et byrå som sammenligner en kampanje med en brief, eller et internt team som fører oversikt over offentlige omtaler. Den gjør søkeresultatene enklere å organisere og tar vare på tegnene analytikeren kan bruke til å avgjøre hvilken video som bør åpnes og undersøkes.
Hva bør du se etter i videoene?
Ved kontroll av reklame er det viktig å undersøke forbindelsen mellom skaperen og merkevaren, og hvordan den opplyses i forbindelse med en anbefaling. FTCs veiledning for influensere forklarer at en vesentlig forbindelse kan være økonomisk, arbeidsrelatert, personlig eller familiær, og at opplysningen må være tydelig og forståelig. For videoanbefalinger sier FTC at opplysningen bør stå i selve videoen, ikke bare i beskrivelsen. Bildeteksten er derfor nyttig for sortering, men viser ikke i seg selv hva seerne så i bildet eller hørte i lyden.
Dette skriptet har et mer avgrenset formål: å finne videoer i søkeresultatene der bildeteksten inneholder merkevareuttrykk og mulige markører som «reklame», «sponsor» eller «partnerskap». Tilpass ordlisten til kampanjens språk og terminologi. Hvis en markør ikke finnes i bildeteksten, åpner du videoen og undersøker innholdet: et teksttreff fastslår ikke om videoen selv inneholder en opplysning.
Hvordan gjør du søkeresultater om til en kø for gjennomgang?
Lag en kort liste med søkefraser: merkenavnet, kampanjen og en vanlig skrivemåte for produktet. Kjør hvert søk separat, og lagre søkefrasen sammen med resultatene. Da kan teamet se hvilket søk som fant videoen, og gjenta innsamlingen ved behov.


Til innsamlingen kan du bruke TikTok Scraper API fra jsonscraper. Den dokumenterte GET-ruten /searchVideo ligger på https://tiktok.evelode.com og tar imot parameterne keyword, count, date_posted, sort_by, region og cursor. I et observert svar lå TikTok-dataene for videoer i search_item_list[].aweme_info; aweme_list kunne være tom. Parseren nedenfor sjekker begge plasseringene.
Nøkkelen sendes i parameteren license_key. Oppbevar den i en miljøvariabel, ikke i skriptet eller et kodelager. Dokumentasjonen for TikTok-rutene inneholder navnene på søkeparametrene; bruk den returnerte cursor-verdien for neste side. Ta vare på antallet behandlede objekter og selve søkefrasen: paginering lar deg fortsette gjennom resultatene, men fastslår ikke i seg selv at resultatsettet er fullstendig.
Et enkelt eksempel i Python
Skriptet sender én forespørsel for hver frase, samler begge dokumenterte resultatformatene, fjerner duplikater basert på video-ID, markerer ord i beskrivelsen og skriver en CSV-fil. Installer requests med kommandoen python -m pip install requests, angi JSONSCRAPER_TIKTOK_LICENSE_KEY i miljøet og kjør filen. Eksemplet fungerer med Python 3.8 og nyere.
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")
Før du lagrer koden, bør du kontrollere statusen til det eksterne svaret og deretter dataene i tiktok. Normaliseringen leser begge plasseringene for videoer. For neste side kan du sende den mottatte cursor-verdien videre uendret; dette enkle eksemplet er med hensikt begrenset til én side per søk.
Hva viser CSV-filen?
Hver rad kobler sammen video-ID og lenke, tilgjengelig forfatter-ID, bildetekst, søkefraser og treff på markører. Hvis svaret inneholder tall for visninger, likerklikk og kommentarer, lagres de som kontekst for å velge rekkefølgen på gjennomgangen. Disse feltene kan mangle; skriptet lar dem stå tomme i stedet for å sette dem til null.
Åpne deretter videoen, kontroller om reklamemerkingen finnes og er tydelig i selve videoen, og registrer resultatet med avtalte kategorier, for eksempel «funnet», «trenger mer gjennomgang» eller «ikke funnet ved gjennomgang». Koden leter bare etter eksakte tekstmarkører i bildeteksten; den analyserer ikke bilde eller lyd og avgjør ikke om reglene er fulgt.
Hvis dette skal gjentas regelmessig, kan du kjøre innsamlingen etter en tidsplan, registrere tidspunktet for forespørselen og lagre den opprinnelige JSON-filen sammen med CSV-filen. Begrens søkelisten til nødvendige fraser og fastsett hvor lenge innsamlede data skal lagres. jsonscrapers retningslinjer for ansvarlig datainnsamling anbefaler rimelig forespørselsfrekvens, dataminimering og kontroll av KI-resultater før videre handling.
Resultatet er en etterprøvbar kø med offentlige videoer for manuell kontroll av reklamemerking: søketreff og tilgjengelige måltall hjelper deg med å velge hva du skal åpne først, mens vurderingen av selve videoen fortsatt gjøres av en kontrollør. Du kan kontrollere parameternavnene i dokumentasjonen for TikTok API og finne produktinformasjon på siden for TikTok Scraper API.