jsonscraper
Markkinat
Takaisin lehteen

Näin tunnistat kasvavan sitoutumisen TikTok-videoissa vertaamatta raakoja katselukertoja

Tallenna samojen haulla löydettyjen videoiden mittarit säännöllisin väliajoin ja laske muutos erillään kokonaisnäkyvyydestä

Toimituksellinen linjaus Ilmoita virheestä

Selvittääksesi, kerääkö tietty TikTok-video reaktioita, vertaa sen julkisia mittareita aiempaan tallennettuun havaintoon. Yksittäinen haku näyttää jo kertyneet katselut ja reaktiot; samojen löydettyjen videoiden kerääminen uudelleen paljastaa kahden ajokerran välisen muutoksen. Alla on yksinkertainen toimiva Python-putki: haku, mittareiden tallennus CSV-tiedostoon ja muutoksen laskeminen.

Mitä tällaisella seurannalla mitataan?

Skripti sopii markkinoijalle, analyytikolle tai kehittäjälle, joka tarvitsee aiheeseen liittyvän haulla löydettyjen videoiden luettelon ja tarkistettavan havaintohistorian. Tiimi voi esimerkiksi seurata säännöllisesti tuotteen lanseeraukseen tai tiettyyn yleisöhakuun liittyviä videoita ja selvittää, mitkä niistä ovat saaneet lisää katseluita, tykkäyksiä, kommentteja tai jakoja edellisen tarkistuksen jälkeen.

Artikkeli: Näin tunnistat kasvavan sitoutumisen TikTok-videoissa vertaamatta raakoja katselukertoja
Yhteenveto: Vaiheittainen Python-putki kerää haulla löytyneet TikTok-videot, tallentaa katselu- ja reaktiomittarit CSV-tiedostoon ja laskee seuraavalla ajokerralla samojen videoiden muutokset.
Kuvan rooli: kansikuva — keskeinen ajatus
Osio: Mitä tällaisella seurannalla mitataan?
Visuaalinen aihe: Toimituksellinen valokuva: painettuja arkkeja, joissa näkyy anonymisoituja lyhytvideoiden tunnisteita ja kaksi aikaleimaa
Saman videon kahden mittarihavainnon vertailu tunnisteen avulla.© jsonscraper · luotu tekoälyllä

Vertailun perusyksikkö on aweme_id-tunnisteella yksilöity video. Jokaisesta havainnosta tallennetaan keräysaika, tunniste, kuvaus, URL-osoite, tekijän nimi ja saatavilla olevat laskurit. Sen jälkeen kaksi havaintoa yhdistetään tunnisteen perusteella. Näin yhden videon katselukertojen kasvu ei sekoitu toisen videon kertyneisiin katselukertoihin.

Tulos kuvaa vain videoita, jotka tietty hakukysely palauttaa tietyllä ajokerralla. Hakutulokset voivat muuttua, ja yksittäisiä tilastokenttiä voi puuttua. Siksi havainnot ja niiden keruuajat kannattaa tallentaa, ja raporttia tulee käsitellä jo löydettyjen videoiden seurannan tuloksena, ei täydellisenä aiheeseen liittyvien julkaisujen luettelona.

Miten API-keruu toimii?

TikTok Scraper API -dokumentaatiossa kuvataan GET-reitti /searchVideo. Haussa pakollinen merkkijono on keyword; valinnaisiin parametreihin kuuluvat count, region, sort_by ja date_posted. API-avain välitetään parametrina license_key. Ohjeessa ilmoitetaan perusosoitteeksi https://tiktok.evelode.com.

Vastaus sisältää ulomman tilan ja tiktok-objektin. Hakutulosten videot voivat olla kohdassa tiktok.aweme_list tai sisäkkäin polussa tiktok.search_item_list[].aweme_info. Alla oleva käsittelijä tukee molempia muotoja. Mittarit luetaan statistics-objektista; niihin kuuluvat play_count, digg_count, comment_count ja share_count. Puuttuva arvo tallennetaan tyhjänä, eikä sitä korvata nollalla.

Reittiohjeessa luetellaan cursor hakutulosten selaamista varten, ja siinä mainitaan parametrien date_posted ja sort_by sallitut vaihtoehdot. Yksinkertaista toistettavaa seurantaa varten riittää, että haet ensin yhden tulossivun ja tallennat vastauksen. Lisää sivutus vasta tarpeen mukaan. Jos sivutusta tarvitaan, välitä saatu kursori eteenpäin muuttamatta sitä.

Toimiva Python-esimerkki

Asenna requests-kirjasto komennolla python -m pip install requests ja aseta avain ympäristömuuttujaan JSONSCRAPER_TIKTOK_LICENSE_KEY. Skripti ottaa hakulausekkeen komentoriviargumenttina ja lisää löydetyt havainnot yhteen CSV-tiedostoon. Koodi toimii Python 3.8+:lla.

import csv
import os
import sys
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://tiktok.evelode.com/searchVideo"
CSV_PATH = Path("tiktok_video_snapshots.csv")
FIELDS = [
    "collected_at", "aweme_id", "author", "description", "share_url",
    "play_count", "digg_count", "comment_count", "share_count",
]


def extract_items(payload):
    """Support the observed search response layouts."""
    data = payload.get("tiktok") or {}
    items = data.get("aweme_list") or []
    if items:
        return items

    found = []
    for result in data.get("search_item_list") or []:
        info = result.get("aweme_info")
        if info:
            found.append(info)
    return found


def main():
    key = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
    if not key:
        raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")
    if len(sys.argv) < 2:
        raise SystemExit('Usage: python collect.py "search phrase"')

    params = {
        "license_key": key,
        "keyword": sys.argv[1],
        "count": 20,
        "region": "US",
        "sort_by": "relevance",
        "date_posted": "this-week",
    }
    response = requests.get(BASE_URL, params=params, timeout=30)
    response.raise_for_status()
    payload = response.json()

    if payload.get("status") != "ok":
        raise RuntimeError("API returned a non-ok outer status")
    data = payload.get("tiktok") or {}
    items = extract_items(payload)
    collected_at = datetime.now(timezone.utc).isoformat()

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

    write_header = not CSV_PATH.exists()
    with CSV_PATH.open("a", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=FIELDS)
        if write_header:
            writer.writeheader()
        writer.writerows(rows)

    print("Saved", len(rows), "returned videos")
    print("has_more:", data.get("has_more"), "cursor:", data.get("cursor"))


if __name__ == "__main__":
    main()

Kokeile esimerkiksi komentoa python collect.py "tuotetta koskeva haku". Kirjasto lisää avaimen URL-parametreihin; skripti ei tulosta sitä terminaaliin. Älä tallenna koko pyyntö-URL-osoitetta julkisesti saatavilla oleviin lokeihin, koska se sisältää avaimen. Käytä tuotantojärjestelmässä salaisuuksien hallintapalvelua ja rajoita pääsyä havaintotiedostoon.

Miten ajokertojen välinen kasvu lasketaan?

Skripti tallentaa tarkoituksella kaikki havainnot aiempien arvojen ylikirjoittamisen sijaan. Seuraava pieni analysoija yhdistää kunkin videon kaksi viimeisintä havaintoa ja tulostaa laskurien erot. Jos mittarilta puuttuu arvo jommastakummasta tietueesta, tulos merkitään puuttuvaksi.

Artikkeli: Näin tunnistat kasvavan sitoutumisen TikTok-videoissa vertaamatta raakoja katselukertoja
Yhteenveto: Vaiheittainen Python-putki kerää haulla löytyneet TikTok-videot, tallentaa katselu- ja reaktiomittarit CSV-tiedostoon ja laskee seuraavalla ajokerralla samojen videoiden muutokset.
Kuvan rooli: havainnollistava kuva 2 — eri erityisnäkökulma
Osio: Miten ajokertojen välinen kasvu lasketaan?
Visuaalinen aihe: Venäjänkielinen infografiikka, jossa esitetään työnkulku: TikTok-avainsanahaku → palautetut videot
Tietojen kulku hakutuloksista kahden tallennetun havainnon vertailuun.© jsonscraper · tekoälyn luoma kuvitus
import csv
from collections import defaultdict
from pathlib import Path

rows_by_video = defaultdict(list)
with Path("tiktok_video_snapshots.csv").open(encoding="utf-8", newline="") as file:
    for row in csv.DictReader(file):
        if row["aweme_id"]:
            rows_by_video[row["aweme_id"]].append(row)

metrics = ("play_count", "digg_count", "comment_count", "share_count")
for video_id, snapshots in rows_by_video.items():
    snapshots.sort(key=lambda row: row["collected_at"])
    if len(snapshots) < 2:
        continue
    previous, latest = snapshots[-2], snapshots[-1]
    changes = {}
    for metric in metrics:
        old, new = previous[metric], latest[metric]
        changes[metric] = int(new) - int(old) if old and new else None
    print(video_id, changes, latest["share_url"])

Muutos on kahden tallennetun arvon erotus, ei takuuvarmalla aikavälillä laskettu kasvunopeus. Jos ajokertojen välit vaihtelevat, laske collected_at-aikaleimojen erotus ja vertaa kasvua todellisen aikavälin perusteella. Laskurit voivat muuttua havaintojen välillä; tallennetut aikaleimat osoittavat, milloin käytetyt arvot saatiin.

Miten raportti automatisoidaan ja tulkitaan?

Päivittäistä raporttia varten ajasta keruu palvelimella tai CI-järjestelmässä, määritä kiinteä hakulausekkeiden luettelo ja tallenna tiedot CSV-tiedostoon tai tietokantaan. Jos tuloksissa on toistoja, poista ne saman havaintokerran sisältä aweme_id-tunnisteen perusteella. Säilytä raakamuotoinen JSON normalisoitujen sarakkeiden rinnalla: näin tiedot on helpompi käsitellä uudelleen, jos raportin rakenne muuttuu.

Taulukossa on kätevää esittää videon tunniste ja URL, tekijä, kuvaus, keräysaika sekä kunkin mittarin muutos erikseen. Katselukertojen kasvun mukainen lajittelu kertoo leviämisestä, kun taas kommenttien tai jakojen kasvu auttaa tunnistamaan muunlaista reaktiota. Älä yhdistä näitä mittareita yhdeksi luokitukseksi ilman selkeää sääntöä: kukin laskuri kertoo eri asiasta.

Ajastin voi lähettää raportin sähköpostiin, taulukkoon tai sisäiseen kanavaan, mutta tämä vaihe kuuluu omaan infrastruktuuriisi — yllä oleva esimerkki kerää ja analysoi vain tiedot. Kattavampaa keruuta varten voit selata tulossivuja, tallentaa kursorin ja lopettaa, kun API ilmoittaa, ettei seuraavia sivuja ole. Hakukursori on vastauksen läpinäkymätön arvo; älä laske sitä itse. Sivujen läpikäyntikään ei kuvaa muuta kuin palautetut hakutulokset eikä takaa täydellistä luetteloa kaikista sopivista julkaisuista.

Käytännön tuloksena saat toistettavan havaintolokin ja taulukon löydettyjen videoiden muutoksista. Näin voit huomata, mitkä julkaisut ovat muuttaneet julkisia laskureitaan tarkistusten välillä, ja välittää konkreettiset linkit asiantuntijalle tarkempaa analyysiä varten. Tuotteen lisätiedot ja API:n käyttöoikeudet löytyvät TikTok Scraper API -sivulta.

Mitä kannattaa tarkistaa ennen ajastamista?

  • Varmista ennen tiktok-objektin käsittelyä, että ulomman vastauksen tila on ok.
  • Tarkista hakutulosten molemmat rakennemuodot; puuttuvan luettelon tulee tuottaa tyhjä keräys, ei virhettä.
  • Tallenna alkuperäiset arvot ja aikaleimat. Puuttuva mittari jätetään tyhjäksi.
  • Käytä samoja hakulausekkeita ja parametreja, jotta havaintojen vertailu on selkeämpää; kirjaa asetusten muutokset raportin yhteyteen.
  • Seuraa ajotiheyttä, HTTP-virheitä ja historian kokoa sekä noudata sovellettavia alustan sääntöjä ja tietojen käsittelyvaatimuksia.

Yhteenvetona riittää, että toistat saman haun, tunnistat videot aweme_id-tunnisteella ja vertaat tallennettuja mittareita ajan kuluessa. Näin saat vastauksen rajattuun käytännön kysymykseen: mitkä jo löydetyistä videoista ovat muuttaneet julkisia laskureitaan kahden tarkistuksen välillä? Samalla alkuperäiset tiedot säilyvät tarkastusta ja jatkokäsittelyä varten.

Ihmiset

Tämän artikkelin luettelossa ei ole vielä ihmisiä.

Jatka lukemistaTikTok-sisällöntuottajien aiheiden analysointi: käytännön Python-työnkulku
Lue seuraava artikkeli

Muuta lukemasi toimivaksi integraatioksi

Tutustu jsonscraperin sosiaalisen datan rajapintoihin, testaa pyyntöjä ja rakenna seuraava työnkulkusi.

Tutki API:t