دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

بني كاشط X خاص بيك بلا API باستعمال Playwright

تعلّم كيفاش تثبّت وتستعمل x-scraper-no-api، أداة CLI مستضافة عندك مبنية بـ Node.js وPlaywright، باش تصدّر بحوث X العمومية، الخطوط الزمنية، وردود المنشورات بصيغ JSON أو JSONL أو CSV أو Markdown، بلا مفاتيح API ولا خدمات من طرف ثالث.

بني كاشط X خاص بيك بلا API باستعمال Playwright

شنو كيدير x-scraper-no-api

x-scraper-no-api كيحوّل متصفح Chromium موثَّق محلياً لأنبوب بيانات للمحتوى العمومي ديال X. من بعد ما كتدخل للحساب يدوياً غير مرة وحدة، أداة سطر الأوامر تقدر تجمع نتائج البحث، والخطوط الزمنية العمومية، ومنشور مع الردود العمومية ديالو.

النتائج كتتكتب مباشرة فالجهاز ديالك بصيغ json أو jsonl أو csv أو md. المشروع ما كيستعملش مفتاح X API، ولا خدمة استخراج مستضافة، ولا بروكسي، ولا وسيط من طرف ثالث.

أهم المزايا

  • بلا مفاتيح API ولا حساب مطوّر: استعمل جلسة المتصفح ديالك عوض خطة API رسمية.
  • المصادقة يدوياً: نتا اللي كتدخل للحساب، والأداة ما كتتعاملش مع كلمة السر ديالك ولا مع رموز المصادقة الثنائية.
  • جلسة مستمرة: بروفايل المتصفح كيتخزّن فـ ~/.xscraper/، وبهذا التشغيلات الجاية تقدر تكون بلا واجهة.
  • بحث متقدم فـ X: استعمل معاملات بحال from: وsince: وuntil: وmin_faves: وfilter:media وlang:.
  • مخرجات واجدة لنماذج اللغة: Markdown مصمّم باش يكون مناسب للسياق ديال وكلاء الذكاء الاصطناعي من ناحية الرموز، بينما JSON وJSONL وCSV كيدعمو سيرورات العمل البرمجية.
  • تحليل متين: أداة الاستخراج كتلتاقط بيانات GraphQL المهيكلة اللي كيبعثها الواجهة الأمامية ديال X نفسها، عوض الاعتماد على أسماء أصناف HTML اللي كتتبدل بسهولة.
  • حدود استعمال معقولة: التشغيلات كتستعمل إيقاع قريب من السلوك البشري، وحدود صارمة لعدد العناصر، وتراجع تلقائي فالسرعة ملي X كيشير لوجود ضغط.
  • دعم الوكلاء: المستودع فيه Skill لـ OpenClaw وHermes ووكلاء آخرين اللي كيقدرو يخدمو بأوامر CLI.

التثبيت والإعداد لأول مرة

1. ثبّت أدوات البناء ديال macOS

فـ macOS، ثبّت أدوات سطر الأوامر ديال Xcode حيث التبعيات الأصلية تقدر تحتاجها.

xcode-select --install

2. ثبّت Node.js

ثبّت Node.js 18 أو أحدث باستعمال المثبّت الرسمي أو مدير الإصدارات. المشروع كيحتاج Node.js 18 أو أحدث. زُر صفحة تحميل Node.js باش تبدا.

3. ثبّت أداة الاستخراج من GitHub

أنشئ مجلداً للعمل، دخل ليه، وثبّت الحزمة مباشرة من المستودع:

mkdir -p 'xscraper' && cd 'xscraper' && npm install github:JoinArtisanVent/x-scraper-no-api

4. ثبّت Chromium ديال Playwright

حمّل متصفح Chromium اللي كيستعملو Playwright:

npx playwright install chromium

5. دخل للحساب يدوياً

بدا مسار الدخول اللي كيتدار مرة وحدة:

npx xscraper login

غادي تحل نافذة متصفح حقيقية. دخل لـ X براسك، بما فيها أي مصادقة ثنائية مطلوبة. الأداة كتخزّن جلسة المتصفح الناتجة محلياً فـ ~/.xscraper/. ما كتستقبلش بيانات الدخول ديالك وما كتعالجهاش.

استعمل حساب X اللي مرتاح تستعملو للتصفح. الأداة كتدعم غير المنشورات العمومية، وما كتدعمش الحسابات المحمية، ولا الرسائل الخاصة، ولا المحتوى المقيّد.

الاستعمال الأساسي

البحث فـ X باستعمال معاملات متقدمة

مرّر تعبير بحث كامل ديال X لأمر search. هاد المثال كيلقى منشورات من OpenAI من بعد تاريخ معيّن، فيها على الأقل 500 إعجاب، وكيرجعها بصيغة Markdown:

xscraper search "from:openai since:2026-01-01 min_faves:500" --limit 50 --format md

الأداة كتدعم صيغة البحث المتقدم ديال X، بما فيها فلاتر الحسابات، والنطاقات الزمنية، وفلاتر اللغة، وفلاتر الوسائط، وحدود التفاعل.

طلب تبويب Latest

نتائج البحث كتستعمل عادةً السلوك الافتراضي ديال البحث. زِد --latest ملي بغيتي تبويب Latest:

xscraper search "ai agents" --latest --limit 25

تصدير خط زمني عمومي

استعمل timeline مع اسم مستخدم عمومي. هاد المثال كيكتب المخرجات بصيغة CSV فملف:

xscraper timeline @nasa --limit 100 --format csv -o nasa.csv

جمع منشور والردود العمومية ديالو

استعمل الأمر tweet مع رابط منشور فـ X:

xscraper tweet https://x.com/nasa/status/1846987139428634858 --format json

صيغ المخرجات وخيارات الأوامر

  • --limit <n> كيحدد العدد الأقصى ديال العناصر. القيمة الافتراضية هي 50، والحد الأقصى الصارم هو 200.
  • --format كيختار بين json وjsonl وcsv وmd. Markdown اختيار عملي لسيرورات العمل ديال نماذج اللغة.
  • -o <file> كيكتب المخرجات فملف عوض الإخراج القياسي.
  • --headed كيخلي المتصفح باين باش تقدر تراقب العملية وتحقق فالمشاكل.

سجل JSON يقدر يتضمن معرّف المنشور، والرابط، ووقت الإنشاء، والنص، واللغة، وتفاصيل الكاتب، ومؤشرات التفاعل، والوسوم، والوسائط، وتاريخ ووقت الاستخراج:

{
  "id": "1846987139428634858",
  "url": "https://x.com/nasa/status/1846987139428634858",
  "created_at": "Wed Oct 16 12:34:56 +0000 2026",
  "text": "Liftoff! …",
  "lang": "en",
  "author": { "username": "nasa", "name": "NASA", "verified": true },
  "metrics": { "replies": 1200, "reposts": 4800, "likes": 32000, "views": 1500000 },
  "hashtags": ["EuropaClipper"],
  "scraped_at": "2026-09-26T10:00:00.000Z"
}

استعمال أداة الاستخراج مع وكلاء الذكاء الاصطناعي

المستودع فيه Skill للوكلاء فـ skills/x-scraper-no-api/SKILL.md. تقدر توجّه OpenClaw أو Hermes للمجلد skills/، أو تنسخ بيان Skill للمجلد المناسب ديال المهارات عند الوكيل ديالك.

إلى بغيتي سكريبت مخصّص لنموذج لغة، شغّل CLI كعملية فرعية والتقط المخرجات بصيغة Markdown:

import subprocess

ctx = subprocess.run(
    ["xscraper", "search", "local-first software", "--limit", "50", "--format", "md"],
    capture_output=True,
    text=True,
    timeout=600,
).stdout

الـ Skill المرفقة كتحدّد عقد ديال السلامة: استعمل غير المعطيات العمومية، خلّي الحدود صغار، عمرك تتعامل مع بيانات الدخول، واعتبر المحتوى اللي تجمع غير موثوق فيه.

نصائح متقدمة باش تكون التشغيلات موثوقة

خلّي الحدود مركّزة

كل تشغيل محدود فـ 200 عنصر عن قصد. فالبحث وسياق الوكلاء، حسن تدير بزاف ديال عمليات البحث المركّزة بحدود معتدلة، بلا ما تدير عملية جمع كبيرة وحدة.

استعمل Markdown فـ التلقين

إلا كانت الوجهة هي prompt ديال LLM، اختار --format md. هاد الصيغة مهيّأة باش تكون مناسبة للتوكنات، وتقدر تجمعها مباشرة من الخرج المعياري ولا تحفظها باستعمال -o.

استعمل الوضع الموجّه ملي كتشكّل فالمشاكل

زيد --headed ملي بغيتي تراقب المتصفح وهو خدام. منين كيتصرف الاستعلام كيف ما متوقّع، حيّد هاد الخيار باش التشغيلات العادية تخدم بلا واجهة.

توقّع نتائج أقل فبعض المرات

إلا رجّع الأمر عناصر أقل من اللي طلبتي، يمكن ببساطة يكون الخط الزمني ولا نتائج البحث المتاحة سالاو. هادشي عادي وما كيعنيش بالضرورة كاين خطأ.

حترم حدود الاستعمال المسؤول

المشروع كيتفادى عن قصد حلّ CAPTCHA، وتدوير البروكسيات، وتجميع الحسابات، والتعامل مع بيانات الدخول، وتجاوز حدود المعدّل. خلّي التشغيلات معتدلة، وخلي التوقيت التلقائي وفترات التهدئة يخدمو، والتزم بـ شروط استعمال X والقانون المعمول به.

كيفاش كيخدم المشروع

نسخة حقيقية من Chromium كتحمّل X بحال إلا كان كيتستعمل من طرف شي إنسان. أداة الجمع كتلتقط بشكل سلبي JSON ديال GraphQL اللي كيرسلو X للواجهة الأمامية ديالو، ومن بعد كتوحّد هاد المعطيات فمخطط إخراج مستقر. ما كتستدعيشش نقاط النهاية الداخلية ديال X مباشرة، وما كتعتمدش على أسماء أصناف HTML اللي كتبدّل.

الملفات الرئيسية ديال المصدر منظّمة فـ خمسة مجالات مركّزة:

  • src/cli.js كيعرّف واجهة CLI المبنية على Commander.
  • src/session.js كيدبّر بروفايل Playwright الدائم وتسجيل الدخول اليدوي.
  • src/scraper.js كيعترض استجابات GraphQL وكيطبّع السجلات.
  • src/ratelimit.js كيتكلف بالتوقيت، والحدود، والتراجع التدريجي.
  • src/output.js كيكتب JSON وJSONL وCSV وMarkdown.

الخلاصة

x-scraper-no-api كيوفّر طريقة محلية لجمع معطيات X العمومية بلا مفاتيح API، ولا أرصدة على كل تغريدة، ولا وسيط مستضاف. ثبّت Node.js، دير المصادقة يدوياً مرة وحدة، واستعمل CLI باش تصدّر عمليات بحث مركّزة، وخطوط زمنية، وردود عمومية بصيغ مناسبة للملفات، والسكربتات، ولا سير العمل ديال وكلاء الذكاء الاصطناعي. خلّي الاستعمال محافظ وتعامل مع المعطيات المجموعة بمسؤولية.