Jos asiakkaat esittävät saman kysymyksen useissa TikTok-videoissa, tukitiimin kannattaa saada luettelo alkuperäisistä videoista ja ilmauksista, jotka voidaan tarkistaa. Työn voi aloittaa keräämällä hakutuloksia useilla kyselyillä, yhdistämällä ne videoiden tunnisteiden perusteella ja toimittamalla aineiston manuaalisesti luokiteltavaksi.
Alla oleva Python-skripti kerää palautetut tulokset ja luo CSV-tiedoston, jossa on linkit, videoiden kuvaukset ja hakulausekkeet, joilla kukin video löytyi. Sen avulla voi nähdä hakujen päällekkäisyydet; se ei kuitenkaan itsessään tunnista semanttisesti samankaltaisia kysymyksiä. Tämän arvioi asiantuntija tai erillinen luokitin, minkä jälkeen tulos tarkistetaan.
Mihin kysymykseen keruun pitäisi vastata
Oletetaan, että tiimi myy termosmukia ja haluaa selvittää, mistä julkisissa videoissa kysytään. Haku ”termosmuki vuotaa” voi palauttaa valituksia, arvosteluja ja ohjeita sisältäviä videoita. Haku ”miten termosmuki pestään” tuottaa toisenlaisen aineiston. Useat ilmaukset muodostavat esimerkkijoukon, jota voi hyödyntää tuen ja sisältösuunnitelman tarkastelussa.

Skriptin tuloksena on taulukko, jonka rivillä on julkaisun tunniste, kuvaus, linkki ja luettelo hakulausekkeista, joilla julkaisu löytyi. Videon löytyminen useista hakutuloksista kertoo tulosten päällekkäisyydestä, mutta ei vielä todista, että videossa esitetään toistuva kysymys. Kysymysjonon laatimiseksi avaa linkit, tarkista konteksti ja anna vahvistetuille ilmauksille aihe.
Tällainen prosessi sopii kehittäjälle, joka automatisoi keruun, sekä analyytikolle, joka tarvitsee toistettavan aineiston tarkasteltavaksi. Yhteys alkuperäiseen videoon auttaa varmistamaan johtopäätöksen ennen ohjeen muuttamista tai uuden materiaalin valmistelua.
Mitä tietoja haku palauttaa
Reitti /searchVideo ja sen parametrit on lueteltu TikTok API -ohjeessa. Pakollinen parametri on keyword; valinnaisiin parametreihin kuuluvat count, cursor, region, date_posted, sort_by ja cache_timeout. Pyyntö tunnistetaan license_key-parametrilla. Alla olevassa esimerkissä käytetään hakulausetta ja sivun kokoa.
Tarkistetussa vastausmuodossa on ylimmän tason status ja objekti tiktok. Tuloksissa voi olla tunnisteita, kuvauksia, linkkejä, tekijätietoja ja tilastoja, kuten katselu- ja kommenttimääriä. Yksittäisiä kenttiä voi puuttua, joten CSV-tiedostossa ne jätetään tyhjiksi sen sijaan, että ne muutettaisiin nolliksi.
Hakuvastaus tukee kahta rakennetta: tulokset voivat olla joko kentässä aweme_list tai kentän search_item_list[].aweme_info sisällä. Normalisoija käsittelee molemmat vaihtoehdot. Koodi tarkistaa myös tiktok-objektin olemassaolon, jotta odottamatonta vastausrakennetta ei tulkita onnistuneeksi, tyhjäksi tulokseksi.
Valmis Python-kerääjä
Esimerkki toimii Python 3.8+:lla ja requests-kirjastolla. Se lähettää yhden pyynnön kutakin hakulausetta kohden, tarkistaa HTTP-vastauksen ja API:n tilan, yhdistää tietueet tunnisteen perusteella, tallentaa osuneet hakulausekkeet ja kirjoittaa CSV-tiedoston. Avain luetaan ympäristömuuttujasta eikä sitä tulosteta.

import csv
import os
import sys
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
QUERIES = [
"термокружка протекает",
"как мыть термокружку",
"термокружка не держит тепло",
]
if not KEY:
sys.exit("Задайте JSONSCRAPER_TIKTOK_LICENSE_KEY")
def extract_items(payload):
data = payload.get("tiktok")
if not isinstance(data, dict):
raise RuntimeError("В ответе отсутствует объект tiktok")
items = list(data.get("aweme_list") or [])
for entry in data.get("search_item_list") or []:
video = entry.get("aweme_info") if isinstance(entry, dict) else None
if isinstance(video, dict):
items.append(video)
return items
rows = {}
for query in QUERIES:
response = requests.get(
BASE_URL,
params={"license_key": KEY, "keyword": query, "count": 20},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("API вернул статус, отличный от ok")
for item in extract_items(payload):
video_id = item.get("aweme_id")
if not video_id:
continue
stats = item.get("statistics") or {}
author = item.get("author") or {}
row = rows.setdefault(video_id, {
"video_id": video_id,
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"play_count": stats.get("play_count"),
"comment_count": stats.get("comment_count"),
"matched_queries": set(),
})
row["matched_queries"].add(query)
fields = ["video_id", "description", "share_url", "author",
"play_count", "comment_count", "matched_queries"]
with open("tiktok_questions.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
for row in rows.values():
output = dict(row)
output["matched_queries"] = " | ".join(sorted(row["matched_queries"]))
writer.writerow(output)
Asenna riippuvuus komennolla python -m pip install requests, aseta JSONSCRAPER_TIKTOK_LICENSE_KEY prosessin ympäristöön ja suorita tiedosto. Älä lisää avainta lähdekoodiin, CSV-tiedostoon tai lokeihin. Ajastettua suoritusta varten aja skripti suojatussa ympäristössä, jossa muuttuja on tehtävän käytettävissä.
Näin muutat CSV:n kysymysjonoksi
Avaa keruun jälkeen videot ja poimi niistä todelliset kysymykset manuaalisesti. Ryhmittele sitten vahvistetut ilmaukset aiheittain, esimerkiksi ”tiiviys”, ”hoito” tai ”lämmön säilyminen”. Hakulauseke auttaa löytämään julkaisun, mutta videon kuvaus ja osumat hakutuloksissa eivät korvaa kontekstin tarkistamista.
Jos käytät kielimallia, anna sille kuvaus ja pyydä ehdottamaan lyhyttä aihemerkintää sekä mahdollista kysymystä. Tallenna alkuperäinen teksti, linkki ja mallin tulos vierekkäin, jotta asiantuntija voi tarkistaa luokittelun perusteet. Älä esitä mallin ehdottamaa muotoilua sanatarkkana kysymyksenä, ellei sitä löydy kuvauksesta.
Löydettyjen tietueiden määrä kuvaa vain kyseisten hakujen palauttamia tuloksia. Se ei mittaa keskustelujen tai kysynnän kokonaismäärää. Tallenna sisäistä raportointia varten suorituksen päivämäärä, alkuperäinen hakulauseke, tunniste ja API:n käsittelemätön vastaus. Näin voit vertailla toistuvien ajojen tuloksia ja merkitä erikseen uudet tunnisteet.
Esimerkissä ei ole tarkoituksella automaattista sivutusta. Seuraavia sivuja varten ohjeissa mainitaan cursor-parametri: sen arvo poimitaan edellisestä vastauksesta ja välitetään eteenpäin muuntamatta sitä. Yksi sivu sisältää vain saadun tulosjoukon, ei kaikkia hakutuloksia.
Mitä tiimi saa
Tiedostossa tiktok_questions.csv on yksi rivi kutakin yksilöllistä tunnistetta kohden, joka löytyi annetuilla hakulausekkeilla. Sarakkeesta matched_queries näkee, millä hauilla video löytyi. Näin on helppo poimia hakutulosten päällekkäisyyksiä ja valita esimerkkejä tarkistettavaksi; kysymysten luokittelu on tehtävä erikseen.
CSV:n voi sen jälkeen ottaa mukaan viikoittaiseen automaatioon: ajastin käynnistää keruun, tallennusjärjestelmä säilyttää tilannekuvan ja ilmoitus lähetetään, kun löytyy tunniste, jota ei vielä ole lokissa. Tämä on ulkoisen orkestroinnin logiikkaa, ei hakupäätepisteen ominaisuus. Tiimi saa analysoitavaksi linkkijonon, ei valmista päätelmää asiakkaiden käyttäytymisen syistä.
Reittien parametrit ovat API-dokumentaatiossa, ja pyyntöä voi kokeilla TikTok API -demoympäristössä. Tarkista ennen säännöllisen keruun aloittamista todellinen vastausrakenne ja tallenna arvot, joita tarvitaan yhteenvedosta yksittäiseen videoon siirtymiseen. Tuotteen kuvaus on TikTok Scraper API -sivulla.
Hyödyllinen lopputulos on tarkistettavissa oleva videosarja, joka liittyy tiettyihin hakuilmauksiin. Sen avulla voi valita aineistoa manuaaliseen tarkasteluun ja säilyttää lähteet jokaiselle sisältösuunnitelmaan valitulle aiheelle.