استخدام Discourse لبناء منصة تفاعلية بأسلوب مدونة أو Reddit أو X أو Facebook

هذا مجرد قائمة بما كنت أتوقع أن يكون عليه شعور الموقع، فثيم شبيه بـ Reddit / Discourse كان يحتوي على معظم ذلك مدمجًا مسبقًا

كانت “معاينات قائمة المواضيع” (Topic List Previews) أول تطبيق لهذا المفهوم.

وهذا لا يفيد أحدًا، فهدف هذا المنشور هو محاولة معرفة ما يمكنني تحقيقه بمساعدة من الأعضاء الآخرين، وأتمنى أن يكون مفيدًا للآخرين أيضًا إن أمكن :wink:

إعجابَين (2)

حاولتُ أن أساعدك، لكنك لم تفعل سوى أن ترفض.

أتمنى لك التوفيق.

أعتذر، أنا لست أدفع عن نفسي أو أتراجع. لقد أجبت على أسئلتك، فأرسلت لي رابطًا إلى Starzen، وهذا ليس ما أحاول تحقيقه. ثم أجبت بأنني رأيت المنشورات التي ربطت بها، وهم يتحدثون عن بناء شيء ما، وأنا أحاول بناء شيء ما. أعتذر إن كنت تشعر بأنني أدفع عن نفسي، لكن هذا ليس هو الحال. بصراحة، لست متأكدًا من وجهة مقصدك في هذا الأمر.

3 إعجابات

أودّ فقط أن أشكر صاحب الموضوع (OP) على إلهامه (حيث شارك بلطف في استفساري حول الإضافة المستخدمة في شريط التنقل الخاص به قبل بضعة أسابيع).

نيّتي ليست إعادة تصميم واجهة وسائل التواصل الاجتماعي، بل تقديم شيء أكثر راحة لمستخدمينا، وأنا أعمل على ذلك. سأشارك بكل سرور النتائج، والناتج النهائي، ومستودع الكود (repo) عندما يحين الوقت :slight_smile:

وبالمناسبة، أشارك شيئًا من الجيد دائمًا تذكّره، وقد ينساه بعض المستخدمين عند الرد أو التفاعل: Core Rules of Netiquette

إعجابَين (2)

بالتأكيد، لذا أنا أيضاً أدعم بقوة محاولة صاحب الموضوع الجديدة ومشاركاتكم!

إعجابَين (2)

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

5 إعجابات

اكتمل التصميم الأولي لخاصية «ابنِ خلاصتك»

الخطوة التالية هي إدراج جداول جديدة في قاعدة البيانات، على النحو التالي:

الحقل الغرض
user_id العضو
category_id الفئة التي يتم قياسها
impressions مرات الظهور ذات الصلة
opens المواضيع التي تم فتحها
likes المواضيع التي تم إعجابها
replies الردود التي تم إجراؤها
dwell_seconds وقت القراءة التراكمي
affinity_score التفضيل المُحسب
updated_at آخر إعادة حساب

بالنسبة للإصدار الأول، لا يُطلب سوى جدول الاهتمامات. سيُضاف جدول السلوك لاحقاً بمجرد تحديد المسار الذي سأعتمده.

إعجابَين (2)

اليوم رأيت شيئًا ذا صلة في منتدى نوديلوك: NodeLoc

لست على دراية بهذا النهج، لكنني أتطلع إلى رؤية أين سيتجه!

إعجاب واحد (1)

هذا مثير للإعجاب حقًا، لقد فكرت كثيرًا في مسار /r لكنني قررت عدم اعتماده بسبب قيود التصنيفات. أتساءل كيف تم تنفيذه

إعجاب واحد (1)

تمت إضافة اختيار التغذية الأولي وهو يعمل بشكل صحيح، ولم يتم تطبيق أي تنسيق بعد كما هو موضح أعلاه حتى المرحلة النهائية.

يظهر الاختيار عند أول زيارة للمستخدم للتغذية ولا يمكن إغلاقه حتى يختار المستخدم 3 فئات من الاهتمامات، كما تمت إضافة خيار “تحديد الكل”.

تمت أيضًا إضافة تبويب “تعديل الاهتمامات”

إعجاب واحد (1)

تم الانتهاء من إعداد موجز التخصيص الأولي وهو يعمل بشكل صحيح، ولم نلاحظ أي ارتفاعات مفاجئة في استخدام المعالج حتى الآن، ويبدو سريعًا ويعمل كما هو مقصود.

الآن:

  • يُقيّم المواضيع باستخدام 55% الاهتمامات، و25% حداثة المحتوى، و10% الشعبية، و10% العشوائية.
  • يُفضّل إدراج موضوع للاكتشاف كل ستة مواضع عندما يتوفر ذلك.
  • يتجنب عرض ثلاثة مواضيع متتالية من نفس الفئة عندما تتوفر بدائل.
  • يحافظ على استقلالية الترقيم عن العناصر المحذوفة أو المستهلكة.
  • يعيد تحميل الموجز وإعادة ترتيبه بعد تغيير الاهتمامات.
  • يتضمن النافذة المنبثقة العاملة وتحديد الكل.

وبعدها عند تغيير موجز الأخبار الخاص بك

5 إعجابات

فكّرتُ أنّي سأُنهي تنسيق التصميم قبل أن أكمل.

3 إعجابات

الخطوة التالية هي:

تحسين ما بنيناه قبل إضافة تتبع السلوك:

  • تقييد جلسات التغذية المؤقتة لكل مستخدم حتى لا تتراكم قوائم مؤقتة لمدة ست ساعات عند التحديث المتكرر.

  • تحسين خلط الفئات لتقليل الحمل على المعالج المركزي (CPU) في الطوابير الكبيرة.

  • قياس زمن تحميل التغذية واستهلاك ذاكرة التخزين المؤقت.

بعد ذلك يأتي تتبع السلوك: تسجيل المشاهدات الحقيقية، وفتح المواضيع، وزمن القراءة. يجب ألا يُحتسب الجلب المسبق (Prefetching) كقراءة.

في البداية، سنجمع هذه الإشارات دون تغيير الترتيب. وبمجرد أن يصبح التتبع موثوقاً، يمكننا إدخال وزن سلوكي بنسبة 15% تدريجياً عندما يرى المستخدمون ما بين 30 إلى 50 منشوراً.

إعجاب واحد (1)

أحب هذه المبادرة!

يمكنك حتى أن تقول إن «القراءة أساسية»، وهو ما كان مقالاً تأسيسياً عندما بدأتُ في منصب مدير المجتمع:


@Damian_Boon كيف سيعمل هذا النظام إذا لم تكن هناك صور مرفقة بالموضوع؟
يستخدم العرض التوضيحي صور رأسية مولّدة بالذكاء الاصطناعي، وأتمنى ألا يكون هذا هو الافتراضي؟ فالصورة المستوحاة هنا وهناك لا بأس بها، لكن صورة زائفة تلو الأخرى تصبح مزعجة بسرعة كبيرة :slight_smile:


يوجد أيضاً خطأ صغير في Safari على سطح المكتب، حيث لا تفتح روابط المواضيع ذات الصلة:

3 إعجابات

بالطريقة نفسها تمامًا، فهو يستخدم فقط عرض الموضوعات. لذا ستشاهد ما تراه الآن مع غياب الصورة فقط.

هذه موقع تجريبي حيث كل المحتوى مولّد بالذكاء الاصطناعي لهذا الحالة الاختبارية.

شكرًا لك، سأبحث في ذلك لاحقًا لأنه يستخدم ذاكرة مؤقتة من الصفحة الرئيسية.

إعجابَين (2)

بناءً على ما أنشأته حتى الآن، أحتاج إلى اختبار حمل الخادم. لدي حساب على OpenRouter وأريد اختبار 10 روبوتات تنشر في نفس الوقت. ما هو أفضل مسار لمتابعة الاختبار، على سبيل المثال:

الروبوتات:

  • اسم المستخدم: wtf_gaming
    التصنيف: ألعاب
    الشخصية: أخبار الألعاب
    المنشورات لكل ساعة: 30
    الردود لكل ساعة: 15

  • اسم المستخدم: wtf_tech
    التصنيف: تقنية
    الشخصية: أخبار التقنية
    المنشورات لكل ساعة: 30
    الردود لكل ساعة: 15

ثم وجود 10 روبوتات مسجلة الدخول تقوم بتحديث صفحة /feed كل 30 ثانية، على سبيل المثال.

أو إنشاء خدمة Python صغيرة مستقلة تتواصل مع Discourse وOpenRouter، بدلاً من وضع طلبات الذكاء الاصطناعي مباشرة داخل عملية Discourse Rails.

ما هو أفضل طريقة للاختبار؟

إعجاب واحد (1)

يبدو رائعًا جدًا، هل يمكن أن يتحول في النهاية إلى موضوع جديد؟

إعجابَين (2)

سيكون من الرائع وجود مكوّن موضوع مع مُدخل مُحدِّد الفئة!

إعجاب واحد (1)