jsonscraper
Markeder

Slik vurderer du hvor konsekvent en TikTok-skaper holder seg til et tema

En trinnvis Python-pipeline for å hente skaperens feed, sammenligne temaer og bruke KI på en kontrollert måte

Redaksjonelle retningslinjer Meld fra om en feil

En skaper kan virke aktuell for en kampanje ut fra profilen sin og noen få vellykkede videoer, men den nyeste feeden forteller en viktigere historie: Fortsetter skaperen å snakke om det ønskede temaet regelmessig? Manuell kontroll blir raskt utdatert, og et enkelt besøk kan lett ende med at man bare velger ut de mest synlige innleggene. For et byrå eller et merke er det mer nyttig å samle inn et gjentakbart utvalg av offentlige videoer, lagre tilstanden på kontrolltidspunktet og vurdere tematisk relevans etter de samme reglene hver gang.

Artikkel: Slik vurderer du hvor konsekvent en TikTok-skaper holder seg til et tema
Sammendrag: Slik kan et merke eller et byrå vurdere hvor regelmessig en TikTok-skaper publiserer innhold om et bestemt tema: hent feeden via et API, lagre øyeblikksbilder, beregn transparente måltall og bruk eventuelt KI til tematisk klassifisering av videobeskrivelser.
Bildets rolle: Forsideillustrasjon – hovedideen
Seksjon: 
Visuelt motiv: En utskrevet analyserapport med TikTok-videokort for en skaper, fremstilt som nøytrale ikoner,
© jsonscraper · KI-generert illustrasjon

Nedenfor finner du en praktisk fremgangsmåte for å vurdere den offentlige TikTok-feeden til en skaper. Den bruker jsonscrapers TikTok Scraper API og Python: Hent innlegg via et dokumentert endepunkt, lagre den opprinnelige JSON-responsen, strukturer bekreftede felt i en tabell og beregn andelen videoer som passer til et bestemt tema. Om ønskelig kan beskrivelsene sendes til en tekstklassifikator som et eget, kontrollert trinn.

Definer først hva «relevant» betyr

La oss anta at et team velger en skaper til en kampanje om å lage kaffe hjemme. Antall følgere og populariteten til enkeltvideoer kan si noe om rekkevidde, men svarer ikke i seg selv på hvor relevant feeden er for kaffe. Den første vurderingen bør bygge på innholdssignaler: Nevner videobeskrivelsen kaffetilberedning, utstyr, oppskrifter eller anmeldelser? Hvor mange innlegg om dette temaet kom med i den definerte observasjonsperioden? Og hvor stor andel av de innsamlede innleggene er tematisk relevante?

Skriv ned kriteriene på forhånd i en kort ordliste, for eksempel «espresso», «kaffekvern», «latte» og «brygging». Ta med unntak og tvetydige ord. «Kaffe» kan forekomme i en vits, en reklameintegrasjon eller en tilfeldig sammenheng, så et automatisk tekstsøk er en første merking, ikke en endelig vurdering av skaperen. Bruk minst tre statuser: tydelig relevant, mulig relevans og irrelevant video.

Utvalget bør også defineres på forhånd. Du kan for eksempel analysere de 20 nyeste innleggene som hentes ved hver ukentlige kjøring. Dette er en regel for overvåkingen din, ikke en garanti om at API-et returnerer nøyaktig så mange elementer: Tilgjengeligheten og sammensetningen av resultatene avhenger av svaret på den konkrete forespørselen. Noter innsamlingstidspunkt, antall mottatte elementer og forespørselsparametere, slik at du kan sammenligne øyeblikksbilder uten å blande ulike regler.

Hent skaperens feed

I jsonscrapers dokumentasjon tar endepunktet GET /getUserFeed den obligatoriske parameteren query, som er et brukernavn eller en profil-URL. Blant de valgfrie parameterne er count, region, sort_type, with_pinned_posts og max_cursor. API-nøkkelen sendes som license_key i query string. Oppbevar den i en miljøvariabel, ikke i kildekoden. Du finner detaljer om endepunkter og parametere i den offisielle dokumentasjonen for TikTok API-et.

Kontroller først den ytre status-verdien i svaret, og hent deretter objektet tiktok. For brukerfeeden ligger listen over innlegg i tiktok.aweme_list. Det observerte skjemaet inneholder video-ID, beskrivelsestekst, publiseringstidspunkt, skaper, URL og et statistikkobjekt. Enkeltfelt kan mangle, så behandleren bør la verdiene stå tomme i stedet for å erstatte dem med oppdiktede tall.

Det følgende minimale eksemplet er laget for Python 3.8+ og biblioteket requests. Lagre nøkkelen i JSONSCRAPER_TIKTOK_LICENSE_KEY. Koden gjør én forespørsel, kontrollerer HTTP-svaret og den ytre API-statusen, lagrer den opprinnelige JSON-responsen og skriver ut normaliserte rader.

import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
PROFILE = "creator_username"

params = {
    "license_key": API_KEY,
    "query": PROFILE,
    "count": 20,
    "region": "US",
    "sort_type": 0,
    "with_pinned_posts": 0,
}

response = requests.get(
    "https://tiktok.evelode.com/getUserFeed",
    params=params,
    timeout=30,
)
response.raise_for_status()
payload = response.json()

if payload.get("status") != "ok":
    raise RuntimeError("TikTok API returned a non-ok status")

tiktok = payload.get("tiktok") or {}
items = tiktok.get("aweme_list") or []

stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("snapshots").mkdir(exist_ok=True)
Path(f"snapshots/{PROFILE}_{stamp}.json").write_text(
    json.dumps(payload, ensure_ascii=False, indent=2),
    encoding="utf-8",
)

rows = []
for item in items:
    stats = item.get("statistics") or {}
    author = item.get("author") or {}
    rows.append({
        "aweme_id": item.get("aweme_id"),
        "created_at": item.get("create_time"),
        "description": item.get("desc") or "",
        "share_url": item.get("share_url"),
        "creator": author.get("unique_id") or author.get("nickname"),
        "play_count": stats.get("play_count"),
        "digg_count": stats.get("digg_count"),
        "comment_count": stats.get("comment_count"),
        "share_count": stats.get("share_count"),
    })

print(json.dumps(rows, ensure_ascii=False, indent=2))

For dette endepunktet er sort_type beskrevet som 0 for en feed med nylige innlegg og 1 for populære innlegg. Eksemplet velger nylige innlegg, og utelater festede videoer med with_pinned_posts=0, slik at et eldre festet innlegg ikke kommer med i utvalget av nye innlegg. Hvis du trenger en annen visning, lagrer du parameteren i metadataene for øyeblikksbildet og bruker den likt ved hver kjøring.

Behandle svaret: fra JSON til en etterprøvbar tabell

Det er nyttig å lagre det opprinnelige svaret før du gjør om på det. Da kan du kontrollere normaliseringen, finne ut hvorfor en verdi ble stående tom og tilpasse behandleren hvis tilgangen på valgfrie felt endres. Lagre innsamlingstidspunkt i UTC, søkt profil, parametere og skriptversjon sammen med JSON-filen. Ikke legg API-nøkkelen i arkivet eller loggen.

Bruk aweme_id som identifikator for et innlegg ved gjentatte kjøringer, hvis feltet finnes. Dedupisering med denne ID-en hindrer at samme video telles som flere innlegg når den hentes på nytt. Samtidig bør du lagre separate øyeblikksbilder av statistikken: verdier for visninger og reaksjoner gjelder tidspunktet de ble registrert, ikke uforanderlige egenskaper ved videoen. Hvis et statistikkfelt mangler, lar du det stå tomt og utelater oppføringen fra beregningen av den aktuelle metrikken.

Publiseringstidspunktet er angitt som create_time i skjemaet. Gjør det om til en dato for analysetabellen, og lagre både den opprinnelige verdien og et normalisert UTC-tidspunkt. Kontroller noen faktiske poster fra svaret før beregningen, slik at du kan bekrefte forventet datatype og enhet. Dette er spesielt viktig når du lager tidsseriegrafer: Feil konvertering av tidspunkt kan flytte innlegg til feil dag og forvrenge sammenligningen mellom uker.

Du kan lage en enkel tematisk klassifikator uten en modell: normaliser teksten, søk etter bestemte nøkkelord og merk treffene. For mer nyttig merking kan du lage et sett med beskrivelser som er kontrollert manuelt, og regler for tvilstilfeller. Sammenlign deretter et enkelt ordlistefilter med menneskelig merking: Finn uttrykkene som gir falske treff, og oppdater ordlisten. Da får du et forståelig grunnlag for å vurdere senere bruk av KI.

import re

KEYWORDS = (
    "кофе", "эспрессо", "кофемолка", "латте", "заваривание",
)


def normalize(text):
    text = (text or "").casefold()
    return re.sub(r"\s+", " ", text).strip()


def classify(description):
    text = normalize(description)
    matches = [word for word in KEYWORDS if word in text]
    return {
        "topic_match": bool(matches),
        "matched_terms": matches,
    }

for row in rows:
    row.update(classify(row["description"]))

Et nøkkelord i beskrivelsen kan være et nyttig signal, men klassifikatoren bør også oppgi en forklarbar grunn: en liste over treffende begreper, ikke bare en «ja/nei»-merking. For språkmodeller kan du bruke en strukturert instruksjon: Send inn videobeskrivelsen og faste kategorier, og be om en kategori, en kort begrunnelse og et konfidensnivå. Lagre originalteksten og modellsvaret separat. La et menneske kontrollere avgjørelser som påvirker budsjett eller valg av samarbeidspartner, med utgangspunkt i lenkene til innleggene.

Beregn måltall med en tydelig nevner

Andelen tematiske videoer og publiseringsfrekvensen egner seg godt i en enkel rapport. Andelen er antallet videoer som er bekreftet relevante for temaet, delt på antallet videoer som kunne klassifiseres. Vis alltid begge tallene, for eksempel «7 av 18 kontrollerte beskrivelser». Da blir resultatet lettere å forstå, og det er enklere å oppdage når prosentandelen bygger på et for lite utvalg.

Publiseringsfrekvens kan uttrykkes som antall mottatte videoer i en fast periode, for eksempel de siste 30 dagene. Fastsett periodens grenser ut fra innsamlingstidspunkt og publiseringsdatoer. Ved ukentlige øyeblikksbilder bør du lagre resultatet fra hver kjøring, ikke bare en oppdatert sluttrad. Da blir endringer i tema og aktivitet synlige. Ikke tolk antallet innsamlede elementer som et fullstendig arkiv over skaperens innlegg: Analyser det utvalget du faktisk har mottatt, og oppgi tydelig hvilke regler som definerer det.

Statistikk for visninger, likerklikk, kommentarer og delinger er nyttig som kontekst for hver video. Vær forsiktig med å sammenligne absolutte tall: Et eldre innlegg kan ha hatt lengre tid til å samle reaksjoner. Når du sammenligner innlegg fra én og samme skaper, bør du registrere tidspunktet for hver innsamling og se på utviklingen for samme video mellom øyeblikksbildene. Ikke kall forskjellen mellom to øyeblikksbilder «veksthastighet» hvis intervallet og tilgangen på målinger ikke er fastlagt.

En nyttig sluttrapport for hver profil inneholder innsamlingsdato, valgte parametere, antall mottatte innlegg, antall klassifiserte beskrivelser, antall tematiske treff, eksempler med URL-er og en kort merknad om tvilstilfeller. En slik tabell gjør det mulig for en medarbeider å kontrollere konklusjonen og for en annen analytiker å gjenta metoden på den neste profilen.

Sideinndeling og kjøreplan

Hvis utvalget krever en ny side, bruker dokumentasjonen for profilfeeden max_cursor fra det forrige svaret. Send verdien videre uten å endre den: Markøren er en ugjennomsiktig verdi som skal lagres og sendes tilbake til API-et. Kontroller også has_more i svaret hvis du vil hente flere sider. Sett en grense for antall sider eller samlet antall forespørsler, slik at innsamlingen avsluttes på en forutsigbar måte.

cursor = None
all_items = []
max_pages = 3

for _ in range(max_pages):
    page_params = dict(params)
    if cursor is not None:
        page_params["max_cursor"] = cursor

    page_response = requests.get(
        "https://tiktok.evelode.com/getUserFeed",
        params=page_params,
        timeout=30,
    )
    page_response.raise_for_status()
    page_payload = page_response.json()

    if page_payload.get("status") != "ok":
        raise RuntimeError("TikTok API returned a non-ok status")

    page = page_payload.get("tiktok") or {}
    all_items.extend(page.get("aweme_list") or [])

    if not page.get("has_more"):
        break

    cursor = page.get("max_cursor")
    if cursor is None:
        break

Velg hvor ofte du kjører innsamlingen ut fra behovet: En manuell kjøring er nok for en første vurdering, mens en ukentlig kjøreplan kan avdekke endringer uten kontinuerlig spørring når du følger en liste med skapere. Kjøringen kan legges i cron, en CI-jobb eller en orkestrator. Opplegget er enkelt: Hent profiler fra en tabell, send forespørsler med begrenset parallellitet, lagre øyeblikksbilder, kontroller andelen vellykkede svar og send et sammendrag til en arbeidstabell. Gjenta forespørselen etter en midlertidig feil med et begrenset antall forsøk og en forsinkelse, og lagre feil på autoriserte forespørsler separat, slik at du kan kontrollere nøkkel og konfigurasjon.

Hvor KI passer inn – og når du trenger kontroll

KI kan være nyttig for å klassifisere beskrivelser med slang, flere språk eller formuleringer uten et presist nøkkelord. Start med en lukket kategoriliste, og be modellen bruke bare teksten i beskrivelsen. Mål deretter kvaliteten på et lite, manuelt merket utvalg: Sammenlign modellens kategorier med redaktørens vurderinger, og gå gjennom feil og tvilstilfeller hver for seg. I rapporten er det bedre å vise hvor ofte modellens vurdering samsvarer med den manuelle merkingen, samt antallet kontrollerte eksempler, enn å oppgi én ufortolkbar totalskår.

Ikke be modellen om å «velge den beste skaperen» uten kriterier. Del heller prosessen opp i målbare kjennetegn: tematisk andel, regelmessighet, eksempler på relevante videoer og et spenn for offentlige reaksjoner. Modellen kan oppsummere disse feltene kort og oppgi lenker til grunnlaget. Den endelige avgjørelsen ligger hos teamet, som tar hensyn til kampanjeformat, målgruppe og avtaler med skaperen.

Hvis analysen gjelder reklameintegrasjoner, bør du kontrollere opplysningene om skaperens forhold til merket i selve innleggene og mot gjeldende krav. Veiledningen fra US Federal Trade Commission forklarer at forbindelsen til et merke skal opplyses tydelig ved anbefalingen. En profilbiografi eller tekst som er skjult for publikum, kan være utilstrekkelig som synlig informasjon. Se FTC-veiledningen for skapere på sosiale medier. Overvåking av offentlige data kan samle materiale til kontroll, men vurdering av om reglene er fulgt, krever kontekst fra det aktuelle innlegget og kampanjen.

Hva du sitter igjen med

Når pipelinen er satt opp, får teamet daterte øyeblikksbilder av den offentlige feeden, en tabell over innlegg med beskrivelser og tilgjengelige måltall, og en gjentakbar beregning av tematisk andel. Dette gjør det raskere å velge profiler for videre kontroll, oppdage endringer i tematikk og dokumentere grunnlaget for vurderingen. Metoden kan etterprøves: Den opprinnelige JSON-filen, forespørselsparametere, klassifiseringsregler og lenker til videoer viser veien fra data til konklusjon.

Start med å kjøre skriptet på én profil, lagre råsvaret og kontrollere noen klassifiseringer manuelt. Fastsett deretter temalisten, reglene for utvalget og rapportformatet. Når resultatet kan gjentas, kan du legge til en kjøreplan og en kø med profiler. Se API-dokumentasjonen for beskrivelser av endepunkter og parametere, og produktoversikten og tilgjengelige integrasjonsalternativer på siden for TikTok Scraper API.

Praktisk sjekkliste før oppstart

  • Skriv ned kampanjetemaet, ordlisten over inkluderende begreper og eksempler på tvilstilfeller.
  • Fastsett utvalgsperioden, verdien for count, sorteringen og innstillingen for festede innlegg.
  • Lagre den opprinnelige JSON-filen, innsamlingsdatoen og parameterne separat fra den hemmelige nøkkelen.
  • Bruk aweme_id til deduplisering hvis identifikatoren finnes.
  • Skill mellom manglende verdier og null, og ikke beregn gjennomsnitt uten et tydelig grunnlag.
  • Vis utvalgsstørrelsen sammen med den tematiske andelen, og legg ved eksempler med lenker.
  • Kontroller KI-klassifiseringen på et manuelt merket utvalg før den brukes i kampanjebeslutninger.
  • Oppdater vurderingen etter en fast kjøreplan, og sammenlign øyeblikksbilder som er samlet inn etter de samme reglene.

Mennesker

Ingen personer er oppført for denne artikkelen ennå.

Fortsett å leseSlik vurderer du kvaliteten på TikTok-leads fra offentlige videoer: en trinnvis Python-pipeline
Les neste artikkel

Gjør det du leser til en fungerende integrasjon

Utforsk jsonscrapers API-er for sosiale data, test forespørsler og bygg neste arbeidsflyt.

Utforsk API-er