Sisällöntuottaja voi vaikuttaa sopivalta kampanjaan profiilinsa ja muutaman onnistuneen videon perusteella, mutta tuore julkaisusyöte kertoo tärkeämmän asian: puhuuko hän edelleen säännöllisesti halutusta aiheesta? Manuaalinen tarkistus vanhenee nopeasti, ja yksittäinen katselukerta voi helposti painottua näkyvimpiin julkaisuihin. Toimistolle tai brändille on hyödyllisempää kerätä julkisista videoista toistettavissa oleva otos, tallentaa tilanne tarkistuspäivänä ja arvioida aiheeseen sopivuutta samoilla säännöillä joka kerta.

Seuraavassa kuvataan käytännöllinen tapa arvioida TikTok-sisällöntuottajan julkista julkaisusyötettä. Siinä käytetään jsonscraperin TikTok Scraper APIa ja Pythonia: julkaisut haetaan dokumentoitua reittiä käyttäen, alkuperäinen JSON tallennetaan, vahvistetut kentät muunnetaan taulukoksi ja lasketaan tiettyyn aiheeseen sopivien videoiden osuus. Halutessasi voit antaa kuvaukset tekstiluokittimelle seuraavassa, erikseen valvotussa vaiheessa.
Määritä ensin, mitä ”sopivuus” tarkoittaa
Oletetaan, että tiimi valitsee tekijää kotona valmistettavaa kahvia käsittelevään kampanjaan. Seuraajamäärä ja yksittäisten videoiden suosio voivat auttaa kuvaamaan tavoittavuutta, mutta ne eivät yksin kerro, kuinka tiiviisti julkaisusyöte liittyy kahviin. Ensimmäiseen seulontaan tarvitaan sisältöön liittyviä merkkejä: mainitaanko videon kuvauksessa kahvin valmistus, laitteet, reseptit tai arviot; kuinka monta aiheeseen liittyvää julkaisua osuu määritettyyn tarkastelujaksoon; ja mikä on aiheeseen liittyvien videoiden osuus kerätystä aineistosta.
Kirjaa kriteerit ennen tiedonkeruuta lyhyeksi sanastoksi: esimerkiksi ”espresso”, ”kahvimylly”, ”latte” ja ”suodatus”. Lisää poissulkuja ja monitulkintaisia sanoja. ”Kahvi” voi esiintyä vitsissä, mainosyhteistyössä tai satunnaisessa yhteydessä, joten tekstiosuma on alustava luokitus, ei lopullinen arvio tekijästä. Erota vähintään kolme luokkaa: selvästi aiheeseen sopiva, mahdollisesti sopiva ja epäolennainen video.
Myös otos on määritettävä etukäteen. Voit analysoida esimerkiksi 20 viimeisintä saatua julkaisua jokaisella viikoittaisella ajokerralla. Tämä on seurannan sääntö, ei lupaus siitä, että API palauttaa aina täsmälleen tämän määrän: tulosten saatavuus ja sisältö riippuvat yksittäisen pyynnön vastauksesta. Kirjaa keräysaika, saatujen kohteiden määrä ja pyynnön parametrit, jotta tilannekuvia voi vertailla sekoittamatta eri sääntöjä.
Hae tekijän julkaisusyöte
jsonscraperin dokumentaatiossa reitti GET /getUserFeed edellyttää parametria query, joka sisältää käyttäjänimen tai profiilin URL-osoitteen. Valinnaisiksi parametreiksi mainitaan count, region, sort_type, with_pinned_posts ja max_cursor. API-avain välitetään kyselymerkkijonossa parametrina license_key; tallenna se ympäristömuuttujaan äläkä lähdekoodiin. Reittien ja parametrien tiedot löytyvät TikTok API:n virallisesta dokumentaatiosta.
Tarkista vastauksesta ensin ylimmän tason status ja käsittele sen jälkeen tiktok-objektia. Käyttäjän julkaisusyötteen julkaisut ovat listassa tiktok.aweme_list. Havaitussa skeemassa on videon tunniste, kuvausteksti, julkaisuaika, tekijä, URL-osoite ja tilasto-objekti. Yksittäisiä kenttiä voi puuttua, joten käsittelijän tulee säilyttää puuttuvat arvot tyhjinä eikä korvata niitä keksityillä luvuilla.
Seuraava vähimmäisesimerkki edellyttää Python 3.8+:aa ja requests-kirjastoa. Tallenna avain muuttujaan JSONSCRAPER_TIKTOK_LICENSE_KEY. Koodi tekee yhden pyynnön, tarkistaa HTTP-vastauksen ja API:n ylimmän tason tilan, tallentaa alkuperäisen JSONin ja tulostaa normalisoidut rivit.
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))
Tämän reitin sort_type on dokumentaation mukaan 0 viimeisimmille julkaisuille ja 1 suosituille julkaisuille. Esimerkissä valitaan viimeisimmät julkaisut, ja kiinnitetyt videot suljetaan pois parametrilla with_pinned_posts=0, jotta vanha kiinnitetty julkaisu ei päädy uusien julkaisujen otokseen. Jos tarvitset toisen asetuksen, tallenna parametri tilannekuvan metatietoihin ja käytä samaa asetusta jokaisella ajokerralla.
Vastauksen käsittely: JSONista toistettavaan taulukkoon
Alkuperäinen vastaus kannattaa tallentaa ennen muunnoksia. Sen avulla voit tarkistaa normalisoinnin, selvittää, miksi jokin rivi jäi tyhjäksi, ja mukauttaa käsittelijää, jos valinnaisten kenttien saatavuus vastauksissa muuttuu. Tallenna JSONin rinnalle UTC-keräysaika, kysytty profiili, parametrit ja skriptin versio. Älä laita API-avainta arkistoon tai lokiin.
Käytä toistuvilla ajokerroilla julkaisun tunnisteena aweme_id-arvoa, jos kenttä on saatavilla. Tunnisteen perusteella tehtävä deduplikointi estää saman videon laskemisen useaksi julkaisuksi, jos se saadaan uudelleen. Säilytä kuitenkin tilastojen tilannekuvat erillisinä: näyttö- ja reaktiomäärät kertovat havaintohetkestä, eivät videon muuttumattomista ominaisuuksista. Jos tilastokenttä puuttuu, jätä se tyhjäksi ja sulje kyseinen tietue vastaavan mittarin laskennasta.
Julkaisuaika on skeemassa merkitty kenttään create_time. Muunna se analyysitaulukossa päivämääräksi ja säilytä sekä alkuperäinen arvo että normalisoitu UTC-aika. Tarkista muutama saatu tietue ennen laskentaa, jotta voit varmistaa tyypin ja yksiköt. Tämä on erityisen tärkeää aikasarjoja laadittaessa: virheellinen aikamuunnos siirtää julkaisuja päivästä toiseen ja vääristää viikkojen vertailua.
Yksinkertaisen aiheluokittimen voi rakentaa ilman mallia: normalisoi teksti, etsi annetut avainsanat ja merkitse osumat. Hyödyllisempää luokittelua varten kokoa joukko manuaalisesti tarkistettuja kuvauksia ja määritä säännöt rajatapauksille. Vertaa sitten yksinkertaista sanastosuodatinta ihmisen tekemään luokitukseen: selvitä, mitkä ilmaukset tuottavat vääriä osumia, ja päivitä sanastoa. Näin syntyy ymmärrettävä perustaso, johon myöhempää tekoälyn käyttöä voi verrata.
import re
KEYWORDS = (
"kahvi", "espresso", "kahvimylly", "latte", "suodatus",
)
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"]))
Kuvauksessa oleva avainsana voi olla hyödyllinen signaali, mutta luokittimen kannattaa palauttaa selitettävä peruste — esimerkiksi osuneet termit — pelkän ”kyllä/ei”-merkinnän sijaan. Käytä kielimalleille jäsenneltyä kehotetta: anna videon kuvaus ja kiinteät luokat sekä pyydä mallia palauttamaan luokka, lyhyt perustelu ja varmuustaso. Säilytä alkuperäinen teksti ja mallin vastaus erikseen. Tarkista ihminen julkaisulinkkien avulla päätökset, jotka vaikuttavat budjettiin tai kumppanin valintaan.
Laske mittarit niin, että nimittäjä on selvä
Yksinkertaiseen raporttiin sopivat aiheeseen liittyvien videoiden osuus ja julkaisutiheys. Osuus lasketaan jakamalla vahvistetusti aiheeseen sopivien videoiden määrä luokiteltavissa olleiden videoiden määrällä. Näytä aina molemmat luvut, esimerkiksi ”7 kaikkiaan 18 tarkistetusta kuvauksesta”. Näin tulos on ymmärrettävä, ja samalla on helpompi huomata, jos prosentti perustuu liian pieneen otokseen.
Julkaisutiheyden voi esittää tietyn ajanjakson aikana saatujen videoiden määränä, esimerkiksi viimeisten 30 päivän ajalta. Määritä jakson rajat keruuajan ja julkaisupäivien perusteella. Jos keräät tilannekuvia viikoittain, säilytä jokaisen ajon tulos äläkä vain päivitä yhtä yhteenvetoriviä: näin aiheiden ja aktiivisuuden muutokset näkyvät. Älä tulkitse saatujen kohteiden määrää tekijän täydelliseksi julkaisuarkistoksi — analysoi tosiasiassa saatua otosta ja ilmoita selvästi sen valintasääntö.
Näyttö-, tykkäys-, kommentti- ja jakomäärät ovat hyödyllistä taustatietoa kustakin videosta. Absoluuttisia arvoja on syytä verrata varoen: vanhempi julkaisu on voinut kerätä reaktioita pidempään. Jos vertaat saman tekijän julkaisuja, kirjaa kunkin keruun aika ja tarkastele saman videon kehitystä eri tilannekuvien välillä. Älä kutsu kahden tilannekuvan eroa ”kasvunopeudeksi”, ellei mittausväliä ja mittausten saatavuutta ole kirjattu.
Jokaisen profiilin hyödyllinen yhteenvetotietue sisältää keräyspäivän, valitut parametrit, saatujen julkaisujen määrän, luokiteltujen kuvausten määrän, aiheosumien määrän, esimerkkien URL-osoitteet ja lyhyen huomion monitulkintaisista tapauksista. Taulukon avulla työntekijä voi tarkistaa päätelmän ja toinen analyytikko toistaa menetelmän seuraavassa profiilissa.
Sivutus ja aikataulutus
Jos otos edellyttää seuraavaa sivua, profiilin julkaisusyötteen dokumentaatio käyttää edellisen vastauksen max_cursor-arvoa. Välitä se muuttamatta: kursori on läpinäkymätön arvo, joka tulee tallentaa ja palauttaa API:lle. Tarkista vastauksesta myös has_more, jos aiot hakea lisää sivuja. Rajoita sivujen määrää tai pyyntöjen kokonaisbudjettia, jotta keruu päättyy ennakoitavasti.
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
Valitse ajoväli tarpeen mukaan: alustavaan arvioon riittää manuaalinen ajo; tekijälistaa viikoittain seuraava aikataulu voi tuoda muutokset esiin ilman jatkuvaa kyselyä. Ajastuksen voi toteuttaa cronilla, CI-tehtävällä tai orkestroijalla. Rakenne on yksinkertainen: hae profiilit taulukosta, tee pyynnöt rajatulla rinnakkaisuudella, tallenna tilannekuvat, tarkista onnistuneiden vastausten osuus ja lähetä yhteenveto työtaulukkoon. Yritä tilapäisen virheen jälkeen uudelleen rajattu määrä kertoja viiveen kanssa, ja kirjaa valtuutettujen pyyntöjen virheet erikseen avaimen ja määritysten tarkistamista varten.
Missä tekoälystä on hyötyä ja missä tarvitaan tarkistusta
Tekoälystä on hyötyä sellaisten kuvausten luokittelussa, joissa on slangia, useita kieliä tai ilmaisuja ilman täsmällistä avainsanaa. Määritä ensin suljettu luokkajoukko ja pyydä mallia käyttämään vain kuvauksen tekstiä. Arvioi sitten laatua pienellä, käsin luokitellulla otoksella: vertaa mallin luokkia editorin päätöksiin ja käy virheet sekä monitulkintaiset tapaukset erikseen läpi. Raportissa kannattaa näyttää mallin ja ihmisen luokitusten yhteneväisyys sekä tarkistettujen esimerkkien määrä yleispätevän, vaikeasti tulkittavan pisteluvun sijaan.
Älä anna mallille tehtäväksi ”valitse paras tekijä” ilman kriteereitä. Jaa prosessi sen sijaan mitattaviin piirteisiin: aiheeseen liittyvien julkaisujen osuus, säännöllisyys, esimerkit relevantista sisällöstä ja julkisten reaktioiden vaihteluväli. Malli voi tiivistää nämä kentät ja ilmoittaa perustana olevat linkit; lopullinen päätös kuuluu tiimille, joka ottaa huomioon kampanjan muodon, yleisön ja tekijän kanssa sovitut ehdot.
Jos analysoit mainosyhteistyötä, tarkista erikseen itse julkaisuista ja sovellettavista vaatimuksista, miten tekijä ilmoittaa suhteestaan brändiin. Yhdysvaltain liittovaltion kauppakomission ohjeissa neuvotaan, että suhde brändiin on tuotava selvästi esiin suosituksen yhteydessä; profiiliteksti tai tekstin piilotettu osa ei välttämättä riitä yleisölle näkyväksi ilmoitukseksi. Katso FTC:n ohjeet sosiaalisen median vaikuttajille. Julkisten tietojen seuranta auttaa kokoamaan tarkistettavaa aineistoa, mutta sääntöjen noudattamisen arviointi edellyttää yksittäisen julkaisun ja kampanjan kontekstia.
Mitä saat lopputulokseksi
Kun putki on määritetty, tiimi saa päivämäärällä varustetut tilannekuvat julkisesta julkaisusyötteestä, taulukon julkaisuista kuvauksineen ja saatavilla olevine mittareineen sekä toistettavan laskelman aiheeseen liittyvien julkaisujen osuudesta. Niiden avulla profiileja voidaan seuloa nopeammin jatkotarkistukseen, aiheiden muutoksia havaita ja arvioinnin perusteet dokumentoida. Menetelmä pysyy tarkistettavana: alkuperäisen JSONin, pyyntöparametrien, luokittelusääntöjen ja videolinkkien avulla voi seurata tietojen matkaa päätelmään asti.
Aloita testaamalla skriptiä yhdellä profiililla, tallenna raakavastaus ja tarkista muutama luokitus manuaalisesti. Määritä sen jälkeen aiheiden sanasto, otoksen säännöt ja raportin muoto. Kun tulokset ovat toistettavissa, lisää aikataulutus ja profiilijono. Reittien ja parametrien tiedot löytyvät API-dokumentaatiosta, ja tuotteen yleiskatsauksen sekä saatavilla olevat integrointivaihtoehdot TikTok Scraper API -sivulta.
Käytännön tarkistuslista ennen käynnistystä
- Kirjaa kampanjan aihe, mukaan otettavien termien sanasto ja esimerkit rajatapauksista.
- Määritä otoksen aikaikkuna,
count-arvo, lajittelutapa ja kiinnitettyjen julkaisujen asetus. - Säilytä alkuperäinen JSON, keräyspäivä ja parametrit erillään salaisesta avaimesta.
- Käytä
aweme_id-arvoa duplikaattien poistamiseen, jos tunniste on saatavilla. - Erota puuttuva arvo nollasta äläkä laske mittareiden keskiarvoja ilman selkeää perustetta.
- Näytä otoksen koko aiheosuuden rinnalla ja liitä mukaan esimerkkilinkit.
- Tarkista tekoälyn tekemä luokittelu käsin luokitellulla otoksella ennen sen käyttöä kampanjapäätöksissä.
- Päivitä arvio aikataulun mukaan ja vertaa samoilla säännöillä kerättyjä tilannekuvia.