
قررت ألا يبقى موقعي معتمداً على التدوين اليدوي واستنزاف الوقت في رصد المستجدات، بل خضت تجربة عملية لبناء وكيل ذكاء اصطناعي مستقل تماماً بلغة بايثون. يتولى هذا الوكيل مراقبة خلاصات المواقع التقنية العالمية والعربية (RSS)، وتصفية الأخبار المتكررة تلقائياً، وإرسال الموضوعات الجديدة إلى نماذج الذكاء الاصطناعي لإعادة صياغتها باللغة العربية وإخراجها كود HTML منسق، ثم رفعها مباشرة إلى ووردبريس كمسودة جاهزة للمراجعة.
في هذه المقالة الحصرية على منصة البعد التقني الرابع، أشارككم الرحلة الميدانية خطوة بخطوة في تطوير وكيل ذكاء اصطناعي عملي: الأسئلة التقنية، الأخطاء الميدانية في موجه الأوامر وكيفية تلافيها، وصولاً إلى جعله يعمل بمفرده على مدار الساعة دون أي تدخل يدوي.
1. المخطط التشغيلي: كيف يعمل وكيل ذكاء اصطناعي لإدارة المحتوى؟
تم تصميم منطق العمل ليعمل كـ وكيل ذكاء اصطناعي متكامل المهام وفق أربع مراحل تسلسلية:
- الرصد الذكي: فحص مستمر لروابط خلاصات الأخبار عبر RSS بواسطة الـ وكيل ذكاء اصطناعي.
- نظام الذاكرة ومنع التكرار: فحص سجل محلي (
published_history.txt) لضمان عدم إعادة صياغة أي خبر تم نشره مسبقاً. - الصياغة وهندسة الأوامر: توظيف نماذج Gemini لصياغة جولة عربية رصينة وتنسيقها داخل وسوم HTML دون نصوص زائدة.
- الإيداع البرمجي الآمن: استخدام واجهة WordPress REST API لإيداع المسودة في الموقع تلقائياً.
2. التجهيز واستخراج مفاتيح الربط البرمجي
أولاً: مفتاح Google Gemini API لتغذية عقل الوكيل
لكي يمتلك أي وكيل ذكاء اصطناعي قدرة التحليل والصياغة، توجهت إلى منصة Google AI Studio. كان سؤالي في البداية: من أين أحصل على المفتاح الصحيح داخل الواجهة؟
وجدت الإجابة بالنزول إلى أسفل القائمة الجانبية بالمنصة والضغط على أيقونة المفتاح 🔑، ثم اختيار Create API key وتحديد المشروع لنسخ المفتاح السري مباشرة.
ثانياً: تصريح نشر ووردبريس (كلمات مرور التطبيقات)
لتفادي استخدام كلمة المرور الأساسية لحساب الإدارة أثناء تشغيل وكيل ذكاء اصطناعي، توجهت إلى: لوحة تحكم ووردبريس > أعضاء > حسابك، ثم انتقلت لقسم كلمات مرور التطبيق (Application Passwords)، وأنشأت اسماً مخصصاً للوكيل وحصلت على رمز تصريح النشر المكون من 16 حرفاً.
3. سجل التجارب والأخطاء الميدانية أثناء بناء وكيل ذكاء اصطناعي
أثناء التطبيق الفعلي واجهنا عوائق تقنية غير متوقعة في شاشة الأوامر، قمنا بحلها لضمان استقرار عمل الـ وكيل ذكاء اصطناعي:
طبيعة الخطأ: ظهور رسالة في موجه الأوامر تفيد بعدم التعرف على أمر pip عند تثبيت مكتبات تشغيل وكيل ذكاء اصطناعي.
السبب والحل: مسار بايثون لم يكن مضافاً إلى متغيرات النظام (PATH). قمنا بالموافقة على خيار الإضافة في معالج بايثون بالضغط على الحرف y، ثم أعدنا فتح موجه الأوامر ليتعرف على الأوامر فوراً.
طبيعة الخطأ: ظهور تحذير Windows is not configured to allow paths longer than 260 characters.
السبب والحل: نظام ويندوز يفرض حداً أقصى لطول المسارات بـ 260 حرفاً مما قد يعطل تثبيت بعض حزم تشغيل وكيل ذكاء اصطناعي. قمنا بتجاوزه بالموافقة بالضغط على y لإلغاء القيد برمجياً.
طبيعة الخطأ: عند نسخ المفتاح ولصقه في كود وكيل ذكاء اصطناعي بدأ بحروف عربية (مثل: أق.Ab8...) ورفضه السيرفر.
السبب والحل: ميزة الترجمة التلقائية للمتصفح كانت مفعّلة، فقامت بتعريب الرموز الإنجليزية الأولى من المفتاح. قمنا بتلافي ذلك باستخدام زر النسخ الإلكتروني المدمج داخل المنصة مباشرة بدلاً من تظليل النص يدوياً.
طبيعة الخطأ: إرجاع رسالة خطأ models/gemini-2.5-flash is no longer available to new users أثناء استدعاء نموذج التوليد.
السبب والحل: النموذج تم تحديثه للمشاريع الجديدة. قمنا بتعديل الرابط في كود وكيل ذكاء اصطناعي واستدعاء أحدث نموذج معتمد وهو gemini-3.6-flash.
طبيعة الخطأ: بعد قيام وكيل ذكاء اصطناعي بصياغة المقال بنجاح، رُفض النشر وظهر الخطأ 406 Not Acceptable الناتج عن جدار حماية الخادم Mod_Security.
السبب والحل: الاستضافة تحظر الطلبات التلقائية ذات الترويسة الافتراضية الخاصة ببايثون (python-requests). تلافينا ذلك بإضافة ترويسات متصفح نظامية (User-Agent و Content-Type) ليعامل السيرفر طلب الـ وكيل ذكاء اصطناعي كمتصفح طبيعي مصرح له.
4. ملخص خطوات ترويض الأخطاء في جدول منظم
| المرحلة | المشكلة الميدانية | السبب التقني | الإجراء وتلافي الخطأ |
|---|---|---|---|
| بيئة التشغيل | خطأ عدم التعرف على pip | عدم إضافة بايثون لمتغيرات النظام PATH | الموافقة على إضافة المسار تلقائياً بالضغط على y |
| بيانات الاعتماد | تلف صيغة مفتاح الـ API | الترجمة التلقائية للمتصفح عربت رموز المفتاح | الضغط على زر النسخ الرسمي داخل المنصة |
| محرك الذكاء | خطأ 404 Model Not Found | محاولة استدعاء إصدار مؤرشف للمشاريع الجديدة | تحديث رابط الاستدعاء للنموذج الأحدث gemini-3.6-flash |
| استضافة الموقع | خطأ الحظر 406 Not Acceptable | جدار الحماية Mod_Security حظر ترويسة بايثون | تضمين ترويسات متصفح رسمية (User-Agent) في كود الإرسال |
5. الكود البرمجي الشامل والمعتمد: تشغيل وكيل ذكاء اصطناعي متكامل
هذا هو الكود النهائي الكامل الذي يمثل وكيل ذكاء اصطناعي مستقر يجمع كافة الإصلاحات ومعالجة جدار الحماية وتحديث النموذج وتصفية التكرار:
import os
import requests
import feedparser
# ==================== الإعدادات الخاصة بالموقع ====================
# تنبيه: استبدل النجوم بالبيانات الفعلية الخاصة بموقعك
GEMINI_API_KEY = "********************************************"
WP_URL = "https://yourdomain.com/wp-json/wp/v2/posts"
WP_USER = "admin"
WP_APP_PASSWORD = "**** **** **** ****"
# روابط تغذية الأخبار المعتمدة
RSS_FEEDS = [
"https://techcrunch.com/feed/",
"https://www.theverge.com/rss/index.xml",
"https://aitnews.com/feed/"
]
HISTORY_FILE = "published_history.txt"
# ===============================================================
def load_history():
"""قراءة سجل الروابط المنشورة سابقاً لتجنب التكرار"""
if not os.path.exists(HISTORY_FILE):
return set()
with open(HISTORY_FILE, "r", encoding="utf-8") as f:
return set(line.strip() for line in f)
def save_to_history(link):
"""حفظ رابط الخبر الجديد في ملف الذاكرة"""
with open(HISTORY_FILE, "a", encoding="utf-8") as f:
f.write(link + "\n")
def fetch_latest_news():
"""جلب الأخبار الجديدة فقط من المصادر"""
history = load_history()
collected = []
for feed_url in RSS_FEEDS:
feed = feedparser.parse(feed_url)
for entry in feed.entries[:5]:
link = entry.link
if link not in history:
collected.append({
"title": entry.title,
"summary": entry.get("summary", ""),
"link": link
})
if len(collected) >= 4:
break
if len(collected) >= 4:
break
return collected
def generate_article_with_ai(articles):
"""صياغة جولة إخبارية احترافية وتنسيقها داخل كود HTML"""
raw_content = ""
for i, art in enumerate(articles, 1):
raw_content += f"الخبر {i}:\nالعنوان: {art['title']}\nالتفاصيل: {art['summary']}\nالمصدر: {art['link']}\n\n"
prompt = f"""
أنت محرر تقني محترف.
المطلوب صياغة جولة إخبارية تقنية شاملة باللغة العربية بناءً على الأخبار التالية:
{raw_content}
الشروط:
1. اكتب عنواناً جذاباً ومتوافقاً مع معايير السيو.
2. صياغة كل خبر بأسلوب عربي فصيح، رصين، وعميق (بين 60 إلى 90 كلمة للخبر).
3. أخرج المقال كاملاً داخل كود HTML نظيف مع كلاسات CSS أنيقة للبطاقات والفواصل.
4. افصل بين العنوان وكود المقال بكلمة: ---SPLIT---
بحيث يكون السطر الأول هو العنوان فقط، يليه ---SPLIT---، ثم يليه كود HTML للمقال دون نصوص إضافية.
"""
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent?key={GEMINI_API_KEY}"
headers = {"Content-Type": "application/json"}
payload = {
"contents": [{
"parts": [{"text": prompt}]
}]
}
res = requests.post(url, headers=headers, json=payload)
if res.status_code == 200:
data = res.json()
return data["candidates"][0]["content"]["parts"][0]["text"]
else:
raise Exception(f"خطأ في الاتصال بالذكاء الاصطناعي ({res.status_code}): {res.text}")
def publish_to_wordpress(title, content_html, status="draft"):
"""إرسال المقال إلى ووردبريس مع ترويسات متصفح لتخطي Mod_Security"""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(
WP_URL,
headers=headers,
auth=(WP_USER, WP_APP_PASSWORD),
json={
"title": title,
"content": content_html,
"status": status # ترسل كمسودة للمراجعة البشرية قبل النشر
}
)
return response
def run_agent():
print("🤖 بدأ الوكيل العمل: جاري فحص مصادر الأخبار وتصفية المكرر...")
new_articles = fetch_latest_news()
if not new_articles:
print("✅ جميع الأخبار مسجلة مسبقاً، لا توجد موضوعات جديدة الآن.")
return
print(f"🔍 تم رصد {len(new_articles)} أخبار جديدة لم تُرصد من قبل.")
print("🧠 جاري إرسال البيانات إلى عقل الوكيل للصياغة والتنسيق...")
try:
ai_output = generate_article_with_ai(new_articles)
except Exception as e:
print(f"❌ تعذر استلام الرد: {e}")
return
if "---SPLIT---" in ai_output:
title, html_body = ai_output.split("---SPLIT---", 1)
title = title.strip()
html_body = html_body.strip()
else:
title = "جولة إخبارية تقنية شاملة"
html_body = ai_output.strip()
print("🚀 جاري إرسال المقال إلى لوحة تحكم ووردبريس كمسودة...")
wp_res = publish_to_wordpress(title, html_body, status="draft")
if wp_res.status_code in [200, 201]:
print("🎉 مبروك! نجح الوكيل في إنشاء مسودة المقال داخل موقعك بنجاح.")
for art in new_articles:
save_to_history(art["link"])
print("💾 تم تدوين روابط الأخبار في ملف الذاكرة لمنع تكرارها نهائياً.")
else:
print(f"❌ حدث خطأ في التواصل مع ووردبريس: {wp_res.status_code}")
print(wp_res.text)
if __name__ == "__main__":
run_agent()
6. أتمتة التشغيل الذاتي: كيف يعمل الوكيل بمفرده في الخلفية؟
كان السؤال الحاسم بعد اكتمال البرمجة: هل يلزمني أن أطلب الأخبار من الوكيل كل مرة أم أنه يضعها تلقائياً؟
الوكيل مبرمج ليعمل ذاتياً دون أي تدخل في انتقاء الأخبار؛ فهو يبحث ويفلتر ويصيغ وينشر بمجرد إعطاء أمر التشغيل. وحتى يتحول إلى وكيل ذكاء اصطناعي مستقل تماماً ولا يحتاج منك فتح سطر الأوامر يومياً، يمكنك تطبيق إحدى طريقتين للأتمتة:
خيار مجاني وسريع لتشغيل السكربت في الخلفية على حاسوبك الشخصي:
- افتح قائمة ابدأ وابحث عن Task Scheduler (جدولة المهام).
- اختر Create Basic Task وضع اسماً للمهمة مثل
NewsBot_Auto. - حدد التكرار (مثلاً: يومياً Daily، أو كل 6 ساعات).
- في خيار الإجراء اختر Start a program، واكتب في خانة البرنامج
python. - في خانة الوسائط (Arguments) اكتب اسم الملف
news_agent.py، وفي خانة المسار (Start in) ضع مسار المجلد الذي يحتوي الملف.
إذا كنت ترغب في أن يواصل الـ وكيل ذكاء اصطناعي عمله حتى لو كان جهازك مغلقاً، يمكنك رفع الملف إلى خادم خاص افتراضي (VPS) أو ربطه عبر منصات الأتمتة السحابية وجدولته عبر مهام Cron Job ليعمل كل بضع ساعات، مما يحول موقعك إلى منصة إخبارية ذكية ومستقلة 24/7.
7. خاتمة التجربة والآفاق القادمة
كانت لحظة رؤية إشعار النجاح في موجه الأوامر ثم الدخول إلى لوحة تحكم ووردبريس ومشاهدة المسودة المكتملة برهاناً قاطعاً على نجاح فكرة بناء وكيل ذكاء اصطناعي عملي. لقد تحولت عملية التحرير الإخباري من جهد روتيني مضنٍ إلى أتمتة دقيقة ومستقلة، تمنح صناع المحتوى القدرة على مواكبة التدفق التقني الهائل بأعلى معايير الدقة والأمان.
ولمزيد من الشروحات ذات الصلة، ألق نظرة على ما كتبناه في الثورة الذكية التي أعادت تشكيل العالم الرقمي 2022.