الرئيسية
» المجالات
»
كيفية إنشاء عناوين ووصفات تعريفية لتحسين محركات البحث تلقائيًا باستخدام Local Ollama
كيفية إنشاء عناوين ووصفات تعريفية لتحسين محركات البحث تلقائيًا باستخدام Local Ollama
لديك 300 صفحة جاهزة للنشر، سواءً كانت للمنتجات أو الوثائق أو المدونات، لكن عمود البيانات الوصفية لا يزال فارغًا. كتابة كل عنوان ووصف تعريفي يدويًا عملية بطيئة، ونسخ نمط واحد عبر الموقع ينتج عنه نتائج متكررة، وطلب "عنوان مُحسّن لمحركات البحث" من نموذج اللغة المحلي غالبًا ما يُعيد تعليقات إضافية أو ادعاءات مُختلقة أو تنسيقًا غير متناسق.
يُعدّ التعامل مع عملية توليد البيانات الوصفية كخط أنابيب بيانات صغير نهجًا أفضل: تزويد النموذج بالأدلة الخاصة بكل صفحة فقط، واشتراط مخرجات مُهيكلة، والتحقق من صحتها برمجيًا، ثم مراجعة الاستثناءات قبل النشر. يُناسب Ollama هذا النهج تمامًا نظرًا لتوافر واجهة برمجة التطبيقات المحلية الخاصة به http://localhost:11434/apiبعد التثبيت، ودعمه لمخرجات JSON-schema المُهيكلة. تمت مراجعة وثائق Ollama وGoogle Search المشار إليها هنا في 13 سبتمبر 2026.
لماذا تفشل بيانات تعريف تحسين محركات البحث التلقائية؟
معظم حالات الفشل تنجم عن سير العمل المحيط بالنموذج بدلاً من "طلب خاطئ" واحد. وتشمل الأسباب الشائعة إدخال محتوى صفحة قليل جدًا، والسماح للنموذج بالإجابة بنثر حر، وتطبيق نفس صيغة الكلمات الرئيسية على كل عنوان URL، ونشر المخرجات دون إجراء فحوصات التكرار على مستوى الموقع.
هناك أيضًا سوء فهم شائع حول حدود الأحرف. تؤكد جوجل أنه لا يوجد حد أقصى ثابت لطول عناصر الصفحة <title>أو وصفها التعريفي؛ إذ يتم اقتطاع روابط العناوين والمقتطفات حسب الحاجة، عادةً وفقًا لعرض الشاشة. وقد تُنشئ جوجل أيضًا رابط عنوان أو مقتطفًا مختلفًا من محتوى الصفحة عندما ترى أنظمتها أن تمثيلًا آخر أكثر فائدة. راجع إرشادات جوجل الرسمية بشأن روابط العناوين والمقتطفات والوصف التعريفي .
هذا يعني أن بإمكان البرنامج النصي فرض حدود لطول المحتوى التحريري لضمان الاتساق، ولكن لا ينبغي له اعتبار هذه الأرقام متطلبات جوجل. في المثال أدناه، 65 حرفًا للعنوان و165 حرفًا للوصف هي حدود داخلية فقط. غيّرها لتتوافق مع نظام إدارة المحتوى الخاص بك، وعلامتك التجارية، واحتياجات الترجمة، وعملية المراجعة.
الخطوة 1: قم بتثبيت Ollama وتأكد من أن واجهة برمجة التطبيقات المحلية تعمل
يُدرج دليل البدء السريع الرسمي لبرنامج Ollama دعم أنظمة macOS وWindows وLinux. بعد التثبيت، قم بتنزيل نموذج محلي. تستخدم وثائق Ollama الحالية هذا النموذج بكثرة gemma3في أمثلة واجهة برمجة التطبيقات (API)، لذا فهو مثال محايد مناسب لهذا الشرح.
ollama pull gemma3
ثم اختبر نقطة النهاية المحلية:
curl http://localhost:11434/api/generate -d '{"model":"gemma3","prompt":"Reply with the word ready.","stream":false}'
توضح وثائق واجهة برمجة تطبيقات Ollama أن واجهة برمجة التطبيقات المحلية تعمل على العنوان المذكور http://localhost:11434/api. كما توضح Ollama أن الوصول المحلي إلى هذا العنوان لا يتطلب مصادقة. إذا لم تكن خدمتك المحلية قيد التشغيل، ollama serveفإن الأمر الموثق في واجهة سطر الأوامر (CLI) هو `documented` لبدء تشغيلها. تجنب استبدال -cloudالنموذج إذا كان هدفك هو الاستدلال المحلي الفعلي.
خطوات إعداد النظام: التحقق من Ollama، وسحب نموذج محلي، والتأكد من ظهوره في قائمة النماذج المحلية، والتأكد من توفر الخدمة على الخادم المحلي. أسماء النماذج وأطوالها الموضحة هي أمثلة على خطوات العمل وليست متطلبات لتحسين محركات البحث.
اختر طرازًا يتناسب مع جهازك
لا تدّعي هذه المقالة عمدًا أن نموذجًا واحدًا هو الأفضل عالميًا لبيانات تحسين محركات البحث. تتغير إمكانية توفر النماذج وملاءمتها للأجهزة بمرور الوقت، كما أن النماذج الأكبر حجمًا تتطلب ذاكرة أكبر وتستجيب بشكل أبطأ عمومًا. ابدأ بنموذج يمكن لجهازك تشغيله بسلاسة، وأنشئ مجموعة صغيرة من المراجعات، ثم قارن دقة المعلومات، والتفرد، وسرعة الاستجابة، والاتساق قبل معالجة آلاف الصفحات.
الخطوة الثانية: فرض إخراج منظم بدلاً من تحليل النثر
يُعدّ النص الحرّ غير مناسب للأتمتة. فاستجابة مثل "إليك ثلاثة خيارات رائعة..." تُجبر البرنامج على تخمين بداية العنوان الفعلي. تدعم وثائق Ollama الخاصة بالمخرجات المهيكلة تمرير مخطط JSON في formatالحقل. كما توصي الوثائق باستخدام مخططات قابلة لإعادة الاستخدام عبر Pydantic في بايثون، وتشير إلى أن درجة حرارة منخفضة، مثل 0.00000 0، تُحسّن من دقة النتائج.
قم بتثبيت حزمتي بايثون المستخدمتين في هذا المثال:
python -m pip install -U ollama pydantic
ثم أنشئ generate_meta.py:
from ollama import Client
from pydantic import BaseModel, Field
MODEL = "gemma3"
client = Client(host="http://localhost:11434")
class SeoMeta(BaseModel):
title: str = Field(min_length=10, max_length=65)
description: str = Field(min_length=70, max_length=165)
SYSTEM = """
You create SEO metadata from the page content supplied by the user.
Rules:
- Accurately describe only what is present in the page content.
- Write a concise, descriptive title.
- Write a useful meta description that distinguishes this page from other pages.
- Do not repeat keywords unnaturally.
- Keep the same primary language as the page.
- Do not invent prices, dates, features, guarantees, statistics, or claims.
- The length bounds in the JSON schema are our editorial limits, not Google rules.
- Return only the structured result required by the schema.
"""
def generate_meta(url: str, source_title: str, h1: str, body_text: str) -> SeoMeta:
prompt = f"""
URL: {url}
Current title: {source_title}
H1: {h1}
Page text:
{body_text[:12000]}
Create one meta title and one meta description for this page.
"""
response = client.chat(
model=MODEL,
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": prompt},
],
format=SeoMeta.model_json_schema(),
options={"temperature": 0},
)
return SeoMeta.model_validate_json(response.message.content)
if __name__ == "__main__":
result = generate_meta(
url="https://example.com/guides/clean-cast-iron",
source_title="Cast Iron Guide",
h1="How to Clean a Cast-Iron Skillet Without Damaging the Seasoning",
body_text=(
"This guide explains how to remove stuck food, wash a cast-iron "
"skillet, dry it thoroughly, and apply a thin layer of oil..."
),
)
print(result.model_dump_json(indent=2))
ينبغي أن يكون المُولِّد واضحًا بشأن بيانات الصفحة، وحقول الإخراج، والقيود التحريرية. في بيئة الإنتاج، يُفضَّل استخدام مُخرَجات Ollama المُهيكلة بصيغة JSON والتحقق من صحة البيانات من جانب التطبيق بدلًا من الاعتماد على صياغة التعليمات فقط.
لماذا يتضمن الموجه العنوان الحالي و H1
تقول جوجل إن نظام روابط العناوين الخاص بها يأخذ في الاعتبار عنوان الصفحة <title>الرئيسي المرئي، والعناوين الفرعية مثل <h1> و <h2> <h1>، og:titleوالنصوص البارزة، ونصوص الروابط، وغيرها من العناصر. لا يحتاج مُنشئ الروابط المحلي لديك إلى محاكاة نظام جوجل، ولكن تزويده بعنوان الصفحة الأصلي، وعنوان H1، وعنوان URL، ونص الصفحة الأساسي التمثيلي، يُساعد في الحفاظ على توافق البيانات الوصفية المقترحة مع ما سيراه قراء الصفحة فعليًا.
لا تُدخل قوائم كلمات مفتاحية غير ذات صلة وتطلب من النموذج "دمجها". توصي جوجل صراحةً بعناوين وصفية وموجزة، وتحذر من حشو الكلمات المفتاحية وتكرار النصوص الجاهزة. أما بالنسبة للأوصاف، فتقول جوجل إن التوليد البرمجي الخاص بكل صفحة مناسب للمواقع الكبيرة التي تعتمد على قواعد البيانات، شريطة أن تكون الأوصاف دقيقة وسهلة القراءة ومتنوعة.
الخطوة 3: قم بتشغيل صفحة واحدة، ثم تحقق من صحتها قبل توسيع نطاقها.
قم بتشغيل البرنامج النصي:
python generate_meta.py
يجب أن تكون النتيجة الناجحة عبارة عن كائن JSON يمكن لـ Pydantic التحقق من صحته. والأهم من ذلك، يجب أن يكون بإمكان المراجع البشري مقارنته بصفحة المصدر والإجابة على أربعة أسئلة بسرعة:
هل يصف العنوان هذه الصفحة تحديداً بدلاً من الموقع الإلكتروني بشكل عام؟
هل يتجنب الوصف ذكر الادعاءات أو التواريخ أو الأسعار أو الميزات غير الموجودة في المحتوى الأصلي؟
هل ستظل هذه البيانات الوصفية منطقية إذا تمت قراءتها بدون محتوى الصفحة؟
هل يختلف هذا عن البيانات الوصفية المستخدمة بالفعل في الصفحات المجاورة؟
اختبر صفحة واحدة نموذجية أولاً، وتحقق من النتيجة المنظمة قبل بدء مهمة معالجة البيانات. من الضروري الحصول على استجابة JSON قابلة للتحليل، ولكن لا يزال التحقق من دقة المعلومات ومدى ملاءمتها لمحتوى الصفحة يتطلب مزيداً من التدقيق.
أضف محاولات إعادة في حالات فشل التحرير، وليس فقط أخطاء واجهة برمجة التطبيقات.
يمكن للمخطط تقييد أنواع البيانات وأطوالها، لكنه لا يضمن صحة الجملة أو دقتها. لذا، ابنِ منطق إعادة المحاولة حول عمليات التحقق القابلة للقياس. على سبيل المثال، ارفض الحقل الفارغ، أو العنوان المكرر، أو النصوص النمطية المحظورة، أو الوصف الذي يكرر العنوان حرفيًا تقريبًا. إذا كانت الصفحة تحتوي على ادعاءات خاضعة للتنظيم أو ذات أهمية بالغة، فاطلب مراجعة بشرية بدلًا من محاولة أتمتة التحقق.
اجعل مطالبات إعادة المحاولة مختصرة. بدلاً من إعادة إنشاء كل شيء بعبارة "حسّنه"، أخبر النموذج بما فشل: "العنوان المقترح يكرر صفحة أخرى. أعد كتابته باستخدام الموضوع الفريد في H1 مع الحفاظ على كل ادعاء مستندًا إلى المحتوى المقدم." هذا يجعل تدقيق حالات الفشل أسهل.
الخطوة الرابعة: تحويل الصفحات إلى ملف CSV للمراجعة والنشر
بمجرد التأكد من موثوقية اختبار الصفحة الواحدة، احفظ بياناتك في ملف CSV يحتوي على أعمدة مثل url< source_titleالمحتوى> h1و<المعلومات> و content<البيانات>. يجب أن يحتوي حقل <المحتوى> على نص الصفحة بعد تنظيفه، وليس قوائم التنقل أو إشعارات ملفات تعريف الارتباط أو آلاف الروابط غير ذات الصلة في تذييل الصفحة.
أضف منطق الدفعات هذا أسفل دالة المولد أو ضعه في نص برمجي منفصل:
import csv
rows = []
seen_titles = set()
with open("pages.csv", newline="", encoding="utf-8") as f:
for row in csv.DictReader(f):
meta = generate_meta(
url=row["url"],
source_title=row.get("source_title", ""),
h1=row.get("h1", ""),
body_text=row["content"],
)
flags = []
normalized = meta.title.casefold().strip()
if normalized in seen_titles:
flags.append("duplicate_title")
seen_titles.add(normalized)
rows.append({
**row,
"generated_title": meta.title,
"generated_description": meta.description,
"title_length": len(meta.title),
"description_length": len(meta.description),
"qa_flags": ",".join(flags),
})
with open("seo_meta_output.csv", "w", newline="", encoding="utf-8") as f:
fieldnames = list(rows[0].keys())
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
يمكن مراجعة ملف CSV الناتج في Excel أو LibreOffice أو أداة استيراد قواعد البيانات أو نظام إدارة المحتوى الخاص بك. لا تقم بالكتابة فوق البيانات الوصفية الحالية تلقائيًا عند التشغيل الأول. احتفظ بالعنوان والوصف الأصليين بجانب المقترح المُنشأ حتى يتمكن المراجعون من مقارنتهما، وبالتالي يسهل التراجع عن التغييرات.
تسهل قائمة مراجعة جداول البيانات عملية التدقيق في عمليات الإنشاء المجمعة: احتفظ بمعرف صفحة المصدر، والعنوان الذي تم إنشاؤه، والوصف الذي تم إنشاؤه، والأطوال، وعلامات ضمان الجودة قبل نشر التغييرات.
اجعل خط أنابيب الدفعات أكثر أمانًا
يفحص
ما الذي يجب الإبلاغ عنه؟
لماذا يُعد ذلك مهماً؟
التحقق من صحة المخطط
الحقول المفقودة أو غير الصالحة
يمنع دخول المخرجات المشوهة إلى نظام إدارة المحتوى.
التحقق من وجود عناوين مكررة
نفس العنوان الموحد على عنواني URL
يساعد في الحفاظ على تمييز الصفحات.
التحقق من اللغة
تختلف لغة البيانات الوصفية عن لغة الصفحة
توصي جوجل بمطابقة اللغة الأساسية ونظام الكتابة للصفحة.
التحقق من الأدلة
الأرقام والأسعار والتواريخ والعلامات التجارية أو الضمانات غير متوفرة في المصدر
يقلل من الادعاءات الوهمية.
فحص القوالب
عبارات طويلة متكررة على مستوى الموقع
تنصح جوجل بتجنب استخدام عناوين نمطية متكررة.
التحقق من طول المقال التحريري
خارج نطاق منزلك المختار
يحافظ على اتساق مخرجات نظام إدارة المحتوى؛ هذا ليس قاعدة حد الأحرف الخاصة بجوجل.
مراجعة بشرية
الصفحات الاستراتيجية أو الحساسة أو ذات الزيارات العالية أو الغامضة
ينبغي أن تكشف الأتمتة عن الاستثناءات، لا أن تخفيها.
المشاكل الشائعة، من أسهل الحلول إلى أصعبها
فشل الاتصال بواجهة برمجة التطبيقات
تأكد أولاً من تشغيل Ollama وإمكانية الوصول إليه. تنص وثائق المصادقةhttp://localhost:11434 الرسمية على أن المصادقة غير مطلوبة لواجهة برمجة التطبيقات المحلية. إذا كان برنامجك النصي يشير عن طريق الخطأ إلى نقطة نهاية مستضافة مختلفة، فهذه نقطة نهاية مختلفة تتطلب المصادقة.https://ollama.com/api
يحتوي الرد على نص حول JSON
استخدم المخطط format=SeoMeta.model_json_schema()بدلاً من طلب JSON فقط باللغة الطبيعية. يُعدّ الإخراج المنظم طبقة التحكم الأمثل لخط أنابيب الإنتاج.
جميع العناوين تبدو متشابهة
أدخل نص H1 الخاص بكل صفحة ومحتوى أساسي ذي معنى، وأزل عناصر التنقل العامة غير الضرورية، واطلب وصفًا خاصًا بكل صفحة بشكل صريح. ثم قم بإجراء فحص للتكرار والتشابه بين الصفحات. غالبًا ما يكون التكرار مشكلة في المدخلات قبل أن يكون مشكلة في النموذج.
يبتكر النموذج ميزات أو إحصائيات
قلّل المدخلات إلى نص الصفحة الموثوق، وعزّز قاعدة التأسيس: لا تُقدّم أي ادعاءات واقعية تتجاوز المحتوى المُقدّم. بالنسبة للصفحات المهمة، قارن التأكيدات المُولّدة بحقول المصدر المُهيكلة قبل الموافقة عليها. إذا كان المصدر نفسه غامضًا، فأرسل السطر إلى مُراجع بشري بدلًا من مطالبة النموذج بالتخمين بشكل مُتكرر.
النموذج بطيء للغاية بالنسبة لآلاف الصفحات
قم بالقياس قبل تغيير بنية النظام. سجّل وقت إنشاء كل صفحة، وحجم المدخلات، واسم النموذج، ومعدل الفشل. احذف النصوص غير ذات الصلة، وعالج أقسام الصفحة الثابتة، واختبر نموذجًا محليًا أصغر إذا ظلت الجودة مقبولة. النموذج الأسرع غير مفيد إذا كانت بياناته الوصفية تُسبب جهدًا أكبر في المراجعة مما توفره.
اختياري: استخدم تكاملًا موجودًا على غرار OpenAI
إذا كان لديك بالفعل كود مكتوب لعميل متوافق مع OpenAI، فإن Ollama توثق التوافق الجزئي مع واجهة برمجة تطبيقات OpenAI على الرابط التالي http://localhost:11434/v1/. هذا من شأنه أن يقلل من جهد الترحيل. أما بالنسبة لأداة بيانات وصفية محلية جديدة، فإن عميل Ollama الأصلي المكتوب بلغة Python أبسط، ويعرض أمثلة على المخرجات المنظمة مباشرةً في وثائق Ollama.
كيفية التحقق الذاتي من النظام النهائي
قبل اعتبار عملية الأتمتة مكتملة، أنشئ مجموعة مراجعة تحتوي على أنواع محتوى مختلفة: مقال قصير، دليل مفصل، صفحة منتج، صفحة فئة، صفحة تحتوي على أرقام، وصفحة بكل لغة مدعومة. شغّل النموذج نفسه والمطالبة نفسها على جميعها، ثم تحقق من قائمة التحقق التالية.
نقطة النهاية المحلية هي localhostوالنموذج المحدد هو نموذج محلي، وليس نموذجًا موسومًا بالسحابة.
يتم التحقق من صحة كل استجابة وفقًا للمخطط دون الحاجة إلى تنظيف JSON يدويًا.
لا يوجد عنوان مُنشأ مُكرر في مجموعة المراجعات.
تظهر جميع الادعاءات الواقعية في محتوى الصفحة المقدمة.
تستخدم البيانات الوصفية نفس اللغة الأساسية ونظام الكتابة المستخدم في الصفحة.
العنوان وصفي وموجز وخالٍ من الكلمات المفتاحية المتكررة.
يلخص الوصف الصفحة المحددة بدلاً من الموقع ككل.
تم تصنيف حدود الطول الداخلية الخاصة بك على أنها قواعد تحريرية، وليست متطلبات جوجل.
يتم حفظ البيانات الوصفية القديمة، والاقتراح المُنشأ، وعلامات ضمان الجودة، واسم النموذج، وإصدار المطالبة لأغراض التدقيق والتراجع.
يعرف المراجع العلامات التي تتطلب موافقة يدوية قبل النشر.
أخيرًا، تذكر ما يمكن للأتمتة التحكم فيه وما لا يمكنها التحكم فيه. يوفر الوصف الجيد <title>والوصف التعريفي إشارات مفيدة لمحركات البحث على مستوى الصفحة، لكن جوجل قادر على توليد روابط العناوين ومقتطفات من محتوى الصفحة. لذا، ليس الهدف فرض طريقة عرض محددة لنتائج البحث، بل إنتاج بيانات وصفية دقيقة ومميزة ومفيدة على نطاق واسع، مع الحفاظ على قدر كافٍ من التحقق والمراجعة لاكتشاف الأخطاء قبل وصولها إلى مرحلة الإنتاج.