ناشر X
تنشر كاظمة على X فقط عبر official X API v2 باستخدام OAuth 1.0a user context. لا مسار كشط، ولا ناشر عبر Playwright/computer-use، ولا نشر بـ Bearer للتطبيق فقط (يقرأ Bearer؛ لكنه لا يستطيع POST /2/tweets).
ما الذي يعنيه «رسمي»
Section titled “ما الذي يعنيه «رسمي»”| أنت تفعل | كاظمة تفعل |
|---|---|
| حساب مطوّر 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.
الإعداد
Section titled “الإعداد”- developer.x.com → Project + App (الخطة المجانية: مشروع واحد / تطبيق واحد).
- إعدادات مصادقة المستخدم → Read and write.
- Keys and tokens → API Key وAPI Key Secret وAccess Token وAccess Token Secret.
- كاظمة Settings → X → الصق القيم الأربع +
@handle→ Save → Test (GET /2/users/me). - فعّل النشر. افتح استوديو 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 (الجدولة فقط).
استوديو X (/x)
Section titled “استوديو X (/x)”سطح المشغّل على الويب. صفحة 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-Agent | Kazma/<ver> (self-hosted; official X API v2) | X يتطلب UA. |
الوسائط والاستطلاعات واقتباس التغريدات ورفع v1.1 ليست في هذا الإصدار.
الأدوات
Section titled “الأدوات”| الأداة | 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 مباشرة.
التغريدات المجدولة
Section titled “التغريدات المجدولة”لا تملك 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 أيضًا.
سجل التدقيق (2026-08)
Section titled “سجل التدقيق (2026-08)”كل استدعاء لـ X API يُسجَّل في مسار إضافي فقط — kazma-data/x_audit.db. الخطاف في XClient._request. الفحص عبر query_x_audit(action="post", limit=50).
حدود صادقة
Section titled “حدود صادقة”- الخطة المجانية ضيقة. لوحة مطوّر X هي مصدر الحقيقة للحصة.
- وسم Automated هو فعلك في إعدادات X؛ كاظمة لا تستطيع قلبه.
- إن تسربت المفاتيح، أعد توليدها ثم Settings → X → Disconnect واحفظ الأربع الجديدة.