إذا طرح المشترون السؤال نفسه في عدة مقاطع فيديو على 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.
والنتيجة المفيدة هي مجموعة قابلة للتحقق من مقاطع الفيديو المرتبطة بعبارات بحث محددة. وهي تساعد على اختيار مواد للمراجعة اليدوية والاحتفاظ بمصادر كل موضوع يُعتمد لإدراجه في خطة المحتوى.