بناء بوت (Bot) لمراجعة جودة المقال بناءً على معايير Google E-E-A-T
ماذا سنبني اليوم؟
اليوم، سنقوم ببناء بوت Python قادر على استخراج محتوى المقالات من روابط محددة، ثم استخدام نموذج لغوي كبير (LLM) لتقييم جودة هذا المحتوى بناءً على معايير Google E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness). سيساعدنا هذا البوت في أتمتة جزء كبير من عملية مراجعة المحتوى وتحسينه، مما يوفر الوقت والجهد في استراتيجيات تحسين محركات البحث (SEO).
فهم معايير Google E-E-A-T
Google E-E-A-T هي مجموعة من الإرشادات التي تستخدمها Google لتقييم جودة المحتوى، خاصة للمواضيع التي تؤثر على الصحة، المال، أو السعادة (YMYL - Your Money Your Life). تتكون من:
- Experience (الخبرة): هل لدى منشئ المحتوى خبرة مباشرة أو تجربة شخصية في الموضوع؟
- Expertise (الخبرة الفنية): هل المحتوى يعرض معرفة عميقة ومهارة في الموضوع؟
- Authoritativeness (السلطة): هل يُنظر إلى منشئ المحتوى أو الموقع على أنه مصدر موثوق ومرجعي في المجال؟
- Trustworthiness (الموثوقية): هل المحتوى دقيق، صادق، آمن، وموثوق به؟
مراجعة هذه المعايير يدوياً تستغرق وقتاً طويلاً. بوتنا سيحاول أتمتة هذا التقييم باستخدام قوة الذكاء الاصطناعي.
الأدوات والتقنيات المستخدمة
- Python: لغة البرمجة الأساسية.
requests: لجلب محتوى صفحات الويب.BeautifulSoup4: لاستخراج النص النظيف من HTML.openai: للتفاعل مع نماذج GPT لتقييم E-E-A-T.gspread: للتفاعل مع جداول بيانات Google Sheets (لتخزين النتائج).- Google Cloud Platform (GCP): لإنشاء حساب خدمة (Service Account) للوصول إلى Google Sheets.
الخطوة 1: تهيئة البيئة وتثبيت المكتبات
أولاً، تأكد من تثبيت Python على نظامك. ثم قم بتثبيت المكتبات المطلوبة باستخدام pip:
pip install requests beautifulsoup4 openai gspread
ملاحظة هامة لـ
gspread: ستحتاج إلى إعداد حساب خدمة على Google Cloud Platform ومنحه صلاحية الوصول إلى جدول البيانات الخاص بك. قم بتنزيل ملف مفتاح JSON الخاص بحساب الخدمة وضعه في نفس مجلد السكريبت.للحصول على مفتاح OpenAI API: قم بزيارة منصة OpenAI وأنشئ مفتاح API جديداً. يفضل تعيينه كمتغير بيئة باسم
OPENAI_API_KEY.
الخطوة 2: استخراج محتوى المقال من الرابط
سنقوم بإنشاء دالة لجلب صفحة الويب وتحليلها لاستخراج النص الرئيسي للمقال.
import requests
from bs4 import BeautifulSoup
def fetch_article_content(url):
try:
response = requests.get(url, timeout=10)
response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
soup = BeautifulSoup(response.text, 'html.parser')
# محاولة استخراج النص الرئيسي من المقال
# يمكن تحسين هذه الأجزاء لتناسب بنية المواقع المستهدفة بشكل أفضل
paragraphs = soup.find_all('p')
article_text = ' '.join([p.get_text() for p in paragraphs if p.get_text().strip()])
# محاولة إزالة بعض العناصر غير المرغوب فيها مثل قوائم التنقل أو التذييلات
for script in soup(["script", "style", "header", "footer", "nav"]):
script.extract() # Remove these tags
# يمكن استخدام find('article') أو find_all('div', class_='content')
# بناءً على بنية الموقع
main_content = soup.find('article') or soup.find('main') or soup.find(id='content')
if main_content:
article_text = main_content.get_text(separator=' ', strip=True)
else:
# إذا لم يتم العثور على main_content، نستخدم الفقرات المستخرجة سابقاً
pass
# تنظيف النص من المسافات الزائدة
article_text = ' '.join(article_text.split())
# تقييد حجم النص المرسل إلى LLM لتجنب تجاوز الحد الأقصى للرموز
# وتوفير التكلفة
max_tokens = 4000 # تقريباً 16000 حرف
if len(article_text) > max_tokens * 4: # تقريباً 4 أحرف لكل توكن
article_text = article_text[:max_tokens * 4] + "..."
return article_text
except requests.exceptions.RequestException as e:
print(f"Error fetching {url}: {e}")
return None
except Exception as e:
print(f"An unexpected error occurred for {url}: {e}")
return None
الخطوة 3: تقييم E-E-A-T باستخدام نموذج OpenAI
هذا هو الجزء الأساسي الذي سيستخدم الذكاء الاصطناعي لتقييم المحتوى. سنقوم بتمرير النص المستخرج إلى نموذج GPT مع توجيهات واضحة لتقييم E-E-A-T.
import openai
import os
def evaluate_e_e_a_t(article_text):
if not article_text:
return "No content to evaluate."
# تأكد من تعيين مفتاح API الخاص بك كمتغير بيئة أو استبدله مباشرة (لا ينصح بذلك في الإنتاج)
# openai.api_key = os.getenv("OPENAI_API_KEY") # سيتم تعيينه في الدالة الرئيسية
prompt = f"""
أنت خبير في تقييم جودة المحتوى وفقاً لمعايير Google E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness).
قم بتحليل المقال التالي وقدم تقييماً موجزاً لكل من E, E, A, T على مقياس من 1 إلى 5 (حيث 5 هو الأفضل)،
ثم قدم ملخصاً عاماً ونقاطاً قابلة للتنفيذ لتحسين E-E-A-T.
المقال:
---
{article_text}
---
التقييم المطلوب:
1. Experience (الخبرة): [1-5]
2. Expertise (الخبرة الفنية): [1-5]
3. Authoritativeness (السلطة): [1-5]
4. Trustworthiness (الموثوقية): [1-5]
5. ملخص عام: [نص موجز عن نقاط القوة والضعف]
6. نقاط تحسين مقترحة: [قائمة بنقاط قابلة للتنفيذ لرفع E-E-A-T]
"""
try:
response = openai.chat.completions.create(
model="gpt-4o", # يمكنك استخدام gpt-3.5-turbo أو أي نموذج أحدث
messages=[
{"role": "system", "content": "أنت مساعد خبير في تقييم جودة المحتوى لـ SEO."},
{"role": "user", "content": prompt}
],
max_tokens=1000,
temperature=0.0
)
return response.choices[0].message.content.strip()
except openai.APIError as e:
print(f"OpenAI API Error: {e}")
return f"Error evaluating E-E-A-T: {e}"
except Exception as e:
print(f"An unexpected error during E-E-A-T evaluation: {e}")
return f"Error evaluating E-E-A-T: {e}"
الخطوة 4: تسجيل النتائج في Google Sheets
سنستخدم gspread لكتابة الرابط وتقييم E-E-A-T في جدول بيانات Google لتسهيل المراجعة والتتبع.
import gspread
from gspread.exceptions import SpreadsheetNotFound
# اسم ملف مفتاح JSON لحساب الخدمة (يجب أن يكون في نفس مجلد السكريبت)
SERVICE_ACCOUNT_FILE = 'your-service-account-key.json' # غير هذا الاسم
def setup_google_sheet(spreadsheet_name, worksheet_name='E-E-A-T Reviews'):
try:
gc = gspread.service_account(filename=SERVICE_ACCOUNT_FILE)
spreadsheet = gc.open(spreadsheet_name)
try:
worksheet = spreadsheet.worksheet(worksheet_name)
except gspread.exceptions.WorksheetNotFound:
worksheet = spreadsheet.add_worksheet(title=worksheet_name, rows="100", cols="20")
worksheet.append_row(['Article URL', 'E-E-A-T Evaluation']) # إضافة رؤوس الأعمدة
return worksheet
except SpreadsheetNotFound:
print(f"Spreadsheet '{spreadsheet_name}' not found. Please create it or check the name.")
return None
except Exception as e:
print(f"Error setting up Google Sheet: {e}")
return None
def log_to_sheet(worksheet, url, evaluation_result):
if worksheet:
try:
worksheet.append_row([url, evaluation_result])
print(f"Logged results for {url} to Google Sheet.")
except Exception as e:
print(f"Error logging to sheet for {url}: {e}")
else:
print(f"Worksheet not available, cannot log results for {url}.")
الخطوة 5: تجميع البوت وتشغيله
الآن لنجمع كل الأجزاء معاً في سكريبت واحد. ستحتاج إلى قائمة بالروابط التي تريد تقييمها.
import requests
from bs4 import BeautifulSoup
import openai
import os
import gspread
from gspread.exceptions import SpreadsheetNotFound
# --- الدوال المعرفة سابقاً (تم تضمينها هنا ليكون السكريبت كاملاً وقابلاً للتشغيل) ---
def fetch_article_content(url):
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
paragraphs = soup.find_all('p')
article_text = ' '.join([p.get_text() for p in paragraphs if p.get_text().strip()])
for script in soup(["script", "style", "header", "footer", "nav"]):
script.extract()
main_content = soup.find('article') or soup.find('main') or soup.find(id='content')
if main_content:
article_text = main_content.get_text(separator=' ', strip=True)
else:
pass
article_text = ' '.join(article_text.split())
max_tokens = 4000
if len(article_text) > max_tokens * 4:
article_text = article_text[:max_tokens * 4] + "..."
return article_text
except requests.exceptions.RequestException as e:
print(f"Error fetching {url}: {e}")
return None
except Exception as e:
print(f"An unexpected error occurred for {url}: {e}")
return None
def evaluate_e_e_a_t(article_text):
if not article_text:
return "No content to evaluate."
prompt = f"""
أنت خبير في تقييم جودة المحتوى وفقاً لمعايير Google E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness).
قم بتحليل المقال التالي وقدم تقييماً موجزاً لكل من E, E, A, T على مقياس من 1 إلى 5 (حيث 5 هو الأفضل)،
ثم قدم ملخصاً عاماً ونقاطاً قابلة للتنفيذ لتحسين E-E-A-T.
المقال:
---
{article_text}
---
التقييم المطلوب:
1. Experience (الخبرة): [1-5]
2. Expertise (الخبرة الفنية): [1-5]
3. Authoritativeness (السلطة): [1-5]
4. Trustworthiness (الموثوقية): [1-5]
5. ملخص عام: [نص موجز عن نقاط القوة والضعف]
6. نقاط تحسين مقترحة: [قائمة بنقاط قابلة للتنفيذ لرفع E-E-A-T]
"""
try:
response = openai.chat.completions.create(
model="gpt-4o", # يمكنك استخدام gpt-3.5-turbo أو أي نموذج أحدث
messages=[
{"role": "system", "content": "أنت مساعد خبير في تقييم جودة المحتوى لـ SEO."},
{"role": "user", "content": prompt}
],
max_tokens=1000,
temperature=0.0
)
return response.choices[0].message.content.strip()
except openai.APIError as e:
print(f"OpenAI API Error: {e}")
return f"Error evaluating E-E-A-T: {e}"
except Exception as e:
print(f"An unexpected error during E-E-A-T evaluation: {e}")
return f"Error evaluating E-E-A-T: {e}"
# اسم ملف مفتاح JSON لحساب الخدمة (يجب أن يكون في نفس مجلد السكريبت)
SERVICE_ACCOUNT_FILE = 'your-service-account-key.json' # غير هذا الاسم!
def setup_google_sheet(spreadsheet_name, worksheet_name='E-E-A-T Reviews'):
try:
gc = gspread.service_account(filename=SERVICE_ACCOUNT_FILE)
spreadsheet = gc.open(spreadsheet_name)
try:
worksheet = spreadsheet.worksheet(worksheet_name)
except gspread.exceptions.WorksheetNotFound:
worksheet = spreadsheet.add_worksheet(title=worksheet_name, rows="100", cols="20")
worksheet.append_row(['Article URL', 'E-E-A-T Evaluation']) # إضافة رؤوس الأعمدة
return worksheet
except SpreadsheetNotFound:
print(f"Spreadsheet '{spreadsheet_name}' not found. Please create it or check the name.")
return None
except Exception as e:
print(f"Error setting up Google Sheet: {e}")
return None
def log_to_sheet(worksheet, url, evaluation_result):
if worksheet:
try:
worksheet.append_row([url, evaluation_result])
print(f"Logged results for {url} to Google Sheet.")
except Exception as e:
print(f"Error logging to sheet for {url}: {e}")
else:
print(f"Worksheet not available, cannot log results for {url}.")
# -----------------------------------------------------------------------------
# الإعدادات الرئيسية
# -----------------------------------------------------------------------------
# تأكد من تعيين مفتاح API الخاص بك كمتغير بيئة قبل تشغيل السكريبت:
# export OPENAI_API_KEY="YOUR_OPENAI_API_KEY"
openai.api_key = os.getenv("OPENAI_API_KEY")
# اسم جدول بيانات Google Sheet الخاص بك
GOOGLE_SPREADSHEET_NAME = 'E-E-A-T Article Reviews'
# اسم الورقة داخل جدول البيانات
GOOGLE_WORKSHEET_NAME = 'Article Quality'
# اسم ملف مفتاح حساب الخدمة (يجب أن يكون في نفس مجلد السكريبت)
SERVICE_ACCOUNT_FILE = 'your-service-account-key.json' # لا تنس تغيير هذا!
# قائمة بالروابط التي تريد تقييمها
article_urls = [
"https://www.example.com/article-1", # استبدل هذه الروابط بروابط حقيقية
"https://www.example.com/article-2",
"https://www.example.org/blog/another-post",
# أضف المزيد من الروابط هنا
]
def main():
if not openai.api_key:
print("Error: OPENAI_API_KEY environment variable not set.")
print("Please set your OpenAI API key before running the script.")
return
# إعداد جدول البيانات
worksheet = setup_google_sheet(GOOGLE_SPREADSHEET_NAME, GOOGLE_WORKSHEET_NAME)
if not worksheet:
print("Failed to set up Google Sheet. Exiting.")
return
for url in article_urls:
print(f"\nProcessing URL: {url}")
article_content = fetch_article_content(url)
if article_content:
print("Article content fetched. Sending to LLM for E-E-A-T evaluation...")
e_e_a_t_evaluation = evaluate_e_e_a_t(article_content)
print("E-E-A-T Evaluation received.")
# طباعة التقييم للتحقق الفوري (يمكن إزالة هذا في الإنتاج)
# print(e_e_a_t_evaluation)
log_to_sheet(worksheet, url, e_e_a_t_evaluation)
else:
error_message = f"Could not fetch content for {url}."
print(error_message)
log_to_sheet(worksheet, url, error_message)
if __name__ == "__main__":
main()
النتيجة النهائية المتوقعة
بعد تشغيل السكريبت، سيقوم البوت بالمرور على كل رابط في قائمة article_urls:
- سيقوم بجلب محتوى المقال من الرابط.
- يرسل هذا المحتوى إلى نموذج OpenAI GPT مع تعليمات لتقييم E-E-A-T.
- يتلقى تقييماً مفصلاً من النموذج يتضمن درجات (1-5) لكل من Experience, Expertise, Authoritativeness, Trustworthiness، بالإضافة إلى ملخص عام واقتراحات للتحسين.
- يسجل الرابط ونتائج التقييم في صف جديد داخل جدول بيانات Google Sheet المحدد.
ستجد جدول بيانات Google Sheet الخاص بك (المسمى E-E-A-T Article Reviews في هذا المثال) يحتوي على ورقة عمل (Article Quality) مليئة بالروابط والتقييمات المقابلة لها، مما يوفر لك رؤى قيمة قابلة للتنفيذ لتحسين جودة محتواك وفقاً لمعايير Google.