אם לקוחות שואלים את אותה שאלה בכמה סרטוני TikTok, כדאי שלצוות התמיכה תהיה רשימה של הסרטונים המקוריים והניסוחים שאפשר לבדוק. אפשר להתחיל באיסוף תוצאות חיפוש עבור כמה שאילתות, באיחוד לפי מזהה הסרטון ובהעברת המדגם לתיוג ידני.
להלן סקריפט Python שאוסף את התוצאות שהוחזרו ויוצר קובץ CSV עם קישורים, תיאורי הסרטונים וביטויי החיפוש שבאמצעותם נמצא כל סרטון. הוא עוזר לזהות חפיפות בין חיפושים, אך אינו מזהה בעצמו שאלות הדומות זו לזו מבחינה סמנטית. את ההחלטה הזאת מקבל מומחה, או מסווג נפרד שתוצאותיו נבדקות לאחר מכן.
על איזו שאלה האיסוף אמור לענות
נניח שהצוות מוכר ספל תרמי ורוצה להבין מה שואלים עליו בסרטונים ציבוריים. השאילתה „ספל תרמי דולף” עשויה להחזיר סרטוני תלונות, סקירות והדרכה. השאילתה „איך מנקים ספל תרמי” תניב מדגם אחר. כמה ביטויים יוצרים אוסף דוגמאות עבודה שאפשר לבדוק לצורכי תמיכה ותכנון תוכן.

תוצאת הסקריפט היא טבלה שבה לכל רשומה יש מזהה פרסום, תיאור, קישור ורשימת ביטויי החיפוש שבהם הופיעה. הופעת אותו סרטון בכמה תוצאות חיפוש מעידה על חפיפה ביניהן, אך עדיין אינה מוכיחה שבסרטון נשאלה שאלה חוזרת. כדי ליצור תור עבודה של שאלות, פתחו את הקישורים, בדקו את ההקשר ושייכו נושא לניסוחים שאומתו.
התהליך הזה שימושי למפתח שמבצע אוטומציה לאיסוף ולאנליסט שזקוק למאגר שניתן לשחזר ולנתח. הקישור לסרטון המקורי מאפשר לבדוק את המסקנה לפני שמשנים הוראות או מכינים חומר חדש.
אילו נתונים החיפוש מחזיר
הנתיב /searchVideo והפרמטרים שלו מפורטים במדריך TikTok API. הפרמטר keyword הוא חובה; בין הפרמטרים הנוספים מופיעים count, cursor, region, date_posted, sort_by ו-cache_timeout. הבקשה מאומתת באמצעות הפרמטר license_key. בדוגמה שלהלן נעשה שימוש בביטוי ובגודל העמוד.
במבנה התשובה שנבדק יש status ברמה העליונה ואובייקט tiktok. לפריטים עשויים להיות מזהים, תיאור, קישור, פרטי מחבר ונתונים סטטיסטיים, ובהם צפיות ותגובות. שדות מסוימים עשויים להיעדר; לכן ערכים כאלה נשארים ריקים בקובץ ה-CSV ואינם הופכים לאפס.
תשובת החיפוש תומכת בשני מבנים: הפריטים עשויים להופיע ב-aweme_list או בתוך search_item_list[].aweme_info. המנרמל מטפל בשתי האפשרויות. הקוד גם בודק שקיים אובייקט tiktok, כדי לא לפרש מבנה תשובה בלתי צפוי כתוצאות חיפוש ריקות שהוחזרו בהצלחה.
סקריפט איסוף מוכן ב-Python
הדוגמה תואמת ל-Python 3.8 ומעלה ולספריית requests. היא שולחת בקשה אחת לכל ביטוי, בודקת את תגובת HTTP ואת מצב ה-API, מאחדת רשומות לפי מזהה, שומרת את ביטויי החיפוש שתאמו וכותבת קובץ CSV. המפתח נקרא ממשתנה סביבה ואינו מוצג.

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)
התקינו את התלות באמצעות הפקודה python -m pip install requests, הגדירו את JSONSCRAPER_TIKTOK_LICENSE_KEY בסביבת התהליך והפעילו את הקובץ. אל תכללו את המפתח בקוד המקור, בקובץ CSV או ביומנים. כדי לתזמן הרצות, הפעילו את הסקריפט בסביבה מאובטחת שבה המשתנה זמין למשימה.
איך להפוך את קובץ ה-CSV לתור עבודה של שאלות
לאחר האיסוף, פתחו את הסרטונים, סמנו ידנית שאלות ממשיות וקבצו את הניסוחים שאומתו לפי נושאים, למשל „אטימות”, „תחזוקה” או „שמירה על חום”. ביטוי החיפוש עוזר למצוא את הפרסום, אך תיאור הסרטון והחפיפה בין שאילתות אינם תחליף לבדיקת ההקשר.
אם אתם משתמשים במודל שפה, העבירו לו את תיאור הסרטון ובקשו שיציע תווית נושא קצרה ושאלה אפשרית. שמרו לצדו את הטקסט המקורי, הקישור ותוצאת המודל, כדי שמומחה יוכל לבדוק את הבסיס לסיווג. אל תציגו ניסוח שהמודל הציע כשאלה מילולית אם הוא אינו מופיע בתיאור.
מספר הרשומות שנמצאו מתאר רק את התוצאות שהוחזרו עבור שאילתות מסוימות. הוא אינו מודד את היקף הדיונים או את הביקוש כולו. לצורך דיווח פנימי, שמרו את תאריך ההרצה, את הביטוי המקורי, את המזהה ואת תשובת ה-API הגולמית. כך תוכלו להשוות תוצאות של הרצות חוזרות ולסמן בנפרד מזהים חדשים.
בדוגמה אין בכוונה עימוד אוטומטי. עבור העמודים הבאים, התיעוד מציין את הפרמטר cursor; את הערך שלו לוקחים מהתשובה הקודמת ומעבירים הלאה ללא שינוי. עמוד אחד מציג רק את קבוצת התוצאות שהתקבלה, ולא את כל תוצאות החיפוש.
מה הצוות יראה
הקובץ tiktok_questions.csv מכיל שורה אחת לכל מזהה ייחודי שנמצא באמצעות הביטויים שהוגדרו. העמודה matched_queries מציגה באילו שאילתות הופיע הסרטון. זו דרך נוחה לזהות חפיפות בין תוצאות חיפוש ולבחור דוגמאות לבדיקה; את השאלות יש לסווג בנפרד.
לאחר מכן אפשר לשלב את קובץ ה-CSV באוטומציה שבועית: מתזמן מפעיל את האיסוף, מאגר הנתונים שומר תמונת מצב, ונשלחת התראה כשמופיע מזהה שעדיין אינו ביומן. זהו היגיון של תזמור חיצוני, ולא תכונה של נקודת הקצה לחיפוש. הצוות מקבל תור של קישורים לניתוח, ולא מסקנה מוכנה על הסיבות להתנהגות הלקוחות.
פרמטרי הנתיבים זמינים בתיעוד ה-API; אפשר לנסות בקשה בסביבת ההדגמה של TikTok API. לפני איסוף קבוע, בדקו את מבנה התשובה בפועל ושמרו את הערכים הדרושים כדי להגיע מסיכום לסרטון מסוים. תיאור המוצר מופיע בעמוד TikTok Scraper API.
התוצאה השימושית היא אוסף סרטונים שניתן לבדוק ושקשור לביטויי חיפוש מסוימים. הוא עוזר לבחור חומרים לניתוח ידני ולשמור את המקורות לכל נושא שאושר לתוכנית התוכן.