تساعدك AnyCrawl على تحويل صفحات الويب غير المنظمة إلى تنسيق Markdown أو JSON نظيف لتطبيقات الذكاء الاصطناعي (LLM). يوضح هذا الدليل كيفية ربط AnyCrawl مع Atlas Cloud كمصدر لواجهة برمجة تطبيقات النموذج، وكيفية كشط صفحة مشروع واحدة، واستخراج حقول مهيكلة، ثم توسيع نفس النمط ليشمل عمليات الزحف والبحث.
تتوقف معظم دروس كشط الويب عند خطوة "تنزيل HTML"، ولكن بالنسبة لتطبيقات الذكاء الاصطناعي، فهذه هي المرحلة التي يبدأ فيها العمل الحقيقي. تحتوي الصفحات الخام على رؤوس وتذييلات وقوائم جانبية ولافتات ملفات تعريف الارتباط وروابط مكررة ومحتوى يتم عرضه عبر JavaScript. ما يحتاجه نموذجك فعلياً هو واجهة بيانات مستقرة: نص نظيف عندما تحتاج إلى سياق، وJSON مكتوب (Typed) عندما تحتاج إلى حقول محددة.
هذا هو النموذج الذهني المفيد لـ AnyCrawl؛ فهي أداة زحف وكشط تعمل ببيئة Node.js / TypeScript، مصممة لتحويل المواقع الإلكترونية إلى بيانات جاهزة للنماذج اللغوية الكبيرة (LLM)، مع دعم لكشط الصفحة الواحدة، وزحف المواقع، وجمع نتائج محركات البحث (SERP)، وأعباء العمل متعددة الخيوط/العمليات، واستخراج بيانات JSON مدعوم بالذكاء الاصطناعي.
ما الذي سنقوم ببنائه
سنقوم ببناء "مستخرج بحث عن مشاريع" صغير.
المدخلات:
plaintext1رابط لصفحة مشروع عام أو وثائق تقنية
المخرجات:
plaintext1{ 2 "project_name": "AnyCrawl", 3 "one_sentence_summary": "...", 4 "core_features": ["..."], 5 "best_for": ["..."], 6 "input_types": ["url", "search query"], 7 "output_formats": ["markdown", "json"], 8 "evidence_urls": ["..."] 9}
يستخدم هذا العرض ثلاثة ميزات من AnyCrawl:
| الحاجة | ميزة AnyCrawl | لماذا هي مهمة |
| استخراج صفحة واحدة | /v1/scrape | أفضل نقطة بداية لتحويل رابط واحد إلى Markdown أو JSON |
| استخراج صفحات متعددة | /v1/crawl | مفيدة لمواقع الوثائق، وصفحات المنتجات، والمدونات، ومراكز المساعدة |
| العثور على الصفحات أولاً | /v1/search | مفيدة عندما تحتاج إلى نتائج محرك بحث قبل كشط الروابط |
| فرض حقول مستقرة | وضع JSON | مفيدة عندما يحتاج تطبيقك لمخرجات ذات نوع محدد (Typed)، وليس مجرد نص |
تقوم واجهة برمجة تطبيقات الكشط (Scrape API) في AnyCrawl بتحويل الرابط إلى بيانات مهيكلة جاهزة للذكاء الاصطناعي، ويمكنها إرجاع Markdown، وHTML، ونصوص، ولقطات شاشة، وHTML خام، وJSON، وملخصات، وروابط. توضح الوثائق أن عملية الكشط متزامنة (synchronous)، لذا لن تحتاج إلى حلقة استطلاع (polling loop) لصفحة واحدة.
دليل خطوة بخطوة: تشغيل AnyCrawl مع Atlas Cloud واستخراج بيانات الويب إلى JSON
في هذا الدليل، سنقوم باستضافة AnyCrawl محلياً باستخدام Docker، وتعيين Atlas Cloud كمزود لواجهة برمجة تطبيقات النموذج للاستخراج، ثم استدعاء خادم AnyCrawl المحلي لتحويل صفحة ويب إلى JSON مهيكل.
ملاحظة: تم كتابة هذا الدليل لبيئات العمل على macOS وLinux.
الخطوة 1: إنشاء مجلد مشروع نظيف
افتح الطرفية (Terminal) وأنشئ مجلدًا صغيرًا لهذا العرض التوضيحي.
plaintext1mkdir anycrawl-atlas-demo 2cd anycrawl-atlas-demo
سيحتوي هذا المجلد فقط على ملف البيئة وجسم الطلب الذي سنستخدمه لاختبار واجهة برمجة التطبيقات.
الخطوة 2: الحصول على مفتاح API الخاص بـ Atlas Cloud
انتقل إلى لوحة تحكم Atlas Cloud، وافتح صفحة مفاتيح API، واضغط على Create API Key، ثم انسخ المفتاح واحفظه بشكل آمن. تشير Atlas Cloud إلى أن المفتاح يظهر مرة واحدة فقط، لذا تأكد من حفظه في مكان آمن.

حافظ على سرية المفتاح. لا تقم بلصقه في مستودع GitHub عام، أو مسودة مقال عامة، أو لقطة شاشة.
الخطوة 3: إنشاء ملف .env
أنشئ ملف .env في المجلد الحالي:
plaintext1cat > .env <<'EOF' 2NODE_ENV=production 3ANYCRAWL_API_PORT=8080 4ANYCRAWL_HEADLESS=true 5ANYCRAWL_API_AUTH_ENABLED=false 6 7ATLASCLOUD_BASE_URL=https://api.atlascloud.ai/v1 8ATLASCLOUD_API_KEY=YOUR_ATLASCLOUD_API_KEY 9DEFAULT_LLM_MODEL=atlascloud/deepseek-v4 10DEFAULT_EXTRACT_MODEL=atlascloud/deepseek-v4 11EOF
استبدل YOUR_ATLASCLOUD_API_KEY بمفتاحك الحقيقي.
هذا هو المكان الصحيح لتكوين مزود النموذج. يجب أن يظل طلب الكشط نفسه مركزاً على الرابط، وتنسيق المخرجات، ومخطط JSON. أما توجيه النموذج فيتبع بيئة خادم AnyCrawl، لأن AnyCrawl هي الخدمة التي تشغل خطوة الاستخراج المدعومة بالذكاء الاصطناعي.
الخطوة 4: تشغيل AnyCrawl باستخدام Docker
ملاحظة: على نظام macOS، تأكد من تثبيت Docker Desktop وتشغيله قبل بدء AnyCrawl. بالنسبة لأجهزة Apple Silicon، استخدم auto أو playwright بدلاً من puppeteer إلا إذا كنت تشغل صورة amd64 بشكل صريح.
شغل حاوية AnyCrawl الشاملة وقم بربط ملف .env بداخلها.
plaintext1docker run -d \ 2 --name anycrawl-atlas-demo \ 3 -p 8080:8080 \ 4 -v "$(pwd)/.env:/usr/src/app/.env:ro" \ 5 ghcr.io/any4ai/anycrawl:latest
تحقق مما إذا كانت الخدمة تعمل:
plaintext1curl http://localhost:8080/health
تستخدم وثائق Docker المنفذ 8080 للنشر المحلي وتحدد /health كنقطة نهاية للتحقق.
الخطوة 5: اختبار طلب كشط أساسي أولاً
قبل طلب JSON، اختبر ما إذا كان بإمكان AnyCrawl قراءة صفحة وإرجاع Markdown.
plaintext1curl -X POST "http://localhost:8080/v1/scrape" \ 2 -H "Content-Type: application/json" \ 3 -d '{ 4 "url": "https://github.com/any4ai/AnyCrawl", 5 "engine": "auto", 6 "formats": ["markdown"], 7 "only_main_content": true 8 }'
تقوم واجهة برمجة تطبيقات الكشط في AnyCrawl بتحويل الرابط إلى بيانات مهيكلة جاهزة للذكاء الاصطناعي. وهي تدعم محركات مثل auto وcheerio وplaywright وpuppeteer، وتدعم تنسيقات مخرجات تشمل markdown وhtml وtext وjson وsummary وlinks.
بالنسبة لهذا الطلب الأول، يكفي استخدام markdown. أنت تتحقق مما إذا كان محتوى الصفحة مرئياً قبل مطالبة النموذج باستخراج حقول مهيكلة.
الخطوة 6: إنشاء طلب استخراج JSON
الآن أنشئ جسم الطلب الذي يطلب من AnyCrawl استخراج ملف تعريف مشروع مهيكل.
plaintext1cat > scrape-project.json <<'EOF' 2{ 3 "url": "https://github.com/any4ai/AnyCrawl", 4 "engine": "auto", 5 "formats": ["markdown", "json"], 6 "only_main_content": true, 7 "extract_source": "markdown", 8 "json_options": { 9 "schema_name": "open_source_project_profile", 10 "schema_description": "A structured profile of an open-source project based only on the visible page content.", 11 "schema": { 12 "type": "object", 13 "properties": { 14 "project_name": { 15 "type": "string" 16 }, 17 "one_sentence_summary": { 18 "type": "string" 19 }, 20 "core_features": { 21 "type": "array", 22 "items": { 23 "type": "string" 24 } 25 }, 26 "best_for": { 27 "type": "array", 28 "items": { 29 "type": "string" 30 } 31 }, 32 "supported_tasks": { 33 "type": "array", 34 "items": { 35 "type": "string" 36 } 37 }, 38 "developer_setup_notes": { 39 "type": "array", 40 "items": { 41 "type": "string" 42 } 43 } 44 }, 45 "required": [ 46 "project_name", 47 "one_sentence_summary", 48 "core_features" 49 ] 50 }, 51 "user_prompt": "Extract only facts that are visible on the page. Do not guess. Summarize the project for a developer who wants to use web data in an AI application." 52 } 53} 54EOF
هناك خطأ شائع هنا: عند استخدام json_options، يجب عليك تضمين "json" في formats؛ وإلا لن تحتوي الاستجابة على بيانات JSON المستخرجة. يدعم وضع JSON في AnyCrawl الاستخراج بناءً على المطالبة فقط، أو المخطط فقط، أو كليهما معاً. في هذا الدليل نستخدم كليهما للحصول على تحكم أفضل في الحقول وتوجيه عملية الاستخراج.
الخطوة 7: تشغيل استخراج JSON
أرسل الطلب إلى خادم AnyCrawl المحلي:
plaintext1curl -X POST "http://localhost:8080/v1/scrape" \ 2 -H "Content-Type: application/json" \ 3 -d @scrape-project.json
إذا تم تكوين كل شيء بشكل صحيح، يجب أن تتضمن الاستجابة نتيجة كشط ناجحة ونتيجة استخراج JSON تتبع المخطط الذي حددته.
عند هذه النقطة، تكون العملية قد اكتملت:
plaintext1صفحة مشروع GitHub 2→ واجهة برمجة تطبيقات الكشط المحلية AnyCrawl 3→ استخراج Markdown 4→ استخراج JSON مدعوم بالذكاء الاصطناعي 5→ ملف تعريف مشروع مهيكل
الجزء المهم هو أن الطلب لا يستدعي مزود النموذج مباشرة. تتعامل AnyCrawl مع سير عمل الكشط والاستخراج، بينما يتم تكوين مصدر واجهة برمجة تطبيقات النموذج على مستوى الخادم.
الخطوة 8: تجربة صفحة تعتمد على JavaScript بكثافة إذا ظهر الـ Markdown فارغاً
إذا كانت نتيجة Markdown قصيرة جداً، أو فارغة، أو تفتقد محتوى الصفحة المرئي، قم بتغيير المحرك إلى playwright.
plaintext1{ 2 "url": "https://example.com", 3 "engine": "playwright", 4 "formats": ["markdown", "json"], 5 "only_main_content": true, 6 "json_options": { 7 "user_prompt": "Extract the main topic, key facts, and important links from this page." 8 } 9}
تصف وثائق AnyCrawl محرك cheerio بأنه سريع لصفحات HTML الثابتة، وplaywright بأنه أفضل للصفحات المعتمدة على JavaScript، وauto كخيار للأغراض العامة يمكنه اختيار المحرك تلقائياً.
الخطوة 9: إيقاف وتنظيف حاوية العرض
عند الانتهاء من الاختبار، أوقف الحاوية:
plaintext1docker stop anycrawl-atlas-demo 2docker rm anycrawl-atlas-demo
يمكنك إعادة تشغيل نفس سير العمل لاحقاً عن طريق تنفيذ أمر Docker مرة أخرى من المجلد الذي يحتوي على ملف .env.
ما الذي أنجزته للتو
أصبح لديك الآن خدمة AnyCrawl محلية يمكنها كشط صفحة ويب عامة، وتنظيفها إلى Markdown، واستخراج JSON محدد النوع من خلال سير عمل مدعوم بالنماذج اللغوية الكبيرة. يحافظ هذا الإعداد على ترتيب أداة الزحف، ونموذج الاستخراج، ومخرجات التطبيق بشكل صحيح: صفحة الويب أولاً، المحتوى المهيكل ثانياً، وتكامل التطبيق أخيراً.
الأسئلة الشائعة
في ماذا تُستخدم AnyCrawl؟
تُستخدم AnyCrawl لتحويل صفحات الويب والمواقع ونتائج البحث إلى بيانات جاهزة للنماذج اللغوية الكبيرة مثل Markdown وJSON مهيكل. وهي تدعم كشط الصفحة الواحدة، والزحف الكامل للموقع، وجمع نتائج البحث، والاستخراج المعتمد على الذكاء الاصطناعي، مما يجعلها مفيدة لتطبيقات RAG، ووكلاء الذكاء الاصطناعي، وأدوات البحث، وخطوط أنابيب البيانات الداخلية.
كيف أستخرج JSON من صفحة ويب باستخدام AnyCrawl؟
استخدم /v1/scrape وقم بتضمين "json" في formats ومرر json_options مع مطالبة (prompt) أو مخطط (schema) أو كليهما. توضح وثائق وضع JSON في AnyCrawl أنه إذا استخدمت json_options ونسيت تضمين "json" في formats، فلن تحتوي الاستجابة على بيانات JSON المستخرجة.
كيف أستخدم Atlas Cloud مع AnyCrawl؟
استخدم Atlas Cloud كمزود للنماذج اللغوية الكبيرة المتوافق مع OpenAI في بيئة خادم AnyCrawl، وليس داخل كل طلب كشط. تصف وثائق Atlas Cloud نقطة نهاية LLM الخاصة بها بأنها متوافقة مع OpenAI مع عنوان أساسي https://api.atlascloud.ai/v1، بينما يستخدم إعداد المزود في AnyCrawl متغيرات البيئة مثل ATLASCLOUD_BASE_URL وATLASCLOUD_API_KEY وإعدادات نموذج الاستخراج الافتراضي.
هل يمكن لـ AnyCrawl زحف موقع إلكتروني بالكامل؟
نعم، يمكن لـ AnyCrawl زحف موقع إلكتروني عبر /v1/crawl الذي ينشئ وظيفة زحف غير متزامنة. تتيح لك واجهة برمجة تطبيقات الزحف التحكم في النطاق بخيارات مثل max_depth وlimit وinclude_paths وexclude_paths، ثم استطلاع وظيفة الزحف وجلب النتائج المرقمة.
هل يمكن لـ AnyCrawl كشط نتائج بحث Google؟
نعم، تتضمن AnyCrawl واجهة برمجة تطبيقات للبحث (Search API) لجمع نتائج البحث المهيكلة قبل كشط روابط محددة. تدعم هذه الواجهة معايير مثل query وpages وlimit وlang وcountry وtimeRange، مما يجعلها مفيدة عندما يبدأ سير عمل الذكاء الاصطناعي الخاص بك باستعلام بحث بدلاً من رابط معروف.
هل AnyCrawl أفضل من Firecrawl أو Crawl4AI؟
ليس بشكل مطلق؛ يعتمد الأمر على احتياجات النشر وسير العمل لديك. تعد AnyCrawl مناسبة لهذا الدليل لأننا نريد خدمة Docker محلية، وتكوين المزود على مستوى الخادم، وسير عمل بسيط للكشط إلى JSON، بينما تتمتع Firecrawl وCrawl4AI بنقاط قوة في الاستخراج المُدار والزحف القابل للبرمجة على التوالي.
هل يجب أن أستخدم Cheerio أو Playwright أو Puppeteer في AnyCrawl؟
ابدأ بـ auto أو cheerio، ثم انتقل إلى playwright عندما تحتاج الصفحة إلى عرض JavaScript. تضع وثائق الكشط في AnyCrawl محرك Cheerio كخيار خفيف لصفحات HTML الثابتة وPlaywright/Puppeteer كمحركات قائمة على المتصفح للصفحات الأكثر تعقيداً، لذا فإن سير العمل العملي هو فحص Markdown أولاً واستخدام محرك أثقل فقط عند الضرورة.
لماذا مخرجات JSON الخاصة بي مفقودة في AnyCrawl؟
السبب الأكثر شيوعاً هو عدم تضمين "json" في formats. سبب شائع آخر هو أن المحرك المختار لم يلتقط محتوى الصفحة بشكل صحيح، خاصة في المواقع التي تعتمد على JavaScript؛ في هذه الحالة، أعد المحاولة مع auto أو playwright وتحقق من Markdown قبل تصحيح المخطط.
هل يمكنني استخدام AnyCrawl لخطوط أنابيب بيانات RAG؟
نعم، تعد AnyCrawl مناسبة عملياً لإعداد بيانات RAG لأنها تستطيع تحويل صفحات الويب إلى Markdown وJSON موجه بالمخطط قبل دخول المحتوى إلى قاعدة بيانات المتجهات (vector database) أو نظام المعرفة الخاص بك. نمط الإنتاج الجيد هو الكشط أولاً، والتحقق من الحقول المستخرجة، وتخزين الرابط المصدر، والاحتفاظ بما يكفي من Markdown لتصحيح الأخطاء.
ما هو أسهل سير عمل لـ AnyCrawl للمبتدئين؟
سير العمل الأسهل هو: كشط رابط واحد، طلب Markdown، التأكد من أن المحتوى يبدو صحيحاً، إضافة وضع JSON، التحقق من المخرجات، وفقط بعد ذلك الانتقال إلى الزحف أو البحث. هذا يتجنب خلط مشاكل الوصول إلى الصفحة، ومشاكل العرض، ومشاكل مخطط الاستخراج في طلب واحد يصعب تصحيحه.
الخاتمة
تعد AnyCrawl مفيدة لأنها تتعامل مع صفحات الويب كمدخلات لأنظمة الذكاء الاصطناعي، وليس مجرد وثائق HTML للتنزيل. ابدأ بصفحة واحدة، وافحص الـ Markdown، وأضف مخططاً، وتحقق من JSON، وفقط بعد ذلك توسع في الزحف أو البحث.
هذا الترتيب يحافظ على سير العمل بسيطاً، كما يبقي نقاط الفشل مرئية، وهو ما تريده عندما تصبح بيانات الويب جزءاً من تطبيق ذكاء اصطناعي.







