هندسة البرمجيات

    كيف تُنتج مئاتِ الصفحات بـ Programmatic SEO: دليلٌ معماريٌّ عملي

    المعماريّةُ لإنتاج مئاتٍ من الصفحات ذات قيمة SEO من قالبٍ واحد ومصدرِ بياناتٍ مُهيكَل. نَستعرض مصفوفتنا الخاصّة من ٣٢ مدينة × لغة كحالة دراسة. ملاحظةٌ هندسيّة من eCloud Tech.

    نُشر: ٢٥ مايو ٢٠٢٦9 د قراءة
    programmatic-seoمعمارية-seoمصفوفة-المدنvite-react-ssg

    Programmatic SEO هي إحدى أكثر التقنيات التي يُساءُ فهمُها في التسويق الرقمي. من جانبٍ شعاراتُ "خَدِّعوا Google بمحتوًى مُولَّد من SQL"؛ من جانبٍ آخر تَحذيراتُ "عقوبةُ thin content حتمية". كلاهما ناقص. عند التطبيق الصحيح، يُتيح Programmatic SEO للمواقع المؤسسية الاستحواذَ على الاستعلامات طويلةِ الذيل من موقعٍ بلا منافس؛ عند التطبيق الخاطئ، تَسقط الصفحات من الفهرس خلال ستّة أشهر.

    ما تَعلَّمَه خدمتنا لهندسة منصّاتِ Programmatic SEO من ثمانية مشاريع في الـ ٢٤ شهرًا الماضية: النجاحُ = معماريّة + جودةُ بيانات + ربطٌ داخلي + صبر. لا شيءَ منها وحده يَكفي. في هذا المقال نَأخذ مصفوفتَنا الخاصّة من ٣٢ مدينة × لغة كحالة دراسة، ونَستعرض سبعَ ممارساتٍ بالترتيب — مختلفةٌ عن المجلّاتِ في تكنوبارك TÜBİTAK، أو لوائحِ BDDK، أو إرشاداتِ المفوّضية الأوروبية: خطُّ إنتاجنا الخاصّ.

    ١. السؤالُ الاستراتيجي — ما الذي نُؤتمته، وما الذي لا

    تعريفُ الفرصة الصحيح لـ Programmatic SEO هو محتوًى يَملك نظيرًا في مصفوفةٍ ثنائية البُعد. فكرةُ "لِنُنتج مئاتَ منشورات المدوّنة المنفصلة" نقطةُ بدايةٍ خاطئة — منشوراتُ المدوّنة تَتمايز على جودة المحتوى ولا تُلائم الإنتاجَ البرمجي. المرشّحون الصحيحون:

    • مدينة × خدمة (Şanlıurfa برمجيات، İstanbul برمجيات، Ankara برمجيات…): البُنيةُ على موقعنا الخاصّ.
    • منتج × ميزة (تجارة إلكترونية + شحن، تجارة إلكترونية + دفع، تجارة إلكترونية + KVKK…).
    • فئة × مخزون (فندق + İstanbul، فندق + Antalya…).
    • مقارنة (X مقابل Y).
    • اتّجاه / مسافة (مسارُ A → B).

    المرشّحون الخاطئون: استشاراتٌ خاصّة (كلُّ عميلٍ مختلف)، عرضُ قيمةٍ مؤسسي (مَرتبطٌ بالعلامة)، منتجاتٌ ذات تكلفة قرارٍ عالية (المشتري لا يَشتري دون قراءة الصفحة).

    سؤالُ الاختبار العملي: "هل ٧٠% من الصفحة يأتي من البيانات؟" نعم → مُلائم. إذا كان ٧٠% من الصفحة يأتي من تفسيرٍ/فهم، فالمنشورُ التقليدي أنسب. على صفحات المدن لدينا حوالي ٦٠-٧٠% بياناتٌ مُهيكَلة (ملفُّ القطاع، النقل، الرمزُ البريدي، ملفُّ العملاء، المعالم المحلية) + ٣٠-٤٠% محتوًى تحريري (تَوضيعُ الخدمة، نهجُ فريقنا). هذه النسبةُ مُستدامة.

    اختبارٌ عمليٌّ ثانٍ: أيُّ استعلاماتٍ طويلة الذيل يَترك المنافسون مفتوحةً لكم. لذيلٍ قصيرٍ مثل "Şanlıurfa شركة برمجيات" يَتنافس ١٠-١٥ منافسًا؛ لذيلٍ طويلٍ مثل "استشاراتُ برمجيات Karaköprü Teknokent" تقريبًا لا أحد. Programmatic SEO يَخلق قيمةً هنا بالضبط — بدلَ التنافس بميزانيّاتِ SEO بملايين الدولارات على الذيول القصيرة، خِدمةُ ألفِ ذيلٍ طويل تلقائيًّا. كلُّ ذيلٍ طويل يَجلب trafficًا قليلًا (١٠-٥٠/شهر)، لكنّ ألفًا معًا تَتجاوز traffic الصفحة الرئيسية؛ ومعدّلاتُ التحويل أعلى ٣-٥× لأنّ الباحثَ يَعرف بالضبط ماذا يُريد.

    ٢. طبقةُ البيانات — جودةُ المصدر المُهيكَل تُقرّر كلَّ شيء

    أكثرُ خطوةٍ يُتَخطّاها في Programmatic SEO هي بناءُ مصدر البيانات المُهيكَل بعنايةٍ. CSV مُجمَّع باستعجالٍ يُكرّر المشكلةَ نفسها ٢٠٠ مرّةٍ في الـ ٢٠٠ صفحة المُنتَجة.

    بُنيةُ البيانات في مصفوفة ٣٢ مدينة (src/utils/cities.ts):

    {
      slug: "sanliurfa",
      name: "Şanlıurfa",
      wikidata: "Q83657",
      dative: "Şanlıurfa'ya",        // dative تركي (a/e/ya/ye)
      locative: "Şanlıurfa'da",      // -da/-de/-ta/-te
      sectors: ["نسيج","غذاء","تقنيات زراعية","سياحة"],
      landmarks: ["GAP","Harran","Karaköprü Teknokent"],
      travelFromHQ: "مقرّنا الرئيسي (Karaköprü)",
      population: 2200000,
      industries: { primary: "مزيجٌ زراعي+صناعي", ... },
      ...
    }
    

    تَحتوي هذه البُنية ١٦ حقلًا — بياناتٌ حقيقية مُعبَّأة لكلّ مدينة. population من Wikipedia، wikidata ID مَربوط (لـ schema.org Place)، landmarks قائمةُ مراجعَ محليّة، sectors مُستنبَط من تقارير معهد الإحصاء التركي للمحافظات.

    نحوٌ غيرُ مزيّف: لأخذ اللواحق التركية بشكلٍ صحيح يجب معرفةُ التناغم الصوتي، لا اسم المدينة فقط. "Ankara'a" خاطئ، "Ankara'ya" صحيح (تَخفيف)؛ "İstanbul'a" صحيح لكنّ "Bursa'a" خاطئ. لذلك كلُّ مدينةٍ لديها حقلا dative + locative منفصلان — القالبُ يَستهلكهما مباشرةً ولا يَضع افتراضات.

    خدمتنا لهندسة البيانات تُصمّم طبقاتِ البيانات المُهيكَلة بثلاث طبقاتٍ معًا: مصدر (API/CSV/نموذجٌ يدوي) → تنظيف + تَحقّق (regex، قاموس، فحصٌ متقاطعٌ من طرفٍ ثالث) → تصديرٌ جاهزٌ للقالب. التعاملُ مع أيٍّ من الثلاث منفصلًا يُسقط جودةَ البيانات.

    ٣. معماريّةُ القالب — لا تَدع نسبةَ المتغيّرات تَنزل تحت ٣٠%

    في مصفوفةٍ ثنائية البُعد، يُعرّف القالبُ كلًّا من الهيكل المُشترَك والأجزاء المتغيّرة. الخطر: إذا كان الهيكلُ كبيرًا جدًّا والأجزاءُ المتغيّرة صغيرةً جدًّا، يَتعرَّف Google عليه كـ "thin content".

    بُنيةُ قالبِ صفحة المدينة:

    القسممشترك (template)متغيّر (data-driven)
    عنوانُ Hero"البرمجيّاتُ المؤسسية و AI في {المدينة}"اسم المدينة (تناغمٌ صوتي)
    فقرةُ الإنتروجملةُ "ومَركزُنا Şanlıurfa" ثابتةالمسارُ من المدينة إلى HQ + ملفُّ العملاء المحلي متغيّر
    إبرازُ القطاع"القطاعاتُ البارزة لمدينة X" ثابتقائمةُ القطاعات تَختلف
    قائمةُ الخدمات٦ خدماتٍ أساسية ثابتةأمثلةُ استخدامٍ خاصّة بالمدينة
    المراجعُ المحلية"معالمُ بارزة في هذه المنطقة"قائمةُ landmark تَختلف
    FAQ٥ خاناتِ أسئلة ثابتةاسمُ المدينة، القطاعات، النقل تَتغيّر
    CTAدعوةٌ للاتصال ثابتةتَنويعاتُ كلماتٍ صغيرة حسب المدينة

    في هذه البُنية تَكون نسبةُ المتغيّرات حوالي ٣٥-٤٠%. لمنعها من النزول تحتَ العتبة: لا تُضيفوا حقولًا جديدة بل تفرَّعوا من الحقول الموجودة (مثال: بُنيةُ الفقرة التي تَتوسّع وفقَ طول قائمة القطاعات — ٣ قطاعات → فقرةٌ واحدة، ٥+ → قائمةٌ نقطية).

    توليدُ المحتوى المدعوم بـ AI: باستخدام منصّة AIGENCY V4 لدينا نُولّد فقرةَ تعليقٍ خاصّة بالقطاع لكلّ مدينة؛ ثم يُراجعها ويُوافق عليها محرّرٌ بشري. المحتوى المُولَّد بـ AI بالكامل (دون إشرافٍ بشري) يُضعف إشاراتِ Google E-E-A-T؛ نسبةُ ٢٠-٣٠% مسوّدةُ AI + ٧٠-٨٠% تَدخُّلٌ تحريريٌّ بشري هي الأكثر أمانًا.

    ٤. Static Site Generation — لماذا ليس SSR

    المعماريّةُ الصحيحة لـ Programmatic SEO هي SSG (Static Site Generation)، ليس SSR (Server-Side Rendering). هذا الاختيارُ حرجٌ لثلاثة أسباب:

    الأداء: HTML الساكن يَصل إلى المستخدم من CDN في ٥٠-٢٠٠ms لكلّ طلب، بينما SSR يُضيف خطوةَ خادمٍ من ٥٠٠-٢٠٠٠ms. الفرقُ حاسم لـ Core Web Vitals. Google يَتطلّب LCP (Largest Contentful Paint) < ٢٫٥s كعاملِ ترتيب؛ موقعٌ programmatic بـ ٥٠٠+ صفحة لا يَستطيع تحقيقَ ذلك بـ SSR.

    التكلفة: SSR يَستخدم CPU/RAM لكلّ زائر. ١٬٠٠٠ صفحة × ٥٠ زيارة/يوم = ٥٠٬٠٠٠ ضربة خادم. مع SSG هذه التكلفةُ صفر — تَقديمٌ مُخبَّأ لملفّاتٍ ساكنة من CDN.

    الأمن: صفحاتُ SSG تَعمل دون backend في الـ runtime. SQL injection، SSRF، RCE والمشاكلُ الأخرى من جانب الخادم غيرُ موجودة لأنّه لا يوجد خادم. هذا مكسبٌ مهمٌّ من منظورنا الأمني السيبراني.

    موقعُنا يَستخدم vite-react-ssg. أثناء البناء، يُنتَج dist/<path>/index.html منفصل لكلّ تركيبةِ مسار × لغة في CANONICAL_ROUTES. ٣٢ مدينة × ٤ لغات = ١٢٨ HTML ساكن، مرّةً واحدة في وقت البناء. ثم يُقدَّم عالميًّا عبر Cloudflare CDN تحت ٥٠ms.

    stacks بديلة مناسبة: Next.js (getStaticProps + getStaticPaths)، Astro (content collections)، Gatsby (createPages API)، Eleventy (data files). جميعها تُنتج HTML منفصلًا لكلّ صفّ في وقت البناء.

    ٥. Sitemap + إدارةُ الفهرس — قدرةُ Google على إيجاد الصفحات

    أنتجتم ٥٠٠ صفحة ساكنة لكنّ Google فهرسَ ٣٠ فقط — أكثرُ المشاكل شيوعًا في مشاريع Programmatic SEO. عددُ الفهرس يَعتمد على تركيبة جودةِ الصفحة + استراتيجيّةِ sitemap.

    استراتيجيّةُ Sitemap.xml: كلُّ الصفحات ليست في sitemap واحد بل مُقسَّمة إلى مجموعاتٍ موضوعية — Google يَزحف عدّةَ sitemaps بشكلٍ أفضل. موقعنا حاليًّا يَحوي ٢١٦ URL في sitemap واحد؛ عندما يَنمو فوق ٥٠٠ سنَنتقل إلى بُنيةِ sitemap index: sitemap-cities.xml، sitemap-services.xml، sitemap-blog.xml كملفّاتٍ منفصلة + sitemap.xml كفهرسٍ يُشير إليها.

    الاستخدامُ الصحيح لـ lastmod: كلُّ URL في sitemap يجب أن يُظهر تاريخَ تحديثه الفعلي في <lastmod>. التواريخُ المستقبليّة المزيّفة (المُستخدَمة لإبقاء Google يَزحف بنضارة) مُعاقَب عليها: بمجرّد إدراك Google، فإنّه إمّا يَتجاهل lastmod أو يُقلّل ثقتَه. سكربتُ البناء لدينا يُعيد توليدَ sitemap تلقائيًّا في كلّ بناء عبر hook prebuild في package.json؛ lastmod = تاريخُ البناء الفعلي.

    التَّنسيقُ مع robots.txt: مَرجعُ sitemap يجب أن يَكون في أسفل robots.txt. السطرُ Sitemap: https://www.e-cloud.web.tr/sitemap.xml يُعلِم Googlebot/Bingbot/YandexBot تلقائيًّا. الإضافةُ اليدوية في Search Console مُسرِّعٌ إضافي؛ الفهرسةُ الأولى تَبدأ خلال دقائق.

    الفهرسةُ الأولى: لا تَطلبوا فهرسةً لـ ٥٠٠ صفحة دفعةً واحدة. في الأسبوع الأول خُذوا ٢٠ صفحةً مُهمّة (pillar + تركيباتُ المصفوفة الرئيسية) واطلبوا URL Inspection + indexرequest يدوي في Search Console. بعد فهرسة هذه الصفحات وتلقّيها مَرّاتِ ظهور، تُكتَشف البقيّةُ طبيعيًّا (من الروابط الداخلية + sitemap). الطلباتُ اليدوية بالجملة مُستهلكةٌ للوقت وغيرُ فعّالة.

    ٦. الربطُ الداخلي — قاعدةُ "لا صفحاتٍ يتيمة"

    أحرجُ متطلَّبٍ تقني لـ Programmatic SEO: لا صفحاتٍ يتيمة. الصفحةُ اليتيمة = لا صفحةَ أخرى في الموقع تُحيل إليها؛ موجودةٌ فقط في sitemap. Google يُقيّم هذه الصفحاتِ بضعفٍ؛ مع كثرة اليتامى، تَنخفض قيمةُ المصفوفة كلِّها.

    استراتيجيّةُ الربط الداخلي بثلاث طبقات:

    الطبقة ١ — رابطُ Hub. كلُّ صفّ مصفوفةٍ يَتلقّى رابطًا من صفحة hub رئيسية. لمصفوفة المدن: /sehir (إن وُجِدَت) أو عمودُ "المدن" في الـ footer. على موقعنا footer.columns.cities يَحتوي كلَّ مدينة، لذلك كلُّ صفحةِ مدينة تَتلقّى روابطَ من كلٍّ من الـ footer (sitewide) وقسم الصفحة الرئيسية ذي الصلة.

    الطبقة ٢ — Cross-link. صفوفُ المصفوفة تَربط بعضها بعضًا. تحت صفحة Şanlıurfa، قسمُ "مدنٌ أخرى": بطاقاتُ İstanbul، Ankara، İzmir، Bursa + روابط. هذا يُثري رحلةَ المستخدم ويُوزّع PageRank.

    الطبقة ٣ — منشورٌ → صفُّ مصفوفة. منشوراتُ المدوّنة مثل هذا تُحيل صفحاتِ مدينة/خدمة محدّدة. مثال: "فريقُنا الهندسي في Şanlıurfa" يَنقل السلطةَ إلى صفحة المدينة.

    على موقعنا كلُّ صفحةِ مدينة تَتلقّى روابطَ من ٤ مصادر داخلية على الأقلّ: footer (sitewide)، قسمُ المدينة في الصفحة الرئيسية، منشوراتُ مدوّنةٍ ذاتُ صلة (إن وُجِدَت)، صفحاتُ مدنٍ أخرى (cross-link). هذه الكثافةُ تَزيد سرعةَ الفهرسة وقوّةَ الترتيب مباشرةً.

    في مشاريعنا لـ هندسة منصّاتِ SaaS نَفرض نفسَ بُنية الربط الداخلي بـ تَحقُّقٍ في وقت البناء: إذا لم تَتلقَّ صفحةٌ أيَّ رابطٍ وارد، تَفشل خطُّ CI/CD ولا تَنطلق الصفحة.

    ٧. الاستمراريّة — مراقبةُ ٩٠ يومٍ بعد الإطلاق

    أكثرُ خطأٍ شيوعًا في مشاريع Programmatic SEO: فقدُ الاهتمام بعد الإطلاق. ٥٠٠ صفحة تَنطلق، الجميعُ سعيد، وبعد ثلاثة أشهرٍ يَستقرّ الـ traffic عند ٢٠% — لأنّ لم يَتابع أحد.

    خطّتُنا المعياريّة لمراقبة ٩٠ يومًا:

    الأيّامُ ١-٧: الفهرسةُ اليدويّة لأوّل ٢٠ صفحةٍ عبر URL Inspection في Search Console. تحليلُ سجلّات الخادم: هل زَحفَ Googlebot كلَّ صفحة؟ معدّلُ زحفٍ منخفض يُشير إلى خطأٍ في robots.txt أو تَكوينِ sitemap.

    الأيّامُ ٧-٣٠: مراقبةُ تقارير Coverage. هل صفحاتٌ مَوسومةٌ بـ "Crawled - currently not indexed"؟ لماذا لم تُفهرَس؟ عادةً تَشابهُ المحتوى أو عتبةُ الجودة. الإصلاح: أَضيفوا ١٠٠-٢٠٠ كلمةٍ من محتوًى أصلي، حَدِّثوا lastmod، أَعيدوا الإرسال.

    الأيّامُ ٣٠-٦٠: قراءةُ تقرير Performance. أيُّ صفحاتٍ تَحصل على impressions لكن لا نقرات؟ تَحسينُ title/meta description. أيُّ صفحاتٍ لا تَحصل على impressions أصلًا؟ مزيدٌ من الربط الداخلي أو تَوسيعُ المحتوى.

    الأيّامُ ٦٠-٩٠: الصفحاتُ في المواقع ١٠-٣٠ (صفحاتُ Google ٢-٣) مرشّحاتٌ لتعزيز المحتوى — يمكن أن تَنتقل إلى الصفحة الأولى بـ دفعةٍ صغيرة. يُسمّى هذا "low-hanging fruit"؛ أكبرُ منطقةِ ROI في Programmatic SEO.

    النتيجةُ المتوسّطة لمصفوفتنا ٣٢ مدينة على مدى ٩٠ يومًا: ٢٨ من الـ ٣٢ صفحة فُهرِسَت في أوّل ٦٠ يومًا، ١٨ وَصلَت الصفحةَ الأولى لاستعلامٍ طويل الذيل واحد على الأقلّ في أوّل ٩٠ يومًا. في المدن التنافسية كـ Şanlıurfa، İstanbul، Ankara قد تَمتدّ النافذةُ نفسها إلى ٤-٦ أشهر.

    مصفوفةُ القرار: هل Programmatic SEO مُناسبٌ لكم؟

    تَقييمٌ عمليٌّ في ثلاثة أسئلة:

    السؤالنعم → مُلائملا → منشورُ مدوّنةٍ أَنسب
    هل يمكن التعبيرُ عن خدمتكم/منتجكم طبيعيًّا في مصفوفةٍ ثنائية البُعد (X × Y)؟المحتوى أحادي البُعد يُلائم منشورَ المدوّنة أكثر
    هل بياناتٌ حقيقية متمايزة متوفّرة لكلّ صفّ؟إذا كانت العلاماتُ فقط تَتبدّل، مخاطرُ thin content مرتفعة
    هل يمكنكم الصبرُ ٦+ أشهر (وقتُ الفهرسة + الترتيب)؟إذا كنتم تَتوقّعون نتائجَ سريعة، تَكتيكاتُ SEO الأخرى أنسب

    ثلاثُ "نعم" → Programmatic SEO يُسلّم ROI جدّيًّا. اثنتان "نعم" → نهجٌ هجين (١٠-٣٠ صفحة برمجية + دعمُ مدوّنة). واحدة "نعم" → استراتيجيّةُ مدوّنةٍ كلاسيكية أنسب.

    نهجُنا للمشروع التجريبي

    للمؤسسة التي تَبدأ للتوّ نُوصي بـ تَجريبٍ ٤ أسابيع. نطاقُ التجريب:

    • اختيارُ بُعد مصفوفةٍ واحد (مدينة فقط أو خدمة فقط).
    • استهدافُ ٣٠-٥٠ صفحة، لا أكثر.
    • تَثبيتُ القالب + مصدر البيانات + خطُّ البناء.
    • مراقبةُ ٣٠ يومًا بعد الإطلاق؛ قياسُ Coverage + المواقع الأولى.
    • قرارُ نهاية التجريب: إمّا التَّوسيع (مصفوفةٌ ثنائية البُعد، ٢٠٠-٥٠٠ صفحة) أو تَغييرُ النهج.

    إذا كانت نتائجُ التجريب إيجابية، المرحلةُ الثانية هي إثراءُ البيانات (رفعُ عدد الحقول من ٨ إلى ١٦، إضافةُ فقراتِ ملخّصاتٍ مدعومة بـ AI) + تَكثيرُ اللغات (TR → EN/DE/AR). نَشرُ نفس مصفوفة المدينة بـ ٤ لغات على موقعنا تَطلَّب أسبوعَين إضافيَّين — موافقةُ التَّرجمات يدويًّا + رؤوسُ meta SEO خاصّة باللغة.

    Programmatic SEO ليس مشروعَ "اضبط وانسَ"؛ بل بُنيةٌ مُصمَّمة جيّدًا وتُراقَب بانتظام. البدايةُ الصحيحة تَصير محرّكَ traffic المؤسسة الصامتَ لكنّ المستقرّ في السنوات اللاحقة. البدايةُ السيّئة تَترك دينًا تقنيًّا صعبَ التراجع عنه. أيُّ نهجٍ تَختارون يَعتمد على انضباط الفريق والتزامِكم بجودة البيانات.

    الخطوةُ التالية

    هل Programmatic SEO مُناسبٌ لمؤسستكم؟ قَيِّموا الأسئلةَ الثلاث أعلاه مقابلَ محتواكم. إذا كانت الإجابةُ غيرَ واضحة، يمكنكم طلبُ مكالمةِ تَقييمٍ مجّانية لـ ٣٠ دقيقة عبر صفحة الاتصال؛ في المكالمة نُشارك ملاءمةَ مصفوفةِ قطاعكم + عددَ صفحاتٍ تَقديري + خطَّ زمن التجريب.

    ستُعلَن المنشوراتُ التالية من هذه السلسلة على مدوّنتنا: "أتمتةُ جودة المحتوى لـ Programmatic SEO (مع AIGENCY V4)" و "Programmatic SEO متعدّد اللغات — الطريقةُ الصحيحة لتطبيق hreflang". إن كان موضوعٌ من أولويّاتكم، فإنّ ذكرَه في طلبكم يَسمح لنا بمشاركة المادّة التقنية ذات الصلة.

    الأسئلة الشائعة

    في الإنتاج اليدوي تُكتَب كلُّ صفحة منفصلة — ١٠ صفحات = ١٠ عمليّاتِ كتابةٍ مختلفة. في Programmatic SEO يُجمَع قالبٌ واحد ومصدرُ بياناتٍ مُهيكَل (CSV، JSON، قاعدةُ بيانات) لإنتاج مئاتٍ من الصفحات. الميزة: تَوسعٌ سريع (٥٠٠ صفحة في ٣ أيّام). المخاطرة: 'thin content' (محتوًى سطحيٌّ مشابه) قد يُسبّب عقوبةَ Google. عند التطبيق الصحيح يَستحوذ على trafficٍ طويل الذيل بلا منافس؛ عند الخطأ تَسقط الصفحات من الفهرس. التوازنُ الرئيسي: إنتاجُ قيمةٍ خاصّة لكلّ صفحة — ليس فقط تبديلَ اسم المدينة وتكرارَ نفس الفقرة.