يحوّل تحويل HTML إلى Markdown ترميزَ HTML إلى Markdown، وهي صياغة تنسيق نصية خفيفة الوزن أنشأها John Gruber عام 2004. صُممت Markdown لتكون مقروءة دون الحاجة إلى عرض مُصيَّر. فبينما يتطلب HTML وسوم فتح وإغلاق كـ<strong> و<a href="">، تستخدم Markdown رموزاً مختصرة: **نص عريض**، و[روابط](url)، و# عناوين. يُنتج تحويل HTML إلى Markdown ملفات أسهل قراءةً وتحريراً وإدارةً في أنظمة التحكم بالإصدارات مقارنةً بـHTML الخام.
تُحوِّل عملية التحويل عناصر HTML إلى مقابلاتها في Markdown. فيصبح <h2> عبارةً عن ##، ويتحول <ul><li> إلى - عنصر، ويصبح وسم <a> صياغة [نص](url). بعض عناصر HTML لا يوجد لها مقابل مباشر في Markdown، كـ<div> و<span> وسمات البيانات المخصصة. تحذف أدوات التحويل عادةً هذه الوسوم أو تمررها كـHTML خام وفق الإعدادات.
أصبحت Markdown الصيغة المعيارية للكتابة في توثيق المطورين (GitHub وGitLab وBitbucket)، ومولدات المواقع الثابتة (Hugo وJekyll وAstro)، وتطبيقات تدوين الملاحظات (Obsidian وNotion)، والمدونات التقنية. يُعدّ تحويل محتوى HTML الموجود إلى Markdown خطوةً شائعة عند ترحيل المواقع، أو استيراد محتوى من أنظمة إدارة المحتوى، أو أرشفة صفحات الويب بصيغة محمولة. وعلى عكس HTML، تُنتج ملفات Markdown فروقاً نظيفة في أنظمة التحكم بالإصدارات، مما يجعل مراجعة تغييرات التوثيق أمراً عملياً.
لماذا تستخدم محوّل HTML إلى Markdown؟
إعادة كتابة HTML يدوياً بصيغة Markdown عملية بطيئة وعرضة للأخطاء، خاصةً مع الصفحات التي تحتوي على قوائم متداخلة أو جداول أو عشرات الروابط. يتكفّل المحوّل بهذا التحويل آلياً وبنتائج متسقة.
⚡
تحويل فوري في متصفحك
الصق HTML واحصل على مخرج Markdown في أجزاء من الثانية. لا حاجة لإرسال طلبات إلى خادم أو انتظار طوابير المعالجة. يعمل التحويل بالكامل في متصفحك باستخدام JavaScript.
🔒
حافظ على خصوصية بياناتك
لا يغادر HTML جهازك قط. تتم جميع عمليات المعالجة في متصفحك مباشرة، لذا لا يُرفَع أي شيء إلى خوادم خارجية، ولا تسجيل، ولا وصول من أي طرف ثالث إلى محتواك.
📝
الحفاظ على بنية المستند
تُحوَّل العناوين والقوائم والروابط والصور وكتل الكود والجداول إلى مقابلاتها الصحيحة في Markdown. تُعالَج البنى المتداخلة والتنسيقات المضمّنة بشكل صحيح.
🔀
لا حساب ولا تثبيت مطلوب
افتح الأداة وابدأ التحويل فوراً. لا شيء يحتاج إلى تثبيت، ولا مفتاح API للإعداد، ولا نموذج تسجيل. تعمل على أي جهاز يتوفر فيه متصفح حديث.
حالات استخدام محوّل HTML إلى Markdown
مطور واجهات أمامية: ترحيل نظام إدارة المحتوى
صدِّر منشورات المدونة أو الصفحات من WordPress أو Drupal أو نظام إدارة محتوى بلا رأس بصيغة HTML، ثم حوّلها إلى Markdown للاستخدام مع مولدات المواقع الثابتة كـNext.js أو Astro أو Hugo.
مهندس خلفية: توثيق API
حوّل وثائق HTML لـAPI المولَّدة تلقائياً إلى ملفات Markdown تعيش جنباً إلى جنب مع الكود المصدري. تتكامل وثائق Markdown مع عرض GitHub ويمكن إصدارها مع الكود الذي تصفه.
مهندس DevOps: تحويل أدلة التشغيل
حوّل صفحات الويكي الداخلية (Confluence وSharePoint) المُصدَّرة بصيغة HTML إلى أدلة تشغيل Markdown مُخزَّنة في مستودع Git جنباً إلى جنب مع كود البنية التحتية الذي تصفه.
مهندس ضمان الجودة: توثيق حالات الاختبار
حوّل تقارير اختبار HTML أو خطط الاختبار اليدوي من الأدوات المستندة إلى الويب إلى ملفات Markdown يمكن مراجعتها في طلبات السحب جنباً إلى جنب مع تغييرات الكود التي تتحقق منها.
مهندس بيانات: تنظيف بيانات الزحف
احذف شيفرة HTML الزائدة من صفحات الويب المستخرجة وأنتج نصاً نظيفاً بصيغة Markdown. يزيل ذلك عناصر التنقل والإعلانات وترميز التخطيط مع الحفاظ على محتوى المقالة وبنيتها.
طالب: ملاحظات البحث
انسخ المحتوى من مواقع الويب وحوّل HTML إلى Markdown للاستيراد في Obsidian أو Notion أو أي نظام تدوين ملاحظات مستند إلى Markdown. يحافظ على العناوين والروابط والتنسيق.
مرجع عناصر HTML إلى Markdown
يوضح الجدول أدناه كيفية تعيين عناصر HTML الشائعة إلى مقابلاتها في Markdown. يتبع هذا التعيين اصطلاحات GitHub-Flavored Markdown (GFM)، التي توسّع مواصفات CommonMark بإضافة الجداول والشطب وقوائم المهام. العناصر غير المدرجة هنا (كـ<div> و<form> ومكونات الويب المخصصة) لا يوجد لها مقابل في Markdown وإما تُحذف أو تُمرَّر كـHTML خام.
عنصر HTML
صياغة Markdown
ملاحظات
<h1>...<h6>
# ... ######
ATX headings, level matches tag number
<p>
Blank line separation
Double newline between paragraphs
<strong>, <b>
**text**
Bold / strong emphasis
<em>, <i>
*text*
Italic / emphasis
<a href="url">
[text](url)
Inline link with optional title
<img src="url">

Image with alt text
<ul><li>
- item
Unordered list with dash or asterisk
<ol><li>
1. item
Ordered list, numbers restart per block
<blockquote>
> text
Block quote, nestable with >>
<code>
`code`
Inline code span
<pre><code>
```lang\ncode\n```
Fenced code block with optional language
<hr>
---
Horizontal rule (three dashes)
<table>
| col | col |
GFM table syntax with alignment
<del>, <s>
~~text~~
Strikethrough (GFM extension)
نكهات Markdown: GFM مقابل CommonMark مقابل الأصلية
ليست جميع صيغ Markdown متطابقة. تهم صيغة المخرج لأن منصات مختلفة تُحلّل Markdown بطرق مختلفة. النكهات الثلاث الأكثر شيوعاً هي GitHub-Flavored Markdown (GFM) وCommonMark وMarkdown الأصلية لـGruber.
مواصفة صارمة تحلّ الغموض في صياغة Markdown الأصلية. تحدد قواعد دقيقة لاستمرارية القوائم وتحليل التأكيد والتداخل على مستوى الكتل. تُستخدم كأساس لـGFM والعديد من مولدات المواقع الثابتة.
Markdown الأصلية
مواصفة John Gruber لعام 2004. لا تدعم الجداول ولا كتل الكود المسوّرة ولا الشطب. تتعامل معظم الأدوات الحديثة معها باعتبارها مجموعة فرعية من CommonMark. نادراً ما تُستخدم كصيغة مستهدفة اليوم.
أمثلة برمجية
أمثلة عملية بـJavaScript (Turndown) وPython (markdownify وhtml2text) وGo وPandoc في سطر الأوامر.
JavaScript (Turndown)
import TurndownService from 'turndown'
const turndown = new TurndownService({ headingStyle: 'atx' })
const html = '<h1>Title</h1><p>A <strong>bold</strong> paragraph.</p>'
const md = turndown.turndown(html)
console.log(md)
// → "# Title\n\nA **bold** paragraph."
Python (markdownify)
from markdownify import markdownify
html = '<h2>Section</h2><ul><li>First</li><li>Second</li></ul>'
md = markdownify(html, heading_style='ATX')
print(md)
# → "## Section\n\n- First\n- Second"
Python (html2text)
import html2text
converter = html2text.HTML2Text()
converter.body_width = 0 # disable line wrapping
html = '<p>Visit <a href="https://example.com">Example</a> for details.</p>'
md = converter.handle(html)
print(md)
# → "Visit [Example](https://example.com) for details."
# Convert an HTML file to Markdown
pandoc input.html -f html -t markdown -o output.md
# Pipe HTML from stdin
echo '<p>Hello <em>world</em></p>' | pandoc -f html -t markdown
# → Hello *world*
# Use GitHub-Flavored Markdown output
pandoc input.html -f html -t gfm -o output.md
الأسئلة الشائعة
ما عناصر HTML التي لا يمكن تحويلها إلى Markdown؟
لا يوجد في Markdown ما يعادل <div> و<span> و<form> و<input> و<iframe> أو أي عنصر يحمل فئات CSS مخصصة وأنماطاً. تحذف معظم أدوات التحويل هذه الوسوم وتحتفظ بالنص الداخلي فقط. يمكن لبعض المحوّلات تمرير HTML غير المدعوم دون تغيير، وهو أمر صالح لأن مواصفة Markdown تسمح صراحةً بـHTML المضمّن. إن كنت بحاجة إلى الحفاظ على تلك العناصر، فاضبط محوّلك للإبقاء على HTML الخام بدلاً من حذفه.
كيف تُحوَّل جداول HTML إلى Markdown؟
تُعيَّن جداول HTML إلى صياغة جداول الأنابيب في GFM: | رأس | رأس | مع صف فاصل | --- | --- |. لا تدعم جداول GFM الدمج الأفقي أو الرأسي للخلايا أو التنسيق على مستوى الخلايا. تُسطَّح الجداول المعقدة ذات الخلايا المدمجة، مما قد يُفقد معلومات بنيوية. أما جداول البيانات البسيطة فيكون التحويل فيها بلا فقدان.
هل التحويل من HTML إلى Markdown بلا فقدان؟
لا. Markdown هي مجموعة فرعية من HTML، لذا تُفقَد دائماً بعض المعلومات أثناء التحويل. فئات CSS والأنماط المضمّنة وسمات البيانات وعناصر النماذج والوسوم الدلالية كـ<article> أو <section> لا يوجد لها مقابل في Markdown. يُحفَظ محتوى النص والبنية الأساسية (العناوين والقوائم والروابط والتأكيد) بدقة. في معظم سير عمل التوثيق وترحيل المحتوى، العناصر المحفوظة هي ما يهم فعلاً.
ما الفرق بين تحويل HTML إلى Markdown وتحويله إلى نص عادي؟
يحذف تحويل HTML إلى نص عادي كل التنسيق وينتج نصاً خاماً بلا بنية. أما تحويل HTML إلى Markdown فيحافظ على بنية المستند: تبقى العناوين عناوين، وتحتفظ الروابط بعناوين URL الخاصة بها، وتبقى القوائم قوائم، ويُحتفَظ بالتأكيد. يمكن تحويل مخرج Markdown مرة أخرى إلى HTML بنفس البنية المنطقية.
هل يمكنني تحويل Markdown مجدداً إلى HTML؟
نعم. كل معالج Markdown (marked وmarkdown-it وPython-Markdown وgoldmark) يحوّل Markdown إلى HTML. هذا التحويل في الاتجاهين أحد أسباب شعبية Markdown: تكتب بصيغة مقروءة ثم تعرضها بـHTML للويب. لكن التحويل في الاتجاهين ليس متماثلاً تماماً لأن تحويل HTML إلى Markdown يحذف العناصر غير المدعومة.
كيف يتعامل المحوّل مع HTML الذي يحتوي على CSS أو JavaScript مضمّن؟
تُحذف CSS المضمّنة (سمات style) وكتل <style> أثناء التحويل إذ لا يوجد في Markdown صياغة للتنسيق. كما يُزال JavaScript (وسوم <script> ومعالجات الأحداث كـonclick). يستخرج المحوّل محتوى المستند وبنيته فحسب. يجعل ذلك تحويل HTML إلى Markdown خطوةً مفيدة لتعقيم المحتوى عند استيراد HTML غير موثوق به في توثيقك.
أي نكهة Markdown يجب أن أستخدم لمشروعي؟
استخدم GitHub-Flavored Markdown (GFM) إن كان محتواك سيُعرض على GitHub أو GitLab أو معظم منصات التوثيق. استخدم CommonMark إن كنت تحتاج إلى توافق صارم مع المواصفة وتحليل متوقع عبر محوّلات مختلفة. Markdown الأصلية ذات صلة فقط بالأنظمة القديمة. GFM هي الخيار الأسلم الافتراضي لمعظم المشاريع.