Jeśli klienci rozmawiają o Twoim produkcie na TikToku, wyszukiwanie nazwy marki może dostarczyć zespołowi materiału do stworzenia listy powtarzających się pytań. Praktycznym rezultatem jest plik CSV z opisem filmu, autorem, linkiem i dostępnymi wskaźnikami reakcji. Taki plik można przekazać specjalistom obsługi klienta albo wykorzystać jako dane wejściowe do klasyfikacji tematycznej.

Jako przykład przyjmijmy pytanie „jak korzystać z ekspresu do kawy Acme”. Poniższy skrypt wykonuje jedno zapytanie do wyszukiwarki TikToka, starannie wyodrębnia filmy z dwóch udokumentowanych wariantów struktury odpowiedzi i zapisuje znalezione wyniki. Następnie zespół ręcznie sprawdza opisy, łączy podobne sformułowania i przekształca je w tematy FAQ lub wskazówki do karty produktu.
Dlaczego warto zamienić wyniki wyszukiwania w tabelę
Ręczne przeglądanie wyników wyszukiwania utrudnia ponowną weryfikację: trzeba ponownie odnajdywać wyniki, a notatki często pozostają w przeglądarce lub korespondencji. Zapisywana tabela zapewnia wspólną listę roboczą: każdy rekord zawiera identyfikator filmu, link, opis, autora i dostępne wskaźniki. Ponowne uruchomienie można zaplanować, a archiwum JSON pomoże ustalić, co dokładnie zwróciło API podczas konkretnego uruchomienia.
Warto pamiętać o ograniczeniu tej metody: wyszukiwanie zwraca wyniki znalezione dla danego zapytania, a nie gwarantowany, kompletny katalog wszystkich wzmianek. Tabela nadaje się więc do wyszukiwania przykładów i obserwowania powtarzających się pytań; wnioski o częstotliwości warto poprzeć ponownymi uruchomieniami i ręczną weryfikacją.
Co zwraca wyszukiwanie
W dokumentacji TikTok Scraper API trasa /searchVideo wymaga parametru keyword. Wśród obsługiwanych parametrów wymieniono również count, cursor, date_posted, sort_by i region. W tym scenariuszu wystarczy zapytanie ze słowem kluczowym i liczba wyników.
Odpowiedź zawiera zewnętrzny status i obiekt tiktok. W sprawdzonym schemacie filmy mogą znajdować się w aweme_list albo w elementach search_item_list, wewnątrz pola aweme_info. Kod obsługuje obie formy i wyodrębnia tylko pola rzeczywiście obecne w odpowiedzi. Zależnie od wyniku mogą być dostępne: identyfikator filmu, opis, link, nazwa i ID autora, data publikacji, a także liczniki wyświetleń, polubień, komentarzy i udostępnień.
Prosty skrypt pobierający dane w Pythonie
Zainstaluj bibliotekę requests i ustaw klucz w zmiennej środowiskowej JSONSCRAPER_TIKTOK_LICENSE_KEY. Kod jest zgodny z Pythonem 3.8 lub nowszym. Zapisuje surową odpowiedź w formacie JSON, a znormalizowane rekordy w pliku CSV. Klucz jest przekazywany w żądaniu, ale nie jest wyświetlany na ekranie.
import csv
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme кофемашина"
response = requests.get(
"https://tiktok.evelode.com/searchVideo",
params={
"license_key": API_KEY,
"keyword": KEYWORD,
"count": 30,
"region": "US",
},
timeout=60,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API zwróciło nieoczekiwany status zewnętrzny")
tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for result in tiktok.get("search_item_list") or []:
video = result.get("aweme_info")
if video:
items.append(video)
# Usuwamy duplikaty, zachowując kolejność pierwszego wystąpienia.
unique = {}
for item in items:
video_id = item.get("aweme_id")
if video_id:
unique.setdefault(video_id, item)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("data").mkdir(exist_ok=True)
Path(f"data/raw-{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8"
)
columns = [
"video_id", "description", "share_url", "author", "author_id",
"created_at", "views", "likes", "comments", "collected_at"
]
with open("data/videos.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=columns)
writer.writeheader()
for item in unique.values():
author = item.get("author") or {}
stats = item.get("statistics") or {}
created = item.get("create_time")
writer.writerow({
"video_id": item.get("aweme_id"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"author_id": author.get("uid"),
"created_at": created,
"views": stats.get("play_count"),
"likes": stats.get("digg_count"),
"comments": stats.get("comment_count"),
"collected_at": stamp,
})
print(f"Zapisane rekordy: {len(unique)}")
Zależność można zainstalować poleceniem python -m pip install requests. Jeśli w danym rekordzie brakuje pola, kod pozostawia odpowiednią komórkę pustą. W przypadku wskaźników ma to istotne znaczenie: pusta wartość oznacza, że pole nie zostało zwrócone, i nie jest zastępowana zerem.
Jak przekształcić plik CSV w użyteczną listę pytań
Pierwszy etap to filtrowanie opisów pod kątem treści. Można wyszukiwać słowa takie jak „jak”, „dlaczego”, „nie działa”, nazwę modelu i charakterystyczne nazwy części. Taki filtr tworzy kolejkę do weryfikacji redakcyjnej, ale sam w sobie nie pozwala ustalić intencji autora: wzmianka o marce może być recenzją, żartem albo pytaniem o zgodność.
Do grupowania tematycznego przekazuj klasyfikatorowi tylko niezbędne pola tekstowe: opis i, jeśli jest to przydatne w danym zadaniu, pozbawiony danych osobowych identyfikator rekordu. Poproś o przypisanie stałych kategorii, na przykład „pierwsze uruchomienie”, „czyszczenie”, „zgodność”, „usterka” i „zakup”. Zachowuj oryginalny opis obok kategorii, aby pracownik mógł sprawdzić przypisanie i poprawić ewentualny błąd.
Raport roboczy może zawierać temat, liczbę znalezionych przykładów, linki do kilku reprezentatywnych filmów i osobną kolumnę „sprawdzone przez człowieka”. Liczba przykładów w zebranym zestawie opisuje wyniki tego zapytania i okresu zbierania danych; nie jest równa odsetkowi wszystkich klientów, którzy mają dany problem.
Paginacja i regularne uruchamianie
Jeśli potrzebna jest kolejna strona wyników, dokumentacja wskazuje parametr cursor do przewijania: przekaż wartość kursora z poprzedniej odpowiedzi w następnym żądaniu. Traktuj go jako nieprzejrzysty token i zakończ pobieranie, gdy w odpowiedzi nie będzie już wyników albo API poinformuje o braku kolejnej strony. W ograniczonym pilotażu warto zacząć od jednego zapytania, sprawdzić skład wyników i dopiero potem dodać paginację.
Aby zbieranie danych odbywało się regularnie, uruchamiaj skrypt zgodnie z harmonogramem za pomocą narzędzia systemowego lub CI. Dla każdego uruchomienia zapisuj osobny plik JSON z surową odpowiedzią i dodawaj do tabeli czas zebrania danych. Gromadząc historię, usuwaj duplikaty według ID filmu, ale zapisuj kolejne migawki osobno, jeśli zadanie obejmuje śledzenie zmieniających się liczników. Porównywanie liczników ma sens tylko wtedy, gdy dostępnych jest kilka migawek tego samego rekordu.
Przechowuj klucz w menedżerze sekretów CI lub zmiennej środowiskowej, ogranicz dostęp do archiwum i ustal wewnętrzny okres przechowywania danych. Przed przekazaniem materiałów do systemu klasyfikacji sprawdź, które pola są mu rzeczywiście potrzebne. Ogranicza to niepotrzebne kopiowanie danych użytkowników i ułatwia kontrolę dostępu.
Jakie korzyści przynosi to zespołowi
Po uruchomieniu będziesz mieć archiwum surowej odpowiedzi oraz plik CSV ze znalezionymi filmami i dostępnymi polami. Zespół obsługi klienta będzie mógł sprawdzać linki i zbierać powtarzające się pytania; marketing — poznawać sformułowania, którymi odbiorcy opisują swoje potrzeby; analityk — ponawiać zbieranie danych i porównywać obserwacje z różnych dat.

Na początek użyj wąskiego zapytania z nazwą produktu i konkretnym problemem, ręcznie sprawdź 20–30 znalezionych rekordów i dopracuj słownik kategorii. Następnie możesz dodać kilka zapytań tematycznych, harmonogram i eksport do arkusza lub bazy danych. Możliwości trasy i parametry opisano w opisie TikTok Scraper API; zanim zbudujesz szerszy monitoring, zacznij od sprawdzenia wybranego zapytania.