تخطَّ إلى المحتوى
kazma.
EN نجمة 7 ابدأ الآن

ناشر X

تنشر كاظمة على X فقط عبر official X API v2 باستخدام OAuth 1.0a user context. لا مسار كشط، ولا ناشر عبر Playwright/computer-use، ولا نشر بـ Bearer للتطبيق فقط (يقرأ Bearer؛ لكنه لا يستطيع POST /2/tweets).

أنت تفعلكاظمة تفعل
حساب مطوّر X + Project + Appلا شيء حتى توجد المفاتيح
إعداد User authentication = Read and write في التطبيقترفض بخطأ 403 مع تلميح بذلك
توليد قيم الأربع الخاصة بـ OAuth 1.0aتحفظها في الخزنة عبر Settings → X
وسم الحساب Automatedتذكّرك؛ ولا تستطيع ضبط الوسم عبر الـ API
الموافقة على التغريدات الصادرةأدوات المحادثة دائمًا HITL. على الويب نقرُك في استوديو X (/x) أو /api/scheduled/x هو الموافقة

لا تلصق المفاتيح في المحادثة. فـ vault_store سيضعها في السجل. تكتب Settings → X القيم في connectors.x.* عبر ConfigStore، التي تشفّر api_key / *_secret / access_token في الخزنة.

السطحالمسارما هو
استوديو X/xمؤلّف ومخطِّط X فقط. انشر الآن، جدوِل، أعد الجدولة، قفزات الخيط، احذف تغريدة حيّة، حمّل مسودة محفوظة.
المجدول/scheduledساعة مختلطة: وظائف cron وتغريدات X. زر كل الجداول في الاستوديو يفتح هذه الصفحة عمدًا.
أدوات المحادثةTelegram / Discord / Slack / دردشة الويبx_post / x_schedule_post / x_delete_post / x_cancel_scheduled_post — دائمًا HITL حتى تحت YOLO.

Settings → X للمفاتيح والحدود فقط. التأليف والتخطيط على /x.

  1. developer.x.com → Project + App (الخطة المجانية: مشروع واحد / تطبيق واحد).
  2. إعدادات مصادقة المستخدم → Read and write.
  3. Keys and tokens → API Key وAPI Key Secret وAccess Token وAccess Token Secret.
  4. كاظمة Settings → X → الصق القيم الأربع + @handle → Save → Test (GET /2/users/me).
  5. فعّل النشر. افتح استوديو X (/x) للكتابة والجدولة.

متغيرات بيئة اختيارية (تتجاوز ConfigStore عند ضبطها): X_API_KEY، X_API_KEY_SECRET، X_ACCESS_TOKEN، X_ACCESS_TOKEN_SECRET. مفاتيح الإيقاف: KAZMA_X_POST=0 (كل النشر)، KAZMA_X_SCHEDULE=0 (الجدولة فقط).

سطح المشغّل على الويب. صفحة Alpine xStudioPage() (static/js/x_studio.js)؛ نصوص EN/AR في i18n/catalog/x_studio.py. الطلبات المُغيِّرة ترسل X-Requested-With وتمرّ بفحص CSRF Origin.

المؤلّف

  • معاينة شروط الاستخدام مباشرة من evaluate_post (280 حرفًا، حدود @ / # / $) — بلا شبكة وبلا سجل (POST /api/x/preview).
  • انشر الآنpublish_x_post (POST /api/x/post). نقرك هو الموافقة.
  • جدوِلbook_x_post (POST /api/scheduled/x). تُحجز الحصص وهاش التكرار لـ 30 يومًا عند الحجز.
  • رد على يقبل معرّف تغريدة أو رابط x.com/…/status/…. بعد نشر ناجح يقفز المؤلّف إلى المعرّف الجديد ليكون الإرسال التالي قفزة خيط. مسح الخيط يلغيه.
  • استخدم على مسودة save_proposal يختم proposal_id. عند النشر أو الجدولة النص المخزَّن يفوز على ما في الصندوق؛ ثم تُعلَّم المسودة منشورة. تعديل الصندوق بعد «استخدم» يمسح المعرّف على العميل. معرّف مجهول يعيد 400.

المخطِّط (X فقط)

  • التغريدات القادمة مع حقل datetime-local + إعادة جدولة (PUT /api/scheduled/x/{id}) وإلغاء.
  • صفوف المنشور: افتح على X، رد (يحمّل المعرّف في المؤلّف)، حذف (POST /api/x/delete — تأكيد أولًا). أداة المحادثة x_delete_post ما تزال HITL دائمًا.
  • المسودات من GET /api/x/drafts.
  • التدقيق من GET /api/x/audit (x_audit.db).
  • كل الجداول/scheduled (cron + X معًا). قائمة الاستوديو تبقى X فقط حتى لا تجلس تذكرة بجانب تغريدة.

ليس في هذا الإصدار: وسائط، استطلاعات، اقتباس، إعجاب، متابعة، رسائل، كشط، تغريدات متطابقة متكررة، واجهة جدولة أصلية من X.

صمّامات الأمان (قواعد وشروط X)

Section titled “صمّامات الأمان (قواعد وشروط X)”

هذه سقوف من كاظمة فوق حصة X الخاصة. تفشل مغلقةً.

الحارسالافتراضيالسبب
HITL دائم (ALWAYS_HITL_TOOLS)x_post، x_delete_post، x_schedule_post، x_cancel_scheduled_postأدوات المحادثة: يرى الإنسان النص الحرفي. لا يمكن لـ YOLO تجاوزها. استوديو الويب لا يستدعي هذه الأدوات — نقرة المشغّل هي الموافقة.
الـ API الرسمي فقطPOST /2/tweetsالأتمتة تستخدم الـ API، لا الموقع.
لا أفعال إضافيةلا إعجاب / متابعة / رسالة / بحثالبقاء داخل النشر.
لا إعادة محاولة للكتابةانقطاع الشبكة ≠ POST ثانٍتجنّب التغريدة المزدوجة.
الطول280 حرفًاتغريدات نص الخطة المجانية.
@mentionsحد أقصى 2 (باستثناء حسابك)منع الإشارات غير المطلوبة.
$cashtagsحد أقصى 1منع إغراق الرموز.
الهاشتاغاتحد أقصى 4منع حشو الوسوم.
هاش التكرار30 يومًانُسخ آلية متطابقة.
الحجم8/يوم، 80/30 يومأقل بكثير من ~500/شهر في الخطة المجانية.
User-AgentKazma/<ver> (self-hosted; official X API v2)X يتطلب UA.

الوسائط والاستطلاعات واقتباس التغريدات ورفع v1.1 ليست في هذا الإصدار.

الأداةHITLماذا
x_statusلاهل هي مُعدَّة؟ المقبض، الحصص المتبقية. لا تُرجع أسرارًا أبدًا.
x_postدائمًاtext، وreply_to_id اختياري. مسار المحادثة يتطلب proposal_id قابلًا للحل (النص المخزَّن يفوز).
x_delete_postدائمًاtweet_id من تغريدة سابقة.
x_schedule_postدائمًاtext + when + reply_to_id اختياري. موافقة واحدة عند الحجز.
x_list_scheduledلاقائمة تغريدات X المجدولة وحالتها.
x_cancel_scheduled_postدائمًاإلغاء تغريدة مجدولة قبل الإطلاق (يحرّر الحصة المحجوزة).

هذه الأدوات مسار المحادثة. استوديو X ينشر عبر publish_x_post / book_x_post / delete_x_post مباشرة.

لا تملك X واجهة جدولة أصلية للتغريدات — نقطة /2/broadcasts/scheduled تخص البث الحي، وPOST /2/tweets بلا حقل جدولة. لذلك تملك كاظمة الساعة: تُخزَّن التغريدة في kazma-data/x_scheduled.db ويطلق المجدول POST /2/tweets في الموعد.

  • وافق مرة عند الحجز. x_schedule_post دائمًا HITL؛ توافق على النص والوقت عند الحجز. الإطلاق حتمي (لا يعيد النموذج قراءة التغريدة).
  • الحصص ومنع التكرار تُحجز عند الحجز.
  • حارس التغريدة المزدوجة. فشل الإطلاق لا يُعاد تلقائيًا عند خطأ غامض.
  • مفتاح الإيقاف. KAZMA_X_SCHEDULE=0 يعطّل الجدولة (KAZMA_X_POST=0 يعطّل النشر كله).

حد صادق: التغريدة المجدولة تُطلق فقط بينما خادم كاظمة يعمل. إن كان الخادم متوقفًا تُلتقط عند الإقلاع التالي. X لا تحتفظ بالجدول لك.

أدِر تقويم X في استوديو X (/x). افتح كل الجداول (أو /scheduled) عندما تحتاج وظائف cron أيضًا.

كل استدعاء لـ X API يُسجَّل في مسار إضافي فقط — kazma-data/x_audit.db. الخطاف في XClient._request. الفحص عبر query_x_audit(action="post", limit=50).

  • الخطة المجانية ضيقة. لوحة مطوّر X هي مصدر الحقيقة للحصة.
  • وسم Automated هو فعلك في إعدادات X؛ كاظمة لا تستطيع قلبه.
  • إن تسربت المفاتيح، أعد توليدها ثم Settings → X → Disconnect واحفظ الأربع الجديدة.