إضافة Chrome "Clip To Discourse"

عزيزي مجتمع Discourse، إليكم هديتي الصغيرة لكم بمناسبة عيد الميلاد :wrapped_gift: :christmas_tree:. إنها بسيطة ولكنها مفيدة، وقد تم بناؤها فقط لأنني أردتها.

مستوحى من مدونة سايمون ويليسون الرائعة حول استخدام النماذج اللغوية الكبيرة (LLMs) للتطوير، قمت ببرمجة هذا الشيء خلال عيد الميلاد، بين الفعاليات الاجتماعية ومشاهدة الأفلام وتغليف الهدايا! لم أكتب أي من الأكواد، ولكني راجعت الكود وأشرفت على النموذج اللغوي الكبير. تم توجيه كل شيء من spec.md و roadmap.md.

ما الغرض منه؟

أستخدم نسخة مستضافة ذاتيًا وشخصية من Discourse كـ دفتر ملاحظات و يوميات ومدونة وسيرة ذاتية وويكي وأداة ذكاء اصطناعي وقاعدة معرفية للمطورين. في كثير من الأحيان أجد نفسي أرغب في “قص” محتوى من الويب (عنوان الصفحة + رابط URL) وإسقاطه مباشرة في Discourse الخاص بي، حيث يمكنني دمجه في ملاحظة أو إدخال يوميات.

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

الخصوصية

  • لا يجمع أي بيانات على الإطلاق عنك أو عن المحتوى الخاص بك.
  • يتم إرسال جميع البيانات مباشرة إلى مثيل Discourse الخاص بك من متصفحك.
  • لا توجد خوادم تابعة لجهات خارجية متورطة.
  • مفتوح المصدر. مستودع GitHub: https://github.com/koloki-co/clip-to-discourse-chromium-extension

الميزات

  • يقص عنوان الصفحة ورابط URL. يتم تنفيذ “مقتطف الصفحة” أو “نص الصفحة بالكامل” الاختياري ولكنه غير متطور بعض الشيء (ومع ذلك، يمكن لـ Discourse AI الخاص بك تلخيصه لاحقًا على مثيل Discourse الخاص بك؟..)
  • إنشاء مواضيع جديدة مع كل قصة، أو إلحاق القصص كردود على موضوع موجود.
  • يدعم ملفات تعريف متعددة، مما يسمح لك بتخزين مفاتيح API متعددة، ومثيلات Discourse الوجهة، والإعدادات الافتراضية - لحالات استخدام مختلفة.
  • سيتغير رمز Clip To Discourse تلقائيًا ليعكس أيقونة الموقع الخاصة بالملف الشخصي المحدد حاليًا، حتى تتمكن من معرفة إلى أين تقوم بالقص!

القيود

  • القيد الرئيسي هو أن المسؤول يحتاج إلى إنشاء مفتاح API على مستوى المستخدم لك، على مثيل Discourse الذي تقوم بالقص إليه. بالنسبة لي، هذا ليس مشكلة لأنني المسؤول الرئيسي على جميع مثيلات Discourse التي أنوي استخدام هذه الأداة من أجلها.

  • من الواضح أنه إذا تم تمكين قدرة Clip To Discourse للعديد من المستخدمين، فقد ينتج عن ذلك الكثير من النشر منخفض الجودة، على مثيل Discourse مشترك أو عام. لذا، أهدف بشكل أساسي بهذا الامتداد إلى أولئك منكم الذين يستخدمون Discourse، مثلي، كمفكرة شخصية.

كيفية التثبيت

  • قم بالتثبيت على أي متصفح قائم على Chromium (Chrome أو Edge أو Brave، إلخ) عبر الرابط إلى متجر Chrome الإلكتروني https://chromewebstore.google.com/detail/clip-to-discourse/copdhiejkkdblhdcdjapcoalldkondhi

  • (اختياري ولكن موصى به) “تثبيت” الامتداد على شريط أدوات المتصفح.

  • أنشئ مفتاح API للمستخدم الفردي بنطاقات دقيقة كما يلي: المواضيع: read (يستخدم فقط لاختبار الاتصال)، write، و update

  • حدد الفئة التي تريد أن تذهب إليها القصص. إذا كنت تريد أن تكون كل قصة موضوعًا جديدًا، فأنت تحتاج فقط إلى معرف الفئة. عند عرض الفئة، يكون هذا المعرف في عنوان URL هكذا: https://discourse.yourdomain.com/c/CategoryName/CategoryID)

  • يمكنك أيضًا تعيين موضوع للرد عليه، وسيتم إلحاق جميع القصص كردود جديدة على هذا الموضوع. للحصول على معرف الموضوع، تحصل عليه أيضًا من عنوان URL: عند عرض الموضوع، يكون معرف الموضوع في عنوان URL هكذا: https://discourse.yourdomain.com/t/TopicTitle/TopicID)

  • انقر على أيقونة الامتداد للحصول على النافذة المنبثقة، وانتقل إلى الإعدادات لتكوين مفتاح API وتعيين الإعدادات الافتراضية الخاصة بك. لاحظ أنه يمكنك الحصول على “ملفات تعريف” متعددة لمختلف مثيلات Discourse التي قد ترغب في استخدامها.

  • احفظ الإعدادات و (اختياريًا) اختبر الاتصال، والذي سيقرأ موضوعًا واحدًا للتأكد من عمل اتصال واجهة برمجة التطبيقات (API).

  • أغلق الإعدادات واقصص الأشياء للاختبار!

الصور

Clipping Settings
Demo Clip to New Topic
Demo Clipped Topic
Demo Clipped as a Reply

خارطة الطريق

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

  • لا أخطط لإنشاء امتداد لـ Firefox أو Safari (لأنني لا أستخدم تلك المتصفحات) ولكني سأكون سعيدًا إذا تولى شخص ما مهمة نقل هذا الامتداد. يمكننا التعاون للاحتفاظ بكل شيء في مستودع واحد والحفاظ على تكافؤ الميزات.

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

المناقشات ذات الصلة

طلب لأداة مماثلة تقريبًا: https://meta.discourse.org/t/chrome-firefox-extension-share-to-discourse/21104/28

منشور ذو صلة، يقترح ميزات إضافية عند قص موضوع في Discourse: https://meta.discourse.org/t/need-web-clipper-for-discourse-post/45105

المشاركة الاجتماعية مفهوم ذو صلة، ولكنه يستخدم روابط URL بسيطة https://meta.discourse.org/t/social-share/89980

التعليقات والأفكار والمساهمة

هذا الموضوع هو مكان جيد جدًا لوضع أي تعليقات لديك. أنا منفتح على الأفكار لتحسينات طالما أنها لا تزيد من تعقيد الامتداد و/أو تجعله أقل فائدة بالنسبة لي!

إذا كنت ترغب في فتح مشاكل أو إنشاء طلبات سحب (PRs)، فإن مستودع GitHub موجود هنا:

هذا الامتداد هو أداة مجانية ومفتوحة المصدر وتضع الخصوصية أولاً، تم إنشاؤها لمجتمع Discourse بواسطة شركتي Koloki.co

12 إعجابًا

أحسنت على هذا التوسيع :clap:

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

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

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

أتخيل هذا: أنا على صفحة بها نص مثير للاهتمام. أحدد النص، وأقوم بالقص إلى موضوع جديد، ويقوم بما يلي:

  • يضع رابط الصفحة كرابط مميز
  • يحدد العنوان كعنوان الصفحة المقصوصة
  • يحدد محتوى HTML المحدد كنص المنشور

تعديل: بالنسبة للخطوتين الأوليين، حل ديفيد الممتاز يعمل بشكل جيد جدًا. يتطلب مني نشر الموضوع يدويًا، ولكن بالنسبة لاستخدامي أعتقد أنه جيد :thinking:

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

لقد راودتني الفكرة نفسها منذ وقت طويل، ولكني تمكنت أخيرًا من إعدادها قبل أسبوع.

بصرف النظر عن Discourse، فإن الطريقة التي استخدمتها شخصيًا لفترة طويلة هي إضافة المتصفح SingleFile. إنها تحفظ الموقع الذي تشاهده حاليًا كملف HTML واحد، وتحافظ عليه بأقرب شكل ممكن مما تراه، حتى تتمكن من قراءته دون اتصال بالإنترنت. هناك عدد لا يحصى من ملفات HTML نائمة في مجلد ~/Downloads الخاص بي.

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

لدي بالفعل العديد من ملفات HTML المحفوظة، وسيتم إضافة المزيد في المستقبل، لذلك كنت أفكر في ميزة تسمح لي بإحضار هذه الملفات إلى Discourse لعرضها وإدارتها هناك.

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

سيكون من الرائع أن تكون هناك طريقة للتكامل المباشر مع SingleFile أو استيراد ملفات HTML.

إعجابَين (2)

شكرًا لمشاركة إضافة SingleFile - إنها أداة رائعة وربما لن أحاول تكرارها أو التداخل معها كثيرًا. لديّ أيضًا نفس حالة الاستخدام - الرغبة في الاحتفاظ بنسخة عاملة من الصفحة في ملف HTML واحد، لذلك قمت بتثبيت SingleFile أيضًا. لم أكن أعرف عن هذه الإضافة الرائعة!

بمجرد أن يكون لديك “مقتطف إلى ديسكورس” (Clipped To Discourse)، يمكنك أيضًا تحميل ملف HTML هذا كمرفق للمنشور. هذه هي الطريقة التي ربما أستخدمها بها، كبديل لـ archive.org.

بالنسبة للإصدارات المستقبلية من Clip To Discourse، أعتقد أنني سأركز على:

  • نطاق النص المختار من قبل المستخدم ليتم اقتطاعه كـ “مقتطف” (Excerpt)
  • تحسين تنسيق ماركداون (Markdown formatting) لمحتوى هذا المقتطف