مُولِّدات المواقع الثابتة (SSGs) أصبحت العمود الفقري للبوابات الحديثة للوثائق، ومدونات المطورين، وقواعد معرفة المنتجات. فهي توفر توصيلًا خفيفًا، ومحتوىً يُتحكم فيه بالإصدارات، وتكاملًا سلسًا مع خطوط أنابيب CI. المشكلة أن الـ SSGs تتوقع المحتوى بأشكال محددة جدًا – غالبًا ما تكون Markdown أو reStructuredText أو HTML عادي – وتعتمد على بيانات الـ front‑matter لتوجيه التنقل، والتصميم، وفهارس البحث. عندما ترث مؤسسة مجموعةً مختلطةً من ملفات Word وPDF وعروض PowerPoint وصيغ تأليف المساعدة القديمة، قد يصبح خطوة التحويل عنقًا زجاجيًا يهدد الاتساق، وإمكانية الوصول، وجودة البحث.
هذه المقالة تستعرض سير عمل عملي لتحويل المستندات المصدرية المتباينة إلى مستودع جاهز للـ SSG. ستركز على الحفاظ على البنية الدلالية، والاحتفاظ بالنص القابل للبحث، والحفاظ على البيانات الوصفية المهمة، وتفادي فقدان الجودة الطفيف الذي غالبًا ما يحدث عندما يتم تحويل ملفات PDF إلى Markdown دون خطة. التقنيات قابلة للتطبيق على نطاق واسع، لكن الأمثلة تشير إلى إمكانيات سير عمل convertise.app، وهي خدمة تحويل سحابية تحترم الخصوصية وتنتج نتائج عالية الدقة.
لماذا خطوة التحويل مهمة للوثائق المدعومة بـ SSG
يقوم الـ SSG بإنشاء موقع HTML ثابت من ملفات المصدر عند وقت البناء. المولد لا يفسر الصيغ الثنائية؛ فهو يقرأ النص الخام فقط ويضيف القوالب. إذا قمت بإدخال PDF مباشرةً إلى خط الأنابيب، سيتعامل المولد معه كملف غير شفاف، وستكون المحتويات داخله غير مرئية لمحركات البحث وللبحث الداخلي في الموقع. وبالتالي، لن يتمكن المستخدمون من العثور على المعلومات عبر البحث النص الكامل، وستفقد الوثائق فوائد إمكانية الوصول (مثل تنقل قارئات الشاشة) التي تأتي مع HTML المُنظم جيدًا.
إلى جانب قابلیت البحث، تؤثر عملية التحويل على:
- هيكلية التنقل – العناوين في المصدر تصبح جدول محتويات الموقع. التحويل الذي يسطّح مستويات العناوين يعرقل التدفق المنطقي الذي يتوقعه المستخدمون.
- مقتطفات الشيفرة – العديد من الوثائق التقنية تحتوي على كتل شيفرة يجب أن تحتفظ بتظليل الصياغة. استخراج PDF غالبًا ما يدمج الخطوط ذات المسافات المتساوية داخل نص عادي، مسببًا كسر العلامات.
- المرجعيات المتبادلة – الأشكال، والجداول، وهوامش الصفحة تُشار عادةً إليها بمعرّف. فقدان تلك المعرفات يعني روابط مكسورة في جميع أنحاء الموقع.
- البيانات الوصفية – تاريخ النشر، المؤلف، الإصدار، والوسوم تُقرأ من الـ front‑matter. إذا تخلت عملية التحويل عن هذه المعلومات، ستفقدك إمكانات الفرز، والتصفية، وإشارات التحكم بالإصدارات.
عملية تحويل منضبطة تتعامل مع كل من هذه الجوانب تمنع عمليات إعادة البناء اللاحقة من أن تصبح مجرد تمارين إطفاء حرائق.
خريطة صيغ المصدر إلى أهداف جاهزة للـ SSG
الخطوة الأولى هي جرد صيغ المصدر التي يجب دعمها. إليكم مخزونًا شائعًا والهدف المفضل للـ SSG لكل منها:
| صيغة المصدر | الهدف المفضل للـ SSG | السبب |
|---|---|---|
| Microsoft Word (.docx) | Markdown (.md) | Word يحتفظ بالعناوين، الجداول، ومعلومات التنسيق التي يمكن ربطها بتركيب Markdown. |
| PDF (نصية) | Markdown أو HTML | ملفات PDF النصية يمكن استخراجها بأدوات لا تحتاج OCR؛ تحتفظ بالتخطيط لكنها تحتاج إلى تنقية. |
| PDF (ممسوحة) | HTML مع نص OCR مدمج | ملفات PDF الممسوحة تتطلب OCR؛ الهدف هو HTML قابل للبحث بدلاً من صور خام. |
| PowerPoint (.pptx) | Markdown مع صور مدمجة أو مجموعة شرائح HTML | عادة ما تُعرض الشرائح كسلسلة من الصور مع نصوص توضيحية. |
| ملفات المساعدة القديمة (.hhp, .chm) | Markdown | هذه الصيغ تخزن موضوعات هرمية غنية تتحول بطبيعية إلى هيكل عناوين. |
| ePub/كتاب إلكتروني | Markdown أو HTML | محتوى ePub مبني مسبقًا على HTML؛ التحويل يكون في الأساس إعادة تغليف. |
| OpenOffice/LibreOffice (.odt) | Markdown | مشابه لـ .docx، مع نفس هرمية العناوين. |
القاعدة العامة: تحويل إلى أبسط تمثيل نصي يحتفظ بالبنية – Markdown لمعظم الوثائق، HTML عندما تحتاج إلى تنسيق دقيق، ومجموعة صغيرة من ملفات الصور للمصادر ذات المحتوى البصري الكثيف.
تحضير خط أنابيب التحويل
خط أنابيب قوي يتكون من ثلاث مراحل: الاستخلاص، التنقية، والإثراء.
- الاستخلاص – استخراج النص الخام، الصور، الجداول، والبيانات الوصفية من ملف المصدر. الأدوات التي تقرأ الصيغة الأصلية (مثل LibreOffice headless، أو محللات Microsoft Office Open XML) تُنتج أنظف مخرجات. بالنسبة لملفات PDF، استخدم مكتبة يمكنها التمييز بين كائنات النص والصور الممسوحة؛ convertise.app يوفر نقطة نهاية PDF‑to‑Markdown تحترم التخطيط وتنتج ملف Markdown نظيفًا مع الأصول المستخرجة.
- التنقية – تنظيف المخرج الخام. يشمل ذلك:
- توحيد مستويات العناوين (مثل ضمان أن المستند يبدأ بـ
#ويتدرج بصورة صحيحة). - إعادة ترميز الأحرف الخاصة إلى UTF‑8.
- تحويل الجداول من مقاطع HTML
<table>إلى ص syntax Markdown باستخدام الأنابيب، مع الحفاظ على محاذاة الأعمدة. - حذف الفراغات غير المرئية أو المتكررة التي قد تعطل مُحلّلات الـ front‑matter.
- توحيد مستويات العناوين (مثل ضمان أن المستند يبدأ بـ
- الإثراء – إضافة بيانات خاصة بالـ SSG:
- كتلة الـ front‑matter (
---YAML) تحتوي علىtitle،date،author،tags، وversion. - توليد تلقائي لمكان جدول المحتويات (
{{ toc }}) إذا كان المولد يدعم ذلك. - تحسين الصور – تقليل حجم لقطات الشاشة الكبيرة إلى عرض مناسب للويب (مثلاً 1200 px) وتحويلها إلى WebP لتقليل حجم الحزمة.
- كتلة الـ front‑matter (
كل مرحلة يمكن كتابتها كسكريبت بلغة تفضّلها (Python، Node.js، Bash). المفتاح هو الحفاظ على عمليات حتمية بحيث يُنتج نفس المصدر دائمًا مخرجات مطابقة – وهو أمر ضروري لبنايات CI الموثوقة.
الحفاظ على البنية الدلالية أثناء التحويل
خطأ شائع هو التعامل مع التحويل كإخراج نص عادي. هذا النهج يطيح بالإشارات الدلالية مثل:
- القوائم – القوائم المرتبة وغير المرتبة تتحول إلى فواصل فقرة بسيطة، ما يفقد الهرمية.
- كتل الشيفرة – الشيفرة المضمنة تصبح نصًا عاديًا، وتفقد الكتل المحاطة بأقواس اللغة المطلوبة لتظليل الصياغة.
- الهوامش وحواشي الصفحات – غالبًا ما تُدمج داخل نص الفقرة، ما يفسد تنقل المراجع.
لتجنّب هذه الفخاخ، اضبط محرك التحويل ليرسم كل بنية صراحة. على سبيل المثال، عند تحويل مستند Word باستخدام convertise.app، فعّل خيارات preserveLists وpreserveCodeBlocks (متاحة عبر الـ API). سيحتوي الـ Markdown الناتج على بادئات - أو 1. للقوائم، وأسوار ثلاثية العلامة العكسية مع وسوم اللغة للشيفرة.
إليك جدولًا مختصرًا للمر Mapping يمكنك تضمينه في سكريبت التحويل الخاص بك:
- العناوين →
# …(المستوى 1) →## …(المستوى 2) → … - عريض →
**نص** - مائل →
*نص* - الجداول → صيغة Markdown بالأنابيب
| رأس | … - الصور →
 - الروابط →
[نص الرابط](url) - الشيفرة →
لغة\ncode\n - الهوامش →
[^1]: نص الهوامش
عند الحفاظ على هذه العناصر، تُنشئ الإضافات المدمجة في الـ SSG (مثل jekyll-toc أو hugo-pagetoc) تنقلًا دقيقًا تلقائيًا، وتتمكن فهارس البحث في الموقع من تحليلها بشكل صحيح.
معالجة الصور وملفات الوسائط
معظم الوثائق تتضمن لقطات شاشة، مخططات، وأحيانًا مقاطع فيديو قصيرة. يجب أن يتعامل خط التحويل مع هذه الأصول باعتبارها من أولويات العملية:
- الاستخلاص – استخراج كل صورة مدمجة من ملف المصدر. بالنسبة لـ Word وPowerPoint، تُخزن الصورة كجزءٍ ثنائي منفصل؛ إذًا الاستخلاص سهل. بالنسبة للـ PDF، الصور هي كائنات نقطية يمكن تصديرها بإعدادات غير فقدانية (PNG أو TIFF).
- إعادة التسمية بشكل متسق – استخدم نظام تسمية حتمي مثل
docname-figure01.png. يمنع ذلك التعارض عندما تظهر نفس الصورة في مستندات متعددة. - تحسين – مرّر الصور عبر ضاغط غير فقداني (مثل
pngquantمع--quality=100) ثم حوّلها إلى WebP للمتصفحات الداعمة. احفظ كلًا من WebP وPNG كبديل للمتصفحات القديمة. - الإشارة – أدخِل مسار الصورة النهائي في الـ Markdown بحيث ينسخ الـ SSG الملف إلى مجلد الأصول الناتج.
إذا رغبت بالحفاظ على الدقة الأصلية للأرشفة، خزنها في دليل منفصل raw/ مستبعد من الموقع العام ولكنه يبقى في المستودع لإعادة تصدير مستقبلية.
نقل البيانات الوصفية: من المصدر إلى الـ Front‑Matter
البيانات الوصفية هي ما يربط الوثائق بدورة حياتها. معظم أدوات الكتابة تدمج خصائص مثل:
- العنوان
- المؤلف(ون)
- تاريخ الإنشاء وآخر تعديل
- رقم الإصدار
- الكلمات المفتاحية / الوسوم
أثناء الاستخلاص، استعلم عن هذه الخصائص من حزمة الملف. في صيغ Office Open XML، يحتوي الجزء core.xml على بيانات Dublin Core. بالنسبة للـ PDF، يحتوي حزمة XMP على حقول مشابهة. بمجرد حصولك عليها، أنشئ كتلة YAML front‑matter في أعلى ملف الـ Markdown:
---
title: "كيفية إعداد TLS لـ Apache"
author: "جَنّ دوي"
date: 2024-06-12
lastmod: 2025-01-03
tags: [security, apache, tls]
version: "1.3"
---
إذا كان الملف المصدر يفتقر إلى حقلٍ ما، استخدم قيمة افتراضية منطقية (مثل اسم الملف للعنوان، أو التاريخ الحالي لحقل date). الحفاظ على توحُّد البيانات الوصفية عبر المستودع يتيح للـ SSG إنشاء صفحات وسوم، سجلات تغييرات، وتدفقات RSS تلقائيًا.
أتمتة سير العمل باستخدام CI/CD
بمجرد استقرار سكريبت التحويل، أدمجه في خط أنابيب CI (GitHub Actions، GitLab CI، Azure Pipelines). مثال على وظيفة نموذجية:
- Checkout مستودع الوثائق.
- Detect الملفات المصدرية المضافة أو المعدلة باستخدام
git diff. - Run حاوية التحويل (صورة Docker التي تستدعي
convertise.appعبر API) على الملفات المتغيّرة. - Commit ملفات الـ Markdown والأصول المُولدة مرة أخرى إلى فرع
docs/. - Trigger بناء الـ SSG (مثال:
hugo --minify). - Deploy الموقع الثابت إلى CDN.
بما أن خطوة التحويل حتمية وتعمل داخل حاوية معزولة، ستحصل على بناءات قابلة لإعادة الإنتاج. أي فشل – مثل PDF لا يمكن OCR‑ه – سيظهر كخطأ في CI، ما يدفع إلى تصحيح مبكر.
ضمان الجودة: التحقق من صحة ودقة التحويل
الأتمتة لا تكون ذات فائدة إلا إذا تم التحقق منها. نفّذ طبقتين من ضمان الجودة:
- Diff آلي – بعد التحويل، قارن النص المستخرج مع النص الأصلي باستخدام checksum أو أداة diff تتجاهل الفراغات. علم أي فقدان محتوى كبير (>5 % انخفاض) كتحذير.
- اختبار انحدار بصري – للصفحات الغنية بالصور، أنشئ لقطة شاشة للـ HTML المَصْدُور وقارنها بالنسخة الأساسية باستخدام أداة مثل
pixelmatch. يلتقط هذا الانزلاقات في التخطيط الناتجة عن جداول مكسورة أو CSS مفقود.
إذا رصد خط الأنابيب انحدارًا، يجب أن يوقف النشر ويعرض الفروقات في تعليقات طلب السحب. هذا يضمن أن الوثائق المنشورة لا تنحرف بصمت.
دراسة حالة: ترحيل قاعدة معرفة قديمة إلى Hugo
شركة SaaS متوسطة الحجم كانت تدير مركز المساعدة الخاص بها بمجموعة مختلطة من مستندات Word، وعروض PowerPoint، وملفات PDF مؤرشفة. كان المحتوى يُخزن على محرك مشترك، وكان فريق الدعم ينسخ الملفات يدويًا إلى بوابة ويب. قررت الشركة الانتقال إلى Hugo لاستفادتها من السرعة ومزايا التحكم بالإصدارات.
الخطوات المتبعة:
- جرد – سكريبت مسح المحرك، وصنّف الملفات حسب الامتداد.
- تحويل جماعي – باستخدام convertise.app، نفّذ الفريق مهمة ضخمة أخرجت ملفات Markdown وأصولًا مستخرجة إلى دليل
content/. - ربط البيانات الوصفية – سكريبت بايثون مخصص قرأ خصائص
core.xmlفي Word وأنتج front‑matter لكل ملف Markdown. - خط أنابيب الصور – جميع لقطات الشاشة حوّلت إلى WebP، وأعيد كتابة روابط الـ Markdown لتشير إلى دليل
static/images/. - دمج CI – GitHub Actions نفّذت التحويل على كل PR، لضمان أن أي مقالة دعم جديدة تتبع نفس العملية.
النتائج:
- انخفض حجم فهرس البحث بنسبة 40 % لأن النص أصبح الآن قابلًا للبحث.
- تحسّنت أوقات تحميل الصفحات بنسبة 30 % بعد تحويل الصور إلى WebP.
- استطاع فريق الدعم تعديل الوثائق مباشرةً في المستودع، مما أتاح إرجاع النسخ وتتبع التدقيق.
تُظهر هذه الحالة كيف أن استراتيجية تحويل منضبطة تحول مكتبة مستندات متفرقة إلى موقع ثابت سريع، قابل للبحث، وسهل الصيانة.
قائمة مراجعة لأفضل الممارسات لتحويل الوثائق إلى صيغة جاهزة للـ SSG
- تحديد صيغ المصدر وتحديد هدف نصي موحد (Markdown/HTML).
- استخلاص النص، الصور، والبيانات الوصفية باستخدام محللات أصلية كلما أمكن.
- الحفاظ على العناصر الدلالية (العناوين، القوائم، كتل الشيفرة، الهوامش) أثناء الاستخلاص.
- توحيد نهايات السطر والترميز إلى UTF‑8.
- إنشاء أسماء ملفات حتمية للأصول وملفات الـ Markdown.
- إنشاء front‑matter يحتوي على العنوان، المؤلف، التواريخ، الوسوم، والإصدار.
- تحسين الصور (ضغط غير فقداني، تحويل إلى WebP) وتخزين الأصليات منفصلًا.
- دمج سكريبت التحويل في مهمة CI حاوية.
- التحقق من المخرجات باستخدام diff آلي واختبارات انحدار بصرية.
- توثيق الخط سير لتسمح للمساهمين الجدد بامتداده دون كسر العملية.
الخاتمة
تحويل الوثائق القديمة والمتباينة إلى صيغة يمكن لمولدات المواقع الثابتة استهلاكها ليس مجرد تبديل نوع ملف؛ بل هو تحول منضبط يحافظ على البنية، والبيانات الوصفية، وقابلية البحث. من خلال استخراج المحتوى بأدوات تدعم الصيغة الأصلية، وتنقية النتائج، وإثرائها ببيانات الـ front‑matter الخاصة بالـ SSG، وتضمين العملية بالكامل في خط CI معاد قابل للإعادة، يمكن للفرق إبقاء قواعد المعرفة الخاصة بها حديثة، سريعة، وقابلة للبحث.
النهج الموضّح أعلاه يستفيد من خدمات تحويل عالية الجودة ومراعية للخصوصية مثل convertise.app، ما يضمن بقاء الملفات الأصلية داخل بيئة آمنة مع توفير الـ Markdown أو HTML النظيف المطلوب لسير عمل الوثائق الحديث.