تحسين محركات البحث في Jekyll
كيفية تحسين مواقع Jekyll للبحث — ولماذا يكون HTML الثابت فيها ملائمًا للزواحف افتراضيًا، إلى جانب إضافتي jekyll-seo-tag وjekyll-sitemap، والروابط الدائمة، والمجموعات، وrobots.txt، وقائمة إضافات GitHub Pages المسموح بها.
اللغات
دليل واحد في هذه الصفحة
- بيانات مصدر مرتبطةpages.github.com/versions.json
يُخرج Jekyll ملفات HTML ثابتة ومسطحة، فتتلقى الزواحف المحتوى كاملًا من أول جلب من دون تأخير لعرض JavaScript. لذلك لا تتمثل مهمة SEO في مقاومة إطار العمل، بل في ضبطه. ثبّت jekyll-seo-tag (للعنوان والوصف والرابط الأساسي وOpen Graph وTwitter Card وJSON-LD) وjekyll-sitemap (لملف sitemap.xml)، واضبط url: في _config.yml وإلا فسيُنتجان مخرجات معطّلة. اختر روابط دائمة نظيفة (/:title/ بدل الروابط المعتمدة على التاريخ) للمحتوى الدائم. وأنشئ robots.txt بنفسك؛ فلن ينشئه Jekyll. وانتبه إلى فخين في GitHub Pages: قائمة الإضافات المسموح بها (لا تعمل من دون بناء عبر GitHub Actions إلا مجموعة ثابتة) وضبط baseurl على نحو خاطئ في مواقع المشاريع، ما يعطّل كل رابط أساسي.
الخلاصة — يبني Jekyll موقعك كاملًا مسبقًا في صورة ملفات HTML عادية، لذلك ترى Google محتواك من الزيارة الأولى من دون انتظار JavaScript. وهذه نقطة انطلاق ممتازة لـSEO. ويتمثل العمل في الإعداد: ثبّت إضافتين (
jekyll-seo-tagللوسوم الوصفية وjekyll-sitemapلخريطة الموقع)، واضبط عنوان URL لموقعك في ملف الإعداد، واختر عناوين URL نظيفة، وأضف ملفrobots.txtبنفسك.
ما هو Jekyll
Jekyll مولّد مواقع ثابتة؛ أي أداة تحوّل محتواك المكتوب بلغة Markdown وقوالبك
إلى ملفات HTML مكتملة قبل أن يزور أحد الموقع. وهو مكتوب بلغة Ruby ويعمل محرّكًا
خلف GitHub Pages؛ فإذا سبق أن نشرت وثائق مشروع أو مدونة شخصية على عنوان
github.io، فمن المرجح أنك استخدمت Jekyll من دون أن تفكر في ذلك. Evidence for this claim Jekyll transforms source content and templates into a static website and is supported by GitHub Pages. Scope: Jekyll and GitHub Pages. Confidence: high · Verified: Jekyll documentation GitHub Pages: Jekyll
أما المهم لـSEO فهو أن Jekyll يُنتج ملفات HTML عادية، لذلك يحصل محرك البحث على محتواك كاملًا لحظة جلب الصفحة. ولا توجد JavaScript يجب تشغيلها أولًا. وهذا يزيل سببًا كاملًا محتملًا للفشل، لكنه لا يضمن الفهرسة أو الترتيب بمفرده؛ إذ يظل ذلك معتمدًا على محتواك وإعداداتك والبيانات الوصفية التي نتناولها أدناه.
ما الذي لا يفعله Jekyll نيابةً عنك
وهنا الفخ الذي يصادفه المبتدئون: Jekyll ملائم للزواحف، لكنه ليس «ملائمًا لـSEO» بمجرد تثبيته. فكثيرًا ما يأتي قالب Jekyll الافتراضي من دون وسوم عنوان أو أوصاف تعريفية أو بيانات منظّمة على الإطلاق. وعليك إضافتها. والخبر الجيد أن إضافتين رسميتين تنجزان معظم ذلك:
jekyll-seo-tag— تضيف تلقائيًا وسم العنوان والوصف التعريفي والرابط الأساسي ووسوم المشاركة الاجتماعية.jekyll-sitemap— تنشئ ملفsitemap.xmlتلقائيًا. Evidence for this claim The jekyll-seo-tag and jekyll-sitemap plugins generate SEO tags and sitemap files for Jekyll sites. Scope: Named Jekyll plugins. Confidence: high · Verified: Jekyll SEO Tag Jekyll Sitemap
خمسة أمور يجب ضبطها
- ثبّت
jekyll-seo-tagوضع{% seo %}داخل<head>في قالب التخطيط. - ثبّت
jekyll-sitemapكي تحصل محركات البحث على قائمة بصفحاتك. - اضبط
url:في_config.ymlعلى نطاقك الحقيقي؛ فكلتا الإضافتين تحتاجان إليه، وإلا أشارت الروابط الأساسية وخريطة الموقع إلىlocalhostوتعطّلتا. - استخدم نطاقًا مخصصًا بدل عنوان
username.github.io/repoالمجاني لأي موقع يهمك ترتيبه. - أضف
robots.txtبنفسك؛ إذ لا ينشئه Jekyll.
مفاجأة GitHub Pages
إذا استضفت الموقع على GitHub Pages، فلا يمكنك تثبيت أي إضافة تشاء ببساطة. يشغّل
GitHub برنامج Jekyll في وضع مقيّد لا يسمح إلا بقائمة قصيرة من الإضافات. ولحسن
الحظ، توجد jekyll-seo-tag وjekyll-sitemap كلتاهما في تلك القائمة، لذا تعمل
الأساسيات. أما أي شيء أكثر تقدمًا فيحتاج إلى إعداد بناء مختلف، وهو ما تغطيه علامة
التبويب «متقدم».
هل تريد النسخة الكاملة، بما فيها قائمة الإضافات المسموح بها، وخطأ baseurl الذي
يعطّل الروابط الأساسية، والروابط الدائمة، والمجموعات، والبيانات المنظّمة المخصصة؟
انتقل إلى علامة التبويب متقدم.
الخلاصة — يُخرج Jekyll ملفات HTML ثابتة ومسطحة وقت البناء، فيوجد المحتوى في الاستجابة الخام عند أول زحف، من دون خدمة عرض الويب أو تأخير الموجة الثانية. يتمثل عمل SEO في الضبط لا في البنية. ثبّت
jekyll-seo-tag(العنوان والوصف والرابط الأساسي وOG وTwitter Card وJSON-LD) وjekyll-sitemap(sitemap.xml)؛ وكلتاهما تتطلبurl:في_config.ymlوإلا أنتجتا مخرجات معطّلة. استخدم روابط دائمة نظيفة (/:title/) بدل المعتمدة على التاريخ للمحتوى الدائم. يهيمن فخان في GitHub Pages: قائمة الإضافات المسموح بها (يبني GitHub باستخدام--safe؛ وتحتاج الإضافات غير المسموح بها إلى بناء عبر GitHub Actions) وغيابbaseurlفي مواقع المشاريع، وهو ما يعطّل كل رابط أساسي مُنشأ. كما يثبّت GitHub Pages إصدارات محددة من الإضافات (الإصدار 3.10.0 من النواة، وإصدارات أقدم منjekyll-seo-tagوjekyll-sitemap)، لا مجرد تحديد الإضافات التي تعمل. تحتاج المجموعات إلىoutput: trueوإلا فلن تُعرض. وتُستبعد المسودات والمنشورات المؤرخة للمستقبل والمستندات ذاتpublished: falseمن البناء العادي، كما أن--incrementalتجريبي؛ فلا تستخدمه في عمليات النشر الإنتاجية. ولا يُنشأrobots.txtتلقائيًا؛ أنشئه بنفسك.
لماذا يفيد ناتج Jekyll الثابت في SEO
Jekyll مولّد مواقع ثابتة: يمرر قوالب Markdown وLiquid عبر خطوة بناء ويُخرج HTML مكتملًا مرة واحدة قبل أي طلب. وهذا التوقيت هو ميزة SEO بأكملها. Evidence for this claim Jekyll processes text and templates into static files during a build. Scope: Jekyll build architecture. Confidence: high · Verified: Jekyll documentation
يمر مسار Google بالمراحل: الزحف ← العرض ← الفهرسة، ويكون عرض JavaScript “a separate step” (ترجمة) «خطوة منفصلة» تنتظر في طابور؛ وهو ما يسميه الناس على نحو فضفاض عملية «الموجتين». تجلب الموجة الأولى HTML الخام وتفهرس النص والروابط فورًا، بينما تضع الموجة الثانية الصفحة في طابور خدمة عرض الويب لتشغيل JavaScript بعد “a few seconds to weeks” (ترجمة) «بضع ثوانٍ إلى أسابيع»، بحسب ميزانية الزحف. ومع Jekyll، تحتوي الموجة الأولى بالفعل على محتواك كله؛ فلا تلزم JavaScript لعرض المتن. الموجة الأولى = الموجة الثانية. لا تأخير في العرض ولا إنفاق لميزانيته. وهذا هو السبب نفسه الذي يجعل أي مولّد مواقع ثابتة البنية الأقل مخاطرة لقابلية الفهرسة.
وتترتب على ذلك الفوائد التالية:
- زمن TTFB أسرع. تعني الملفات المبنية مسبقًا والمقدّمة من شبكة CDN (تقع GitHub Pages خلف Fastly، ولدى Netlify وVercel شبكاتهما الطرفية) عدم وجود استعلامات لقواعد البيانات أو معالجة على الخادم؛ وهذا مفيد لـLCP ولسائر مؤشرات أداء الويب الأساسية.
- لا توجد حمولة JS مطلوبة للمحتوى ← ما يعني FCP وLCP أفضل من تطبيق SPA يعتمد على الإماهة.
- رموز حالة HTTP صحيحة في طبقة CDN بدل معالجة الأخطاء من جانب العميل.
لكن لا يغيّر شيء من ذلك الأساسيات: ما زالت المواقع الثابتة تحتاج إلى الوسوم الوصفية وخرائط المواقع والروابط الأساسية والبيانات المنظّمة والمحتوى الجيد. ناتج Jekyll ملائم للزواحف، أما البيانات الوصفية فعليك إعدادها.
GitHub Pages وتحسين محركات البحث في Jekyll
أكثر طرق نشر Jekyll شيوعًا هي GitHub Pages: ادفع المحتوى إلى فرع مفعّل فيه Pages وسيبني GitHub الموقع تلقائيًا. وتأتي هذه السهولة مع قيود تؤثر في SEO.
مواقع المشاريع مقابل مواقع المستخدمين/المؤسسات — قرار عنوان URL
- يعيش
username.github.io/repo-name(موقع مشروع) على نطاق فرعي مشترك مع آلاف المواقع الأخرى غير المرتبطة. وهو مناسب للوثائق والعروض التوضيحية والمشاريع الشخصية التي لا يحتاج فيها عنوان URL نفسه إلى حمل علامتك التجارية. - يضع النطاق المخصص (بتوجيه سجل
CNAMEإلى GitHub Pages) الموقع على عنوان URL تتحكم فيه، مع توفير GitHub لشهادة HTTPS تلقائيًا. وفي المواقع التي يهم فيها النطاق نفسه، مثل موقع شركة أو مدونة تبني لها جمهورًا، يتجنب استخدام نطاق مخصص من البداية ترحيل النطاق لاحقًا.
إذا كنت تتوقع الانتقال إلى نطاق مخصص في النهاية، فأعدّه مبكرًا. يتطلب أي
ترحيل للنطاق عمليات إعادة توجيه 301 (تتولاها jekyll-redirect-from) وفترة تشير
فيها الروابط الواردة وأي إشارات متراكمة إلى عنوان URL القديم. ويمكن تجنب هذا
الاضطراب باختيار النطاق النهائي مقدمًا بدل تغييره لاحقًا. هذه حجة تتعلق بالتخطيط
للترحيل، وليست ادعاءً بأن نطاقًا فرعيًا من github.io يتعرض لعقوبة بذاته.
baseurl — الخطأ الأول في الروابط الأساسية لمواقع المشاريع
تقع مواقع المشاريع تحت مجلد فرعي (/repo-name/). وإذا لم تضبط
baseurl: /repo-name في _config.yml، فسيكون كل رابط أساسي تنشئه
jekyll-seo-tag — وكذلك روابطك الداخلية — خاطئًا لأنه يفتقد المجلد الفرعي.
وهذا أكثر أخطاء الروابط الأساسية شيوعًا في مواقع مشاريع Jekyll. أما مواقع
المستخدمين/المؤسسات المقدّمة من جذر النطاق فلا تحتاج إلى baseurl.
قائمة الإضافات المسموح بها
يشغّل GitHub Pages برنامج Jekyll بالراية --safe ولا يسمح إلا بمجموعة ثابتة
من الإضافات. Evidence for this claim GitHub Pages builds Jekyll in safe mode and supports a documented set of plugins. Scope: GitHub Pages hosted builds. Confidence: high · Verified: GitHub Pages: Jekyll plugins ومن الإضافات المسموح بها ذات الصلة بـSEO:
jekyll-seo-tag✓jekyll-sitemap✓jekyll-redirect-from✓ (لعمليات إعادة التوجيه 301s عند تغيير عناوين URL)jekyll-paginate✓
الإضافات غير المسموح بها (ولن تعمل بصمت أو ستُظهر خطأ):
jekyll-last-modified-at— مطلوبة للحصول على<lastmod>دقيق في خريطة الموقع من الطوابع الزمنية للملفات- إضافات البيانات المنظّمة المخصصة
- أي شيء يوضع في مجلد
_plugins/
المسألة ليست الإضافات المسموح بها فحسب، بل إصداراتها أيضًا
لا يقيّد GitHub Pages الإضافات التي تعمل فحسب؛ بل يثبّت الإصدار الدقيق من كل
إضافة، كما تُثبّت بيئة البناء نفسها على إصدار أقدم من Jekyll. واعتبارًا من آخر
تحديث لـقائمة التبعيات، يشغّل البناء
المستضاف Jekyll 3.10.0 مع jekyll-seo-tag 2.8.0 وjekyll-sitemap 1.4.0
وjekyll-feed 0.17.0، بينما تصف وثائق jekyllrb.com الإصدار الحالي في المنبع،
4.4.1. ولا يُضمن وجود سلوك موثّق في أحدث README لإضافة ما في الإصدار الذي يشغّله
GitHub Pages فعليًا؛ لذا راجع pages.github.com/versions.json لمعرفة الإصدار
المثبّت قبل الاعتماد على راية أو مخرج بعينه. ويتجاوز البناء عبر GitHub Actions
هذا القيد أيضًا؛ إذ تتحكم في Gemfile وتحصل على الإصدارات التي تثبّتها بدل مجموعة
GitHub المثبّتة.
الحل البديل عبر GitHub Actions
ليس حل قائمة السماح «إضافة المزيد من حزم gem»، بل إيقاف تولّي GitHub للبناء.
شغّل Jekyll بنفسك في CI (actions/jekyll-build-pages، أو ابنِ محليًا وادفع
_site/ إلى فرع النشر باستخدام peaceiris/actions-gh-pages)، وعندها لا تعود
قائمة السماح سارية. ويمكنك تشغيل أي إضافة واختيار إصدارات Jekyll والإضافات بدل
وراثة المجموعة التي يثبّتها GitHub.
إضافة jekyll-seo-tag
هذه هي الإضافة الرسمية التي يجري صيانتها وتغطي معظم البيانات الوصفية الأساسية
التي لا يضيفها Jekyll بنفسه. وتعتمد مخرجاتها الدقيقة على الإصدار المثبّت وملف
_config.yml والبيانات الأمامية، وعلى ما إذا كان قالب التخطيط يستدعي
{% seo %} فعلًا؛ فمثلًا يثبّت GitHub Pages إصدارًا محددًا بدل تقديم أحدث إصدار
دائمًا، كما سيتضح أدناه. راجع دليل الاستخدام المتقدم لمعرفة المخرجات
الدقيقة لإصدارك، وتحقق مما وصل فعلًا بالبحث في HTML المبني لديك بدل افتراض اكتماله.
التثبيت:
# Gemfile
gem 'jekyll-seo-tag'# _config.yml
plugins:
- jekyll-seo-tag<!-- _layouts/default.html, before </head> -->
{% seo %}ما تنشئه تلقائيًا:
<title>— عنوان الصفحة ملحقًا به اسم الموقع (Page Title | Site Name)<meta name="description">— من البيانات الأماميةdescription:أو وصف الموقع<link rel="canonical">— مبني منsite.url+page.url- وسوم Open Graph (
og:titleوog:descriptionوog:urlوog:site_nameوog:image) - وسوم Twitter Card (
twitter:cardوtwitter:titleوtwitter:descriptionوtwitter:creatorوtwitter:image) - بيانات JSON-LD منظّمة (
BlogPostingللمنشورات وWebSiteللصفحة الرئيسية) - بيانات تعريف ترقيم الصفحات (عناوين URL التالية/السابقة)
إعدادات _config.yml المطلوبة — من دونها تنتج الإضافة مخرجات معطّلة:
title: Your Site Title
description: Your site description
url: "https://yourdomain.com" # CRITICAL — drives canonical URL generation
author:
name: Patrick Stox
twitter: patrickstox
url: https://patrickstox.com # author disambiguation
twitter:
username: patrickstox
card: summary_large_imageتجاوزات البيانات الأمامية لكل صفحة:
---
title: "Jekyll SEO Guide"
description: "How to optimize Jekyll sites for search engines."
image:
path: /assets/jekyll-seo-og.png
width: 1200
height: 630
alt: "Jekyll SEO diagram"
canonical_url: "https://example.com/jekyll-seo/" # override if needed
robots: noindex # per-page noindex
seo:
type: BlogPosting # schema.org type override
date_modified: 2025-01-15 # dateModified override for JSON-LD
---التعطيل (عندما يُخرج قالب التخطيط لديك وسومه الخاصة بالفعل):
{% seo title=false %} <!-- suppress the <title> -->
{% seo canonical=false %} <!-- suppress the canonical link -->هناك فخ يستحق التنبيه: تأتي كثير من القوالب البسيطة (ومنها minima) من دون
توصيل jekyll-seo-tag. ولا تؤدي إضافة الحزمة إلى Gemfile أي شيء ما لم يستدعِ
قالب التخطيط الخاص بالسمة {% seo %} فعلًا.
خرائط المواقع باستخدام jekyll-sitemap
نمط التثبيت نفسه (Gemfile + _config.yml). وتُنشئ الإضافة ملف sitemap.xml
متوافقًا مع sitemaps.org في المسار /sitemap.xml عند كل بناء.
تتطلب url: في _config.yml؛ فمن دونه لا تحتوي إدخالات خريطة الموقع
على نطاق.
التحكم في <lastmod> حسب ترتيب الأولوية:
last_modified_at:في البيانات الأمامية (الأفضل؛ تحكم صريح)- تاريخ إنشاء المنشور (الخيار الاحتياطي؛ وكثيرًا ما يكون خاطئًا للمحتوى الدائم الذي حُدّث لاحقًا)
- تاريخ تعديل نظام الملفات (يحتاج إلى
jekyll-last-modified-atغير المسموح بها)
أفضل ممارسة: أضف last_modified_at: YYYY-MM-DD إلى كل منشور وحدّثه عند
تحديث المحتوى؛ فهذه إشارة الحداثة التي يستند إليها تحديد أولوية إعادة الزحف.
استبعاد الصفحات:
# Per-page front matter
sitemap: false
# Global pattern (in _config.yml)
defaults:
- scope:
path: "assets/**/*.pdf"
values:
sitemap: falseإعداد الروابط الدائمة
تُضبط الروابط الدائمة على مستوى الموقع في _config.yml أو تُتجاوز لكل صفحة
في بياناتها الأمامية.
| النمط | القالب | ملاحظات SEO |
|---|---|---|
date (الافتراضي) | /:categories/:year/:month/:day/:title.html | مثقل بالتاريخ وهش إذا تغير تاريخ المنشور |
pretty | /:categories/:year/:month/:day/:title/ | شرطة مائلة ختامية من دون .html |
none | /:categories/:title.html | لا يدفن المحتوى تحت التاريخ |
| مخصص | /:title/ أو /:categories/:title/ | أكبر قدر من التحكم؛ موصى به للمحتوى الدائم |
الموصى به لمعظم المواقع:
permalink: /:title/
# or
permalink: /:categories/:title/لماذا تتجنب عناوين URL المعتمدة على التاريخ للمحتوى الدائم:
- يؤدي تغيير
date:في البيانات الأمامية للمنشور إلى تغيير عنوان URL ← فتتعطل الروابط الواردة. - يدفن التسلسل العميق (
/2019/03/14/post-title/) المحتوى بلا سبب. - (تكون عناوين URL المؤرخة مناسبة ومتوقعة للأخبار والصحافة؛ فهذا قرار يعتمد على السياق وليس قاعدة عامة.)
تحتاج المجموعات إلى إعداد خاص بها للروابط الدائمة:
collections:
case_studies:
output: true
permalink: /case-studies/:name/تحذير عند تغيير الأنماط: بعد فهرسة عناوين URL، يتطلب تبديل أنماط الروابط
الدائمة عمليات إعادة توجيه 301 (استخدم jekyll-redirect-from). وإذا تخطيت
عمليات إعادة التوجيه، أهدرت قيمة الروابط وأنشأت أخطاء 404s في Search Console.
المجموعات وSEO
المجموعات هي أنواع المحتوى المخصصة في Jekyll إلى جانب المنشورات والصفحات، مثل أقسام الوثائق وعناصر معرض الأعمال وأعضاء الفريق ودراسات الحالة والأسئلة الشائعة. وهناك متطلبان يحددان نجاح SEO فيها أو فشله:
-
يجب ضبط
output: true. فمن دونه لا تُعرض مستندات المجموعة أبدًا في صورة ملفات HTML منفردة، ولذلك لا يمكن فهرستها. وهذا قاتل صامت للفهرسة؛ فالمحتوى موجود في المستودع لكنه لا يصبح صفحة قابلة للزحف.collections: docs: output: true # REQUIRED for indexable pages permalink: /docs/:name/ -
يحتاج كل مستند إلى بيانات أمامية، حتى لو كانت كتلة
---فارغة. ومن دونها يتعامل Jekyll مع الملف على أنه ملف ثابت ثنائي: لا معالجة لـLiquid ولا بيانات وصفية ولا تكامل معjekyll-seo-tag.
لاحظ أن المجموعات لا تدخل في خلاصات RSS (فالخلاصات تشمل المنشورات وحدها). وعادةً ما تكون المجموعات البنية المناسبة لمواقع الوثائق الكبيرة رغم ذلك.
حالات النشر وعمليات البناء التزايدية
لدى Jekyll عدة مفاتيح مستقلة تتحكم فيما ينتهي فعليًا في الموقع المبني. ويؤدي الخلط بينها إما إلى صفحات لا تُبنى بصمت، أو إلى شحن محتوى مسودة/مستقبلي إلى الإنتاج عن طريق الخطأ:
- تُستبعد المسودات (
_drafts/) بالكامل من البناء العادي. ولا تظهر إلا عند تشغيلbundle exec jekyll serve --drafts(أوbuild --drafts) محليًا؛ فنقل منشور إلى_posts/مع تاريخ حقيقي هو ما ينشره فعليًا. - تُستبعد المنشورات المؤرخة للمستقبل (ذات
date:اللاحق للوقت الحالي) افتراضيًا. ويؤديfuture: trueفي_config.ymlأو الراية--futureإلى تضمينها؛ وهو أمر مفيد للمعاينة المحلية، لكن إبقاءه مفعّلًا في إعداد الإنتاج يعني أن المنشورات المجدولة تصبح حية لحظة البناء لا في تاريخها المقصود. - تستبعد
published: falseفي البيانات الأمامية المستند من البناء بصرف النظر عن تاريخه؛ وهي مفتاح منفصل عن المسودات والمنشورات المستقبلية، ومن السهل نسيانه بعد اختبار صفحة كنت تنوي شحنها. - توثّق Jekyll إعادة التوليد التزايدية (
--incremental) بوصفها تجريبية، وهي تتتبع رسم تبعيات محدودًا، ولا سيما التضمينات وقوالب التخطيط. وقد تصبح صفحة تمر علىsite.postsأو بيانات مجموعات أخرى (فهرس وسوم أو أرشيف أو منطق منشورات ذات صلة) قديمة تحت--incrementalمن دون أن يكتشف Jekyll تغير المنشورات الأساسية. لا تشغّلها ضمن نشر إنتاجي؛ بل استخدمbundle exec jekyll buildكاملًا لأي شيء تدفعه إلى الموقع الحي.
قبل الوثوق بأي من ذلك، ابنِ الموقع من دون الرايات التي تستخدمها محليًا
(--drafts و--future و--incremental)، وتأكد أن الناتج في _site/ يطابق ما
تنوي نشره؛ فالخيار الافتراضي الأكثر أمانًا لمسار النشر هو بناء نظيف وكامل وغير
تزايدي.
أجزاء الرأس المخصصة باستخدام Liquid
عندما لا تكفي jekyll-seo-tag، أنشئ ملف _includes/head.html الخاص بك:
<head>
<meta charset="UTF-8">
<title>
{% if page.title %}{{ page.title }} | {{ site.title }}
{% else %}{{ site.title }}{% endif %}
</title>
<meta name="description" content="
{%- if page.description -%}{{ page.description }}
{%- elsif page.excerpt -%}{{ page.excerpt | strip_html | strip_newlines }}
{%- else -%}{{ site.description }}
{%- endif -%}">
<link rel="canonical" href="{{ page.url | prepend: site.url }}">
{% seo %}
</head>مرشحات Liquid الأساسية لـSEO:
| strip_html— يزيل الوسوم من المقتطف التلقائي (ضروري للأوصاف النظيفة)| strip_newlines— يزيل فواصل الأسطر من المقتطفات| truncate: 160— حد اختياري لعدد الأحرف من جانب القالب، وليس حدًا تفرضه Google. فضّل وصفًا مؤلفًا ومخصصًا للصفحة وعاين المقتطف المعروض؛ إذ يختلف مدى ملاءمته حسب طلب البحث والجهاز واللغة ونظام الكتابة.| prepend: site.url— يبني عناوين URL مطلقة للروابط الأساسية ووسوم OG| date_to_xmlschema— تواريخ ISO 8601 لحقليdatePublishedوdateModifiedفي JSON-LD| default: fallback— قيمة احتياطية عندما يكون المتغير nil
بيانات JSON-LD مخصصة تتجاوز ما تُخرجه jekyll-seo-tag:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": {{ page.title | jsonify }},
"datePublished": "{{ page.date | date_to_xmlschema }}",
"dateModified": "{{ page.last_modified_at | default: page.date | date_to_xmlschema }}",
"author": {
"@type": "Person",
"name": "{{ page.author.name | default: site.author.name }}",
"url": "{{ page.author.url | default: site.author.url }}"
}
}
</script>لا يُنشأ robots.txt تلقائيًا
لا ينشئ Jekyll ملف robots.txt. عليك إنشاؤه بنفسك في جذر الموقع. ضمّن كتلة
بيانات أمامية فارغة كي يعالج Liquid الملف (وبذلك تُحل {{ site.url }}):
---
---
User-agent: *
Allow: /
Sitemap: {{ site.url }}/sitemap.xmlمن دون ذلك، لا توجد إشارة إلى خريطة الموقع في robots.txt، وبعض الزواحف
تستخدمها آليةً للاكتشاف. (يتحكم robots.txt في الزحف لا الفهرسة؛ وللصورة
الكاملة راجع الزحف.)
خرافات شائعة عن SEO في Jekyll
«يتولى Jekyll تحسين محركات البحث تلقائيًا». الناتج الثابت ملائم للزواحف، لكن البيانات الوصفية تحتاج إلى إعداد صريح. وكثيرًا ما تأتي القوالب الافتراضية من دون أي وسوم SEO.
«GitHub Pages مناسب لـSEO؛ فهو مجاني». GitHub Pages نفسه مناسب؛ فالناتج
الثابت ملائم للزواحف بصرف النظر عن المضيف. وتتمثل المحاذير في قائمة الإضافات
المسموح بها (والإصدارات المحددة التي تثبّتها، لا مجرد أسماء الإضافات)، وكذلك في
اختيار نطاق مخصص قبل بناء جمهور على github.io إذا كانت علامتك التجارية تعتمد
على عنوان URL.
«المواقع الثابتة لا تحتاج إلى خرائط مواقع». تستطيع Google العثور على
الصفحات عبر الروابط، لكن خريطة الموقع تسرّع اكتشافها وتحمل إشارات <lastmod>.
وتجعل jekyll-sitemap ذلك أمرًا بسيطًا.
«Jekyll ميت». إنه في وضع صيانة ناضج؛ فقد صدر الإصدار v4.4.1 في يناير 2025. توجد ميزات جديدة قليلة، لكنه يخضع للصيانة ويظل آمنًا، وستدعمه GitHub Pages إلى أجل غير مسمى. وهو خيار راسخ وممل بالمعنى الجيد للمدونات والوثائق البسيطة.
«يمكنني استخدام أي إضافة على GitHub Pages». لا؛ فهناك --safe وقائمة
سماح ثابتة. والحل هو GitHub Actions، لا المزيد من حزم gem.
موقع Jekyll ضمن الصورة الأوسع
Jekyll واحد من المولّدات الستة في مجموعة مولّدات المواقع الثابتة؛ وهو الخيار الافتراضي في GitHub Pages وأول مولّد يقابله معظم المطورين. وللسياق الأوسع حول كيفية عرض Google لـJavaScript ومتى تحتاج إليها فعلًا، راجع مركز SEO لـJavaScript. كما ينطبق على Jekyll انضباط حداثة البناء الذي يسري على كل مولّد مواقع ثابتة: لا يكون الموقع الثابت أحدث من آخر عملية بناء له، ولا تصل التعديلات إلى محركات البحث حتى تعيد البناء والنشر.
ملخص الذكاء الاصطناعي
خلاصة مكثفة للنسخة المتقدمة:
- Jekyll مولّد مواقع ثابتة مكتوب بلغة Ruby وهو المحرّك وراء GitHub Pages. يُخرج HTML مسطحًا وقت البناء، فيوجد المحتوى في الاستجابة الخام عند أول زحف: لا خطوة لعرض JavaScript ولا تأخير للموجة الثانية. وهذه ميزة SEO الأساسية المشتركة بين كل مولّدات المواقع الثابتة.
- يتمثل عمل SEO في الضبط لا في البنية. فكثيرًا ما تفتقر القوالب الافتراضية إلى بيانات SEO الوصفية تمامًا.
- تنشئ
jekyll-seo-tag(الإضافة الرسمية) تلقائيًا العنوان والوصف والرابط الأساسي وOpen Graph وTwitter Card وJSON-LD (BlogPosting/WebSite). أضف{% seo %}إلى<head>في قالب التخطيط، ويمكن تجاوز القيم لكل صفحة في البيانات الأمامية. - تنشئ
jekyll-sitemapملفsitemap.xmlتلقائيًا. وتتطلب كلتا الإضافتينurl:في_config.ymlوإلا تعطلت المخرجات (فتشير الروابط الأساسية/خريطة الموقع إلى localhost). - الروابط الدائمة: فضّل
/:title/أو/:categories/:title/على عناوين URL المعتمدة على التاريخ للمحتوى الدائم (فتتغير عناوين URL المؤرخة إذا تغير تاريخ المنشور). - تحتاج المجموعات إلى
output: true(وإلا فلن تُعرض كصفحات)، كما يحتاج كل مستند إلى بيانات أمامية (وإلا فلن تُعالج بياناته الوصفية). - حالات النشر: تُستبعد المسودات (
_drafts/) والمنشورات المؤرخة للمستقبل والمستندات ذاتpublished: falseمن البناء العادي ما لم تطلب تضمينها صراحة (--draftsو--future). و--incrementalتجريبي وقد يفوّت الصفحات التي تعتمد علىsite.posts؛ فلا تستخدمه في نشر إنتاجي. - لا يُنشأ
robots.txtتلقائيًا؛ أنشئه يدويًا (مع بيانات أمامية فارغة كي يحل Liquid قيمة{{ site.url }}في سطرSitemap:). - فخان في GitHub Pages: قائمة الإضافات المسموح بها (بناء
--safe؛ ولا يُسمح من إضافات SEO إلا بـjekyll-seo-tagوjekyll-sitemapوjekyll-redirect-fromوjekyll-paginate، أما غيرها فيحتاج إلى بناء عبر GitHub Actions) وغيابbaseurlفي مواقع المشاريع، ما يعطّل كل رابط أساسي. كما يثبّت GitHub Pages إصدارات محددة من الإضافات (مثل Jekyll 3.10.0 للنواة)، وقد تتأخر عن أحدث إصدار في المنبع. - إذا كان النطاق المخصص مهمًا لعلامتك التجارية، فأعدّه مبكرًا بدل الاعتماد
على
username.github.io/repo؛ فترحيل النطاق لاحقًا يعني عمليات إعادة توجيه 301s وفترة تشير فيها الروابط الواردة إلى عنوان URL القديم. كما يثبّت GitHub Pages إصدارات محددة من الإضافات، لا أسماء الإضافات فقط، وقد تتأخر عن أحدث إصدار في المنبع. - ينطبق شرط حداثة البناء كما في أي مولّد مواقع ثابتة: لا تصل التغييرات إلى البحث إلا بعد إعادة البناء والنشر.
الوثائق الرسمية
وثائق من مصادر أولية: Jekyll وإضافاته وGitHub Pages ومحركات البحث.
Jekyll
- وثائق Jekyll — مركز الوثائق.
- الروابط الدائمة — الأنماط المضمّنة والقوالب المخصصة.
- البيانات الأمامية — كتلة YAML التي تتحكم في البيانات الوصفية لكل صفحة.
- المجموعات — أنواع المحتوى المخصصة ومتطلب
output: true. - الإضافات — كيفية عمل نظام إضافات Jekyll.
- المتغيرات — متغيرات
siteوpageومرشحات Liquid المستخدمة في أجزاء الرأس.
الإضافات الرسمية
- jekyll-seo-tag — إضافة البيانات الوصفية، إلى جانب دليل الاستخدام المتقدم.
- jekyll-sitemap — إنشاء
sitemap.xmlتلقائيًا. - jekyll-redirect-from — عمليات إعادة التوجيه 301 عند تغيير عناوين URL.
GitHub Pages
- حول GitHub Pages وJekyll — كيفية عمل البناء التلقائي.
- حول النطاقات المخصصة وGitHub Pages — إعداد النطاق المخصص.
- pages.github.com/versions.json — قائمة الإضافات الحية المسموح بها وإصدارات التبعيات المثبّتة.
- إصدارات Jekyll وendoflife.date/jekyll — حالة الإصدار والصيانة.
محركات البحث
- أساسيات SEO لـJavaScript — مراحل الزحف ← العرض ← الفهرسة (العرض على موجتين) التي يتيح لك البناء الثابت تخطيها للمحتوى.
- دليل متعمق لكيفية عمل بحث Google — موضع العرض في المسار.
- مؤشرات أداء الويب الأساسية (web.dev) — مقاييس الأداء التي يستفيد منها الموقع الثابت السريع بنيويًا.
اقتباسات من المصدر
لا توجد اقتباسات مسجلة من ممثلي Google أو Bing تتناول Jekyll تحديدًا. ولا تعلق Google على مولّدات المواقع الثابتة منفردة. وتستند حجة SEO لصالح Jekyll إلى إرشادات Google العامة بشأن العرض وHTML الثابت، وهي تنطبق على أي موقع ثابت.
Google — العرض خطوة منفصلة تنتظر في طابور (وهي ما يزيله ناتج Jekyll الثابت من المسار الحرج)
- “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome.” (ترجمة) «أثناء الزحف، تعرض Google الصفحة وتشغّل أي JavaScript تعثر عليها باستخدام إصدار حديث من Chrome.» — وثائق Google Search Central. ومع Jekyll، لا تلزم JavaScript لعرض المتن، لذلك لا تكلفك هذه الخطوة شيئًا. الانتقال إلى الاقتباس
- “Rendering is important because websites often rely on JavaScript to bring content to the page, and without rendering Google might not see that content.” (ترجمة) «العرض مهم لأن المواقع تعتمد غالبًا على JavaScript لإحضار المحتوى إلى الصفحة، ومن دون العرض قد لا ترى Google ذلك المحتوى.» — أي إذا كان محتواك موجودًا بالفعل في HTML الثابت، كما في Jekyll، فلا يمكن للعرض أن يكلفك الظهور. الانتقال إلى الاقتباس
قائمة تحقق SEO لموقع Jekyll
مراجعة سريعة للتأكد من إعداد موقع Jekyll لديك للترتيب:
- ضُبط
url:في_config.ymlعلى نطاق الإنتاج الحقيقي (لاlocalhost:4000). - في موقع مشروع على GitHub Pages، ضُبط
baseurl: /repo-name(تخطّ ذلك في مواقع المستخدمين/المؤسسات عند الجذر). - ثُبّتت
jekyll-seo-tagويستدعي قالب تخطيط السمة{% seo %}فعلًا داخل<head>. - ثُبّتت
jekyll-sitemapويُنشأ/sitemap.xml. - أُرسلت خريطة الموقع إلى Google Search Console وBing Webmaster Tools.
- ضُبطت
title:وdescription:وauthor:في_config.yml. - لكل منشور/صفحة
description:صريح (لا تعتمد على المقتطف التلقائي). - يوجد
last_modified_at:على المنشورات ويُحدّث عند تغيير المحتوى. - تستخدم الروابط الدائمة
/:title/أو/:categories/:title/للمحتوى الدائم (لا النمط الافتراضي المعتمد على التاريخ). - يوجد
robots.txt(مع بيانات أمامية فارغة) ويشير إلى خريطة الموقع. - لكل مجموعة ينبغي فهرستها
output: true. - لكل مستند مجموعة بيانات أمامية (حتى لو كانت
---فارغة). - ضُبط نطاق مخصص (مع HTTPS موفر تلقائيًا)، لا نطاق
github.ioالفرعي المجرد. - تقترن تغييرات عناوين URL/الروابط الدائمة بعمليات إعادة توجيه 301s عبر
jekyll-redirect-from. - ضُغطت الصور قبل الإيداع (فلا يحسّنها Jekyll وقت البناء).
- يُفرض نمط واحد للشرطة المائلة الختامية عبر نمط الرابط الدائم (لا نسخ
/page/مقابل/page). - تعمل عمليات بناء الإنتاج من دون
--draftsأو--future، ولا تبقىpublished: falseفي أي صفحة تنوي شحنها. - تستخدم عمليات النشر الإنتاجية
bundle exec jekyll buildكاملًا، لا--incremental(فهو تجريبي وقد يفوّت الصفحات المعتمدة علىsite.posts).
ورقة غش SEO لموقع Jekyll
الإضافتان الأساسيتان
| الإضافة | ما تفعله | مسموح بها في GitHub Pages؟ | تحتاج إلى |
|---|---|---|---|
jekyll-seo-tag | العنوان والوصف والرابط الأساسي وOG وTwitter Card وJSON-LD | نعم ✓ | url: و{% seo %} في <head> |
jekyll-sitemap | إنشاء sitemap.xml تلقائيًا | نعم ✓ | url: |
jekyll-redirect-from | عمليات إعادة توجيه 301 | نعم ✓ | redirect_from: في البيانات الأمامية |
jekyll-last-modified-at | <lastmod> من نظام الملفات | لا ✗ | بناء عبر GitHub Actions |
مفاتيح _config.yml المطلوبة (وإلا تعطّلت المخرجات)
| المفتاح | السبب |
|---|---|
url: | الروابط الأساسية + إدخالات خريطة الموقع؛ ومن دونه ← localhost |
baseurl: | مواقع المشاريع تحت /repo/؛ ومن دونه ← روابط أساسية معطّلة |
title: / description: | القيم الافتراضية لـjekyll-seo-tag |
author: | معلومات المؤلف في JSON-LD |
أنماط الروابط الدائمة
قيمة permalink: | الناتج | الاستخدام |
|---|---|---|
date (الافتراضي) | /cat/2019/03/14/title.html | تجنبه للمحتوى الدائم |
pretty | /cat/2019/03/14/title/ | محتوى مرتبط بالتاريخ |
none | /cat/title.html | لا دفن تحت التاريخ |
/:title/ | /title/ | معظم المواقع ذات المحتوى الدائم |
حقائق سريعة
- ناتج Jekyll هو HTML ثابت ← لا تأخير للموجة الثانية من العرض؛ فالمحتوى موجود في أول جلب.
- لا يُنشأ
robots.txtتلقائيًا؛ أنشئه مع بيانات أمامية فارغة. - تحتاج المجموعات إلى
output: trueوبيانات أمامية، وإلا فلا تُفهرس. - يبني GitHub Pages باستخدام
--safe+ قائمة سماح للإضافات؛ وتحتاج الإضافات غير المسموح بها إلى بناء عبر GitHub Actions. - إصدار Jekyll الحالي في المنبع: v4.4.1 (يناير 2025)؛ بينما يشغّل GitHub Pages
إصدارًا مثبّتًا هو v3.10.0 مع إصداراته المثبّتة من الإضافات
(
jekyll-seo-tag2.8.0 وjekyll-sitemap1.4.0 وjekyll-feed0.17.0). راجع pages.github.com/versions.json لمعرفة القائمة الحالية. - إذا كان النطاق المخصص مهمًا لعلامتك التجارية، فأعدّه قبل بناء جمهور على
username.github.io/repoلتتجنب ترحيل النطاق لاحقًا.
بناء موقع Jekyll والتحقق منه محليًا
قبل الوثوق بالإنتاج، ابنِ الموقع محليًا وتحقق من وجود بياناتك الوصفية فعليًا في HTML.
macOS / Linux
# Install dependencies and serve locally (defaults to http://localhost:4000)
bundle install
bundle exec jekyll serve
# Build the production site into _site/ (override the dev url)
JEKYLL_ENV=production bundle exec jekyll build
# Confirm jekyll-seo-tag actually emitted a canonical + title into a built page
grep -i 'rel="canonical"' _site/index.html
grep -i "<title>" _site/index.html
# Confirm the sitemap was generated and points at your real domain (not localhost)
grep -i "<loc>" _site/sitemap.xml | headWindows (PowerShell)
# Install dependencies and serve locally
bundle install
bundle exec jekyll serve
# Build the production site (set the env var for this command)
$env:JEKYLL_ENV="production"; bundle exec jekyll build
# Confirm canonical + title made it into the built HTML
Select-String -Path _site\index.html -Pattern 'rel="canonical"'
Select-String -Path _site\index.html -Pattern "<title>"
# Confirm the sitemap was generated with your real domain
Select-String -Path _site\sitemap.xml -Pattern "<loc>" | Select-Object -First 10إذا أظهرت إدخالات <loc> أو الرابط الأساسي localhost:4000، فهذا يعني أن
url: غير مضبوط (أو أن JEKYLL_ENV=production لم يُطبّق). أصلح _config.yml
قبل النشر.
نموذج أولي لملف robots.txt في Jekyll
احفظ هذا باسم robots.txt في جذر الموقع. وكتلة البيانات الأمامية الفارغة هي
ما يجعل Liquid يعالج الملف لكي تُحل {{ site.url }}:
---
---
User-agent: *
Allow: /
Sitemap: {{ site.url }}/sitemap.xml أدوات SEO لمواقع Jekyll
jekyll-seo-tag— الإضافة الرسمية للبيانات الوصفية (العنوان والوصف والرابط الأساسي وOG وTwitter Card وJSON-LD). وهي أكبر مكسب منفرد لـSEO في موقع Jekyll.jekyll-sitemap— الإضافة الرسمية لإنشاءsitemap.xmlتلقائيًا.jekyll-redirect-from— إنشاء عمليات إعادة توجيه 301 في البيانات الأمامية عند تغيير الروابط الدائمة.- GitHub Actions (
actions/jekyll-build-pagesوpeaceiris/actions-gh-pages) — ابنِ Jekyll بنفسك للتحرر من قائمة إضافات GitHub Pages وتشغيل أي إضافة. - Google Search Console — تحقّق من الموقع وأرسل خريطة الموقع وراقب الفهرسة/التغطية. وهو ضروري لموقع Jekyll جديد.
- Bing Webmaster Tools — أرسل خريطة الموقع (ويمكنك استيراد بيانات الاعتماد من GSC).
- عرض المصدر / فحص عنوان URL — تأكد من وجود العنوان والوصف التعريفي والرابط الأساسي في HTML الخام (وينبغي أن تكون موجودة لأن Jekyll ثابت).
- PageSpeed Insights / web.dev — افحص مؤشرات أداء الويب الأساسية؛ وينبغي أن يحقق موقع Jekyll الثابت نتائج جيدة، لكن الصور غير المحسّنة هي العائق الشائع.
أخطاء SEO في Jekyll ينبغي تجنبها
أخطاء ملموسة يرتكبها الناس فعلًا عند إعداد Jekyll للبحث؛ والهدف الوقاية لا التشخيص.
ترك url: من دون ضبط في _config.yml
تبني jekyll-seo-tag وjekyll-sitemap كلتاهما عناوين URL مطلقة من
site.url. وإذا تخطيت ضبطه، فإما أن تشير وسوم الروابط الأساسية وإدخالات
<loc> في خريطة الموقع إلى localhost:4000 (قيمة التطوير الافتراضية)، أو
تخرج بلا نطاق أصلًا؛ وهكذا تضلل الروابط الأساسية وخريطة الموقع الزواحف بدل
مساعدتها. افعل هذا بدلًا من ذلك: اضبط url: على نطاق الإنتاج الحقيقي في
_config.yml قبل أول نشر، وابحث في مخرجات _site/ المبنية عن localhost
للتأكد من عدم تسربه.
تخطي baseurl في موقع مشروع على GitHub Pages
تقع مواقع username.github.io/repo-name تحت مجلد فرعي /repo-name/. وإذا
لم يُضبط baseurl: /repo-name، افتقد كل رابط أساسي تنشئه jekyll-seo-tag —
وكذلك روابطك الداخلية — ذلك المجلد الفرعي، وأشار إلى عنوان URL غير موجود. وهذا
أكثر أخطاء الروابط الأساسية شيوعًا في مواقع مشاريع Jekyll. افعل هذا بدلًا من
ذلك: اضبط baseurl: في مواقع المشاريع (ولا تحتاج إليه مواقع المستخدمين/
المؤسسات عند جذر النطاق)، وقارن الرابط الأساسي لصفحة مبنية بعنوانها الفعلي الحي.
افتراض قابلية فهرسة مجموعة من دون output: true
المجموعات (أقسام الوثائق ودراسات الحالة والنبذات عن أعضاء الفريق) هي نوع المحتوى
المخصص في Jekyll، لكن من دون output: true في _config.yml لا تُعرض المستندات
مطلقًا كملفات HTML منفردة؛ فيبقى المحتوى في المستودع ولا يصبح صفحة قابلة للزحف.
ولا يظهر خطأ أو تحذير، بل مجرد صفحات لا توجد أبدًا. افعل هذا بدلًا من ذلك:
اضبط output: true في كل مجموعة يُراد نشرها، وتأكد بعد البناء من وصول ملفات HTML
المتوقعة فعلًا إلى _site/.
استخدام روابط دائمة معتمدة على التاريخ للمحتوى الدائم
يدمج نمط الرابط الدائم الافتراضي في Jekyll
(/:categories/:year/:month/:day/:title.html) تاريخ النشر في عنوان URL.
وإذا غيّرت date: في البيانات الأمامية للمنشور لاحقًا — وهو ما يفعله الناس
غالبًا لمجرد إعادة نشره — تغير عنوان URL معه، فتعطلت كل الروابط الواردة ولزمك
تنظيف عمليات إعادة توجيه لم تخطط له. افعل هذا بدلًا من ذلك: استخدم
/:title/ أو /:categories/:title/ للمنشورات الدائمة، واقصر الروابط الدائمة
المؤرخة على المحتوى المرتبط فعلًا بتاريخ مثل الأخبار، حيث يكون التاريخ مناسبًا
في عنوان URL.
محاولة تثبيت إضافة غير مسموح بها على GitHub Pages وتوقع تشغيلها
يبني GitHub موقع Jekyll بالراية --safe التي تتخطى بصمت أي إضافة خارج قائمة
سماح ثابتة أو تعرض خطأً بشأنها؛ ولذلك فإن إسقاط حزمة مثل
jekyll-last-modified-at أو إضافة بيانات منظّمة مخصصة في _plugins/ ثم دفعها
لا يجعلها تعمل في بناء GitHub Pages الافتراضي. افعل هذا بدلًا من ذلك: تحقق
أولًا من الإضافة في
pages.github.com/versions.json؛ وإذا
لم تكن مدرجة، فابنِ باستخدام GitHub Actions (actions/jekyll-build-pages أو
بناء محلي يُدفع عبر peaceiris/actions-gh-pages) بدل مقاومة قائمة السماح.
افتراض أن Jekyll يوفر robots.txt
لا يُنشئ Jekyll ملف robots.txt؛ فلا مفتاح لإضافة ولا ملف افتراضي ولا شيء.
ولا يكون الموقع الذي لا يحتوي robots.txt معطلًا للفهرسة، لكنه لا يحتوي أيضًا
على مرجع Sitemap: للزواحف التي تستخدم robots.txt آليةً للاكتشاف. افعل
هذا بدلًا من ذلك: أنشئ robots.txt بنفسك في جذر الموقع مع كتلة بيانات أمامية
فارغة (--- ---) كي يعالجه Liquid وتُحل {{ site.url }} في سطر Sitemap:.
اختبر نفسك: SEO في Jekyll
خمسة أسئلة سريعة عن تحسين مواقع Jekyll للبحث. اختر إجابة لكل سؤال ثم تحقق منها.
موارد تستحق وقتك
كتاباتي
- JavaScript SEO: A Definitive Guide — العرض وتكافؤ DOM، ولماذا يقع الناتج الثابت/المعروض مسبقًا (مثل ناتج Jekyll) في الطرف الأقل مخاطرة من الطيف.
- The Beginner’s Guide to Technical SEO — موضع بنية العرض وخرائط المواقع ضمن الصورة الأكبر.
محاضراتي
- How Search Works (SlideShare) — شرحي للزحف والعرض والفهرسة والترتيب. (وينطبق إخلاء المسؤولية الدائم لدي: “This is my understanding of systems… not going to be 100% complete or accurate.” (ترجمة) «هذا هو فهمي للأنظمة… ولن يكون مكتملًا أو دقيقًا بنسبة 100%.»)
من أنحاء المجال
- Jekyll docs — الوثائق الرسمية، بما فيها permalinks وcollections.
- jekyll-seo-tag — إضافة البيانات الوصفية الرسمية وadvanced usage guide الخاص بها.
- jekyll-sitemap — إضافة خريطة الموقع الرسمية.
- حول GitHub Pages وJekyll — وثائق GitHub حول عملية البناء وقيودها.
- pages.github.com/versions.json — قائمة إضافات GitHub Pages المسموح بها وإصداراتها المثبّتة، وهي المصدر المعتمد.
- Google Search Central — JavaScript SEO basics — مراحل العرض التي يتيح لك البناء الثابت تخطيها.
- CloudCannon — jekyll-seo-tag showcase — شرح تطبيقي للإضافة من أحد الممارسين.
سجل التغييرات
تم التحديث في 22 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 27 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 18 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.