يدعم Discourse الآن نقاط نهاية Markdown أصلية، مما يسهّل على أدوات الذكاء الاصطناعي والعملاء الآخرين قراءة محتوى المنتديات دون الحاجة إلى تحليل صفحات HTML كاملة.
سيتم تفعيل هذه الميزة افتراضيًا على جميع المواقع المضافة عبر نظام التغييرات القادمة. يمكن للمشرفين الذين يرغبون في عدم التفعيل القيام بذلك عن طريق تعطيل إعداد الموقع enable_markdown_endpoints.
يتم توليد مخرجات Markdown من HTML المُصيَّر (المُعالَج) للمشاركات، مع الحفاظ على المحتوى الذي يراه القراء، بما في ذلك الروابط الموسّعة والتنسيق المُعالَج. يتم تحويل العناصر الخاصة بـ Discourse مثل الاقتباسات، و oneboxes، ومقاطع الأكواد، والاستطلاعات، والأقسام القابلة للطي، مرة أخرى إلى Markdown. تتضمن ردود المواضيع البيانات الوصفية وروابط التصفح بين الصفحات، وتُخزّن أجسام المشاركات المحوّلة مؤقتًا باستخدام هضم المحتوى (content digest) بحيث تنتج التعديلات مخرجات جديدة.
يمكن للعملاء طلب Markdown صراحةً من خلال عناوين URL التي تنتهي بـ .md أو بإرسال ترويسة Accept: text/markdown. يحترم التفاوض قيم الجودة ويختار Markdown عندما يُفضَّل على HTML و JSON؛ وتحتفظ طلبات .md الصريحة بصيغها. تعلن صفحات HTML المدعومة عن مكافئها من Markdown من خلال ترويسة HTTP Link وعنصر <link rel="alternate">.
سؤال: لمن يستخدم وكيل Cloudflare، يبدو أن هناك تعارضًا بين وظيفة النواة وأداتهم للتحول. السؤال هو: إذا كنت خلف الوكيل، وبما أن الوظيفة مخصصة للمشتركين، هل سيمنعون تحويل الترويسة من HTML إلى .md، أم أن التحول يتم بغض النظر عن ذلك نظرًا لدعم العميل للتحول؟
نعم. إذا بقيت الإضافة مفعّلة، فإنها تحل محل بعض نقاط النهاية الأساسية (core endpoints)، لذا نوصي بتعطيلها أو إلغاء تثبيتها لاستخدام الوظيفة المتوفرة الآن في النواة.
حاليًا، القوائم التالية:
مدعوم
أمثلة
القوائم الرئيسية
/latest.md, /hot.md, /top.md
قوائم مخصصة، تتطلب مصادقة
/new.md, /unread.md
قوائم التصنيف/التصنيف الفرعي الافتراضية
/c/support/6.md, /c/parent/child/12.md
قوائم وسم واحد
/tag/example.md, /tag/example/123.md
تُعد /categories.md و /tags.md مدعومة أيضًا كمجلدات. تعريفات المسارات
لست على دراية كبيرة بميزة Cloudflare، ولكن من ما يمكنني استنتاجه، فإنها تلتقط طلب Accept text/markdown قبل وصوله إلى الخادم، ثم تحول الـ HTML وتقدمه. لذا، يبدو أن هذه الميزة ستتجاوز وظيفة Discourse، عند استخدام Cloudflare.
لا أعرف على وجه اليقين، لكن الخيار الأسهل هو الاختبار على موقع نشط ومقارنة المخرجات مع ما يُنتجه الميتا. ستكون هناك اختلافات في المحتوى المُدرج. إذا كانت الاستجابة التي تتلقاها متطابقة سواء مع تفعيل ميزة Cloudflare أو بدونها، فإنها تحترم تنسيق Markdown الذي يعرضه نواة Discourse.
X-Discourse-Crawler-View: true (مما يشير إلى أن Discourse يوفر أيضًا نسخة نظيفة بصيغة .md / Markdown الأصلية للمحزات (crawlers) والقُرّاء).
ترويسة Link التي تشير إلى النسخة البديلة: Link: <https://segredin.com/t/conselhos-duvidosos/22054.md>; rel="alternate"; type="text/markdown"
يعيد Vary: Accept من المصدر بغض النظر عن الدوال الخارجية على مستوى DNS.
إذا اختار الطلب تنفيذ طلب (request) بدون .json، فسيُعاد .md كتحويل افتراضي.
HTTP/1.1 200 OK
Content-Type: text/markdown
Vary: Accept
لقد ترددت لأنني استلمت 123 ألف طلب من Claude، ومعظمها، منذ أن حدّثت Discourse بهذه الميزة الأساسية، لم يرتفع بشكل حاد. سأواصل المراقبة خلال الأسابيع القادمة.
هل ينوي فريق Discourse الأساسي منح كتل discourse-post-event تمثيلًا مخصصًا بصيغة Markdown، تمامًا كما هو الحال مع الاستطلاعات والاقتباسات وoneboxes والأقسام القابلة للطي؟ تقنيًا، يبدو إضافة مثل هذا التمثيل إلى CookedProcessor أمرًا ممكنًا إلى حد كبير: اكتشاف div.discourse-post-event، وقراءة سمات data-* الخاصة به، واستبداله بكتلة Markdown محفوظة قبل المرور العام عبر ReverseMarkdown.