jsonscraper
Markten
Terug naar het journaal

TikTok-video’s met reclamevermeldingen vinden en ter controle doorsturen

Een Python-pijplijn verzamelt zoekresultaten, haalt beschikbare bijschriften en statistieken op en maakt vervolgens een wachtrij voor handmatige controle

Redactioneel beleid Een fout melden

Als een team wil controleren hoe makers hun band met een merk vermelden in openbare TikTok-video’s, is het nuttigste eerste resultaat geen automatisch oordeel, maar een compacte wachtrij met video’s, bijschrift, link en gevonden signaalwoorden. Hieronder staat een werkbare aanpak: stuur een zoekopdracht via de TikTok Scraper API van jsonscraper, zet de twee mogelijke antwoordstructuren om naar één formaat en sla een CSV-bestand op voor controle door een specialist.

Doel: video’s vinden die controle verdienen

Handmatig zoeken op bedrijfsnaam is lastig steeds op dezelfde manier uit te voeren: resultaten moeten één voor één worden verzameld en de redenen voor selectie blijven in de browser staan. Met een geautomatiseerde selectie kun je de zoekopdracht, startdatum en gevonden items in een tabel bewaren, zodat het team de video’s aan de hand van één vaste lijst kan controleren.

Artikel: TikTok-video’s met reclamevermeldingen vinden en ter controle doorsturen
Samenvatting: We laten zien hoe je openbare TikTok-video’s op merknaam zoekt, beide varianten van API-antwoorden zorgvuldig verwerkt en gevonden video’s met expliciete reclamevermeldingen exporteert naar een CSV-bestand voor controle door een specialist.
Beeldrol: omslag — het centrale idee
Sectie: Doel: video’s vinden die controle verdienen
Visueel onderwerp: Redactioneel stilleven van een afgedrukte CSV-controlewachtrij naast een telefoon met een abstracte
De kandidatenlijst koppelt een gevonden tekstsignaal aan een specifieke publicatie die een specialist vervolgens controleert.© jsonscraper · gemaakt met AI

In dit scenario betekent ‘kandidaat voor controle’ alleen een video uit de geretourneerde zoekresultaten waarvan de beschrijving een vooraf ingesteld woord of een vooraf ingestelde woordgroep bevat. Dat kan bijvoorbeeld ‘reclame’, ‘partnerschap’ of ‘gesponsord’ zijn. Zo’n tekstfilter helpt een mens gericht te kijken, maar beoordeelt de video zelf niet en stelt niet vast of aan de toepasselijke vereisten is voldaan.

Dat onderscheid is belangrijk voor een marketingteam. De richtlijnen van de Amerikaanse Federal Trade Commission beschrijven het vermelden van een materiële band met een merk als een verplichting die afhankelijk is van de context van de boodschap; voor video’s raadt de FTC aan rekening te houden met zowel de zichtbare als de hoorbare vorm van de vermelding. Zoeken in bijschriften kan bepaalde tekstuele signalen vinden, maar voor een beslissing moet de publicatie worden bekeken en de context worden beoordeeld. De FTC-richtlijnen voor makers leggen deze voorwaarden aan de hand van voorbeelden uit.

Resultaat: een CSV met de reden voor selectie

De pijplijn schrijft één regel per unieke video-ID en neemt de beschrijving, link, auteursnaam, beschikbare openbare tellers en gevonden signalen op. Ook voegen we de oorspronkelijke zoekopdracht en het verzameltijdstip toe. Zo kan de tabel naar een werkvoorraad worden doorgestuurd en is later te achterhalen waarom een bepaalde video erin is opgenomen.

De woordenlijst met signalen wordt opgesteld door een redacteur of compliancespecialist. Begin met de taal en termen die in je campagne daadwerkelijk worden gebruikt, bekijk vervolgens de resultaten en breid de lijst zo nodig uit. De waarden in de code hieronder zijn bewust eenvoudig gehouden: vervang ze door termen die passen bij het specifieke merk, de markt en de taal van de content.

Verbinden met de TikTok Scraper API

De documentatie van jsonscraper vermeldt voor het zoeken naar video’s de route GET /searchVideo op het basisadres https://tiktok.evelode.com. De verplichte parameter is keyword; aanvullende parameters zijn onder meer count, date_posted, sort_by en region. De sleutel wordt doorgegeven als license_key, dus bewaar die in een omgevingsvariabele en niet in de code of het CSV-bestand. De exacte parameternamen en route staan in de TikTok-endpointdocumentatie; informatie over het product en de toegang staat op de pagina van de TikTok Scraper API.

Er is een belangrijk kenmerk van het antwoord dat van invloed is op de volledigheid van een lokale parser: de gegevens kunnen staan in tiktok.aweme_list of in tiktok.search_item_list[].aweme_info. Daarom controleert het script beide arrays. Als de zoekopdracht een lege lijst oplevert, maakt het een leeg CSV-bestand aan in plaats van resultaten te verzinnen.

Python-voorbeeld: zoeken, filteren en exporteren naar CSV

Het voorbeeld gebruikt alleen de standaardbibliotheek van Python 3.8 of hoger. Stel vóór het uitvoeren JSONSCRAPER_TIKTOK_LICENSE_KEY in als omgevingsvariabele. De aanvraag gebruikt keyword en geeft de sleutel mee in de queryparameter license_key, zoals in de specificatie staat.

Artikel: TikTok-video’s met reclamevermeldingen vinden en ter controle doorsturen
Samenvatting: We laten zien hoe je openbare TikTok-video’s op merknaam zoekt, beide varianten van API-antwoorden zorgvuldig verwerkt en gevonden video’s met expliciete reclamevermeldingen exporteert naar een CSV-bestand voor controle door een specialist.
Beeldrol: ondersteunende illustratie 2 — een ander specifiek aspect
Sectie: Python-voorbeeld: zoeken, filteren en exporteren naar CSV
Visueel onderwerp: Eenvoudige infographic in het Russisch die de twee ondersteunde paden naar de zoekgegevens van de TikTok-API en de stappen voor het samenstellen van een controlewachtrij toont
Het schema toont beide ondersteunde paden naar de zoekgegevens en de stappen om de controlewachtrij samen te stellen.© jsonscraper · AI-gegenereerde illustratie
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")

Het script controleert eerst de buitenste status, leest vervolgens het object tiktok en voegt de beschikbare arrayvarianten samen. Deduplicatie op aweme_id voorkomt dubbele regels als dezelfde video via beide paden in het antwoord voorkomt. Statistieken worden opgeslagen zoals ze zijn aangeleverd; ontbrekende waarden blijven leeg en worden niet omgezet in nullen.

Het voorbeeld gebruikt parameters die voor /searchVideo zijn gedocumenteerd: date_posted accepteert de waarde this-month, sort_by de waarde date-posted, en region accepteert een landcode. De waarde van count bepaalt de omvang van de aangevraagde resultaten, maar garandeert geen volledige lijst met publicaties. Bewaar bij verdere paginering de geretourneerde cursor als ondoorzichtige waarde en geef die door via de parameter cursor.

Controle door een mens en automatisering van de uitvoering

Geef het CSV-bestand aan de verantwoordelijke controleur, met een korte instructie: open de link, bekijk de video en de context van het bijschrift, leg de conclusie vast en voeg een opmerking toe als het signaal in een andere betekenis wordt gebruikt. Automatische filtering maakt bijvoorbeeld geen onderscheid tussen een reclamevermelding en een bespreking van hoe reclame werkt. Menselijke controle overbrugt dat betekenisverschil.

Voor een herhaalbare verzameling kun je het script volgens een schema uitvoeren via cron, een CI-planner of een taakorkestrator. Bewaar het CSV-bestand met de uitvoerdatum of laad de regels in een tabel met een unieke sleutel die bestaat uit de video-ID en de observatiedatum. Als je een auditlog nodig hebt, bewaar dan ook het oorspronkelijke JSON-antwoord met toegangscontrole: daarmee kun je de omzetting opnieuw controleren en uitleggen waar elke regel vandaan komt.

Voeg in een productieversie foutafhandeling voor netwerk- en HTTP-fouten, een limiet voor nieuwe pogingen en een melding bij storingen toe. Druk de volledige aanvraag-URL niet af: daarin staat de toegangssleutel. Voor teams met meerdere gebruikers is het verstandig het geheim op te slaan in een secretmanager van de uitvoeringsomgeving en de toegang tot uitvoerbestanden te beperken volgens de interne regels.

Wat deze lijst precies oplevert

Na uitvoering beschikt het team over een reproduceerbare selectie video’s die met een zoekterm zijn gevonden, plus een duidelijke reden waarom elke kandidaat in de wachtrij staat. Vanuit de tabel kun je irrelevante treffers handmatig verwijderen, een controleur toewijzen en resultaten groeperen op signaal of maker. Bij regelmatige uitvoering ontstaat bovendien een geschiedenis van de video’s die op een bepaalde datum in de geretourneerde resultaten voorkwamen.

Deze aanpak is geschikt voor eerste signalering en het doorsturen van materiaal, niet voor een automatisch oordeel over naleving van regels. De aanpak is beperkt tot de zoekresultaten, de gekozen zoekterm, de aanvraaginstellingen en de tekstsignalen. Om een specifieke samenwerking te controleren, vergelijk je de video met de briefing en de informatie waarover je team beschikt, en beoordeel je vervolgens de boodschap zelf aan de hand van de toepasselijke regels.

Om te beginnen kun je de actuele toegang en parameters controleren op de productpagina van de TikTok Scraper API. Controleer de antwoordstructuur en integratieopties aan de hand van de officiële API-documentatie.

Mensen

Er zijn nog geen mensen vermeld voor dit artikel.

Blijf lezenTikTok-video’s met productvragen vinden en rapporteren
Lees het volgende artikel

Maak van wat je leest een werkende integratie

Ontdek de socialdata-API's van jsonscraper, test aanvragen en bouw je volgende workflow.

API's verkennen