واجهة REST + خادم MCP
API تقرير SEO لـ
المطورين ووكلاء AI
أنشئ تقارير عبر REST، استعلم عنها حتى الاكتمال، واقرأ التقرير المحفوظ نفسه الذي يراه فريقك على الموقع. نفس مفتاح API من خطتك المدفوعة يربط أي وكيل يدعم MCP.
نموذج الوصول
الوصول إلى API مرتبط بالحساب ومفتاحي. اختر خطة، أنشئ مفتاح API في حسابك، وكل موقع جديد تشغله عبر API يستخدم أرصدة خطتك، تماماً كما لو كان على الموقع. يُعاد ضبط الأرصدة في اليوم الأول من كل شهر (UTC) ولا تُنقل أبداً.
جلسات الموقع، مكالمات API، وجلسات الوكيل تُقرأ من نفس حالة التقرير المحفوظ.
أنشئ تقريرًا، استعلم عن الحالة، ثم اقرأ النتائج الكاملة من نفس الكائن.
نقاط النهاية المتاحة
/api/v1/reports/previewأنشئ معاينة درجة لدمج الشركاء على خطة مدفوعة.
/api/v1/reportsأنشئ تقريراً جديداً أو أعد استخدام تقرير موجود بالفعل. أضف "forceRerun": true لإعادة فحص الموقع بدلاً من ذلك.
/api/v1/reports/:idاحصل على أحدث حالة تقارير وأقسامها.
/api/v1/reports/:id/resultاقرأ نتائج التقرير الكامل.
/api/v1/reports/:id/download?format=jsonتصدير حمولة التقرير كـ JSON للدمج البرمجي.
مقدمة سريعة: تقرير SEO من curl
تغطي ثلاث طلبات كامل التدفق، باستخدام مفتاح API من خطتك المدفوعة. الأول ينشئ التقرير، الثاني يستعلم عنه حتى لا يبقى في قائمة الانتظار أو يعمل، والثالث يصدّره. يستخدم موقع جديد رصيدًا واحدًا؛ تشغيل موقع لديك تقرير بالفعل مرة أخرى لا يستخدم رصيدًا.
export SEOREPORT_API_KEY="sr__live_your_api_key"
# Send the key as a header file so it never sits in curl's argv, where ps shows
# it to every local user. printf is a shell builtin, so it spawns no process.
auth() { printf 'Authorization: Bearer %s\n' "$SEOREPORT_API_KEY"; }
# 1. Create a report and keep its job ID
JOB_ID=$(curl -s -X POST https://seoreport.dev/api/v1/reports \
-H @<(auth) \
-H "Content-Type: application/json" \
-d '{"url": "example.com"}' | jq -r '.report.jobId')
# 2. Poll until the report is no longer queued or running
while :; do
STATUS=$(curl -s "https://seoreport.dev/api/v1/reports/$JOB_ID" \
-H @<(auth) | jq -r '.report.status')
case "$STATUS" in queued|running) sleep 3 ;; *) break ;; esac
done
echo "status: $STATUS"
# 3. Export the finished report (format=pdf, md and txt also work)
curl -s "https://seoreport.dev/api/v1/reports/$JOB_ID/download?format=json" \
-H @<(auth) -o report.jsonما الذي تُرجعه واجهة برمجة تقارير SEO
يُصدَّر كل تقرير مكتمل كمستند JSON واحد: الدرجة الإجمالية وفئتها، ودرجة لكل مجال، وعدد الصفحات التي جرى تحليلها، والمشكلات المفتوحة حسب الخطورة، وكل نتيجة مرتبة حسب أولوية الإصلاح مع سبب أهميتها وطريقة إصلاحها وطريقة التحقق من الإصلاح، والأدلة والصفحات التي تستند إليها. وتُولَّد ملفات Markdown والنص وPDF من التشخيص نفسه.
{
"exportVersion": 1,
"jobId": "3f6c2a1e-8d4b-4c7a-9e21-5b0d7f4a6c18",
"targetUrl": "https://example.com",
"status": "completed",
"isSnapshotReady": true,
"auditedAt": "2026-10-14T09:12:41.000Z",
"locale": "en",
"score": { "overall": 72, "band": "stable" },
"areas": [
{ "id": "access_crawl", "name": "Crawl & Index", "score": 61 },
{ "id": "metadata_onpage", "name": "On-Page SEO", "score": 78 },
{ "id": "security", "name": "Security", "score": 84 }
],
"pagesAnalyzed": 24,
"openIssues": { "critical": 0, "high": 2, "medium": 5, "low": 3, "total": 10 },
"findings": [
{
"rank": 1,
"title": "Render parity mismatch",
"status": "fail",
"severity": "high",
"area": { "id": "access_crawl", "name": "Crawl & Index" },
"whyItMatters": "Raw HTML and rendered DOM should tell the same SEO story so crawlers and AI systems do not see conflicting versions of the page.",
"fix": "Ensure raw HTML and rendered DOM contain the same critical SEO elements (title, H1, canonical, meta description, structured data). If content is injected by JavaScript, move it to server-side rendering so crawlers see it immediately.",
"verification": [
"Recheck these recorded examples: https://example.com/pricing. Method: compare the raw HTML with the rendered DOM. Previously observed: H1 present only after rendering",
"Expected after the change: the same critical elements in both. Obtain a fresh capture and compare the same check and URLs; a changed sample alone does not verify a fix."
],
"evidence": ["Raw HTML and rendered DOM were compared for critical elements."],
"pages": ["https://example.com/pricing"]
}
]
}الأخطاء والحدود
كل رفض أدناه يذكر رمزه. عند التعامل مع هذه الرموز لا يعيد البرنامج النصي المحاولة عشوائيًا.
| 402 | PAYMENT_REQUIRED | لا توجد خطة مدفوعة وراء الطلب: المفتاح مفقود أو غير صالح أو أُلغي، أو لا توجد خطة نشطة في الحساب. عند غياب المفتاح تكون الاستجابة 402 وليس 401. |
| 402 | REPORT_CREDITS_EXHAUSTED | نفدت أرصدة المواقع الجديدة لهذا الشهر. لا تزال إعادة تشغيل موقع لديك تقرير عنه ممكنة، وتتجدد الأرصدة في اليوم الأول من كل شهر (UTC). |
| 429 | FRESH_RUN_LIMIT | أكثر من 30 تشغيلًا جديدًا (forceRerun) خلال ساعة واحدة للحساب نفسه. انتظر المدة المذكورة في ترويسة Retry-After. |
| 200 | status: failed | dead_lettered | تعذّر إكمال التقرير. يعيد GET /api/v1/reports/:id الحقول error.code وerror.message وerror.retryable عندما يكون السبب مسجّلًا؛ أعد المحاولة فقط إذا كانت retryable تساوي true. |
| 200 | pollAfterMs | المدة التي تنتظرها قبل الاستعلام عن الحالة مرة أخرى؛ وتكون 0 عند اكتمال التقرير. |
أدلة الإعداد ووصفات الاستخدام
صفحات خطوة بخطوة لربط وكيل ذكاء اصطناعي عبر MCP، واستدعاء الواجهة البرمجية من الكود، والمقارنة بين واجهات SEO البرمجية. باللغة الإنجليزية.
ربط وكيل ذكاء اصطناعي (MCP)
- Connect SEOReport to Claude Code: MCP setup for SEO audits
- Connect SEOReport to Cursor: MCP setup for SEO audits
- Connect SEOReport to VS Code: MCP setup for GitHub Copilot
- Connect SEOReport to Windsurf (Devin Desktop): MCP setup
- Connect SEOReport to OpenAI Codex CLI: MCP setup for SEO audits
- Connect SEOReport to Gemini CLI: MCP setup for SEO audits
- Connect SEOReport to Claude Desktop: MCP setup for SEO audits
استدعاء الواجهة البرمجية من الكود
API لمراقبة SEO
يتم إعادة تدقيق النطاق المسجل للمراقبة كل أسبوع. عندما يتغير شيء ما، يتلقى عنوان التنبيه بريدًا إلكترونيًا: اكتشاف حرج أو عالي الخطورة جديد، اكتشاف حرج تم حله، أو انتقال إلى نطاق درجة مختلف. لا يرسل أي شيء إذا لم يحدث تغيير خلال أسبوع.
/api/v1/monitorsيبدأ المراقبة الأسبوعية لنطاق؛ "enabled": false يوقفها.
/api/v1/monitorsيعرض النطاقات التي يراقبها هذا الحساب.
/api/v1/monitors?url=يوقف مراقبة نطاق ويحذف نتائجه المخزنة.
# Uses the auth() helper from the quickstart above.
# Re-audit a domain every week and email [email protected] when it changes
curl -X PUT https://seoreport.dev/api/v1/monitors \
-H @<(auth) \
-H "Content-Type: application/json" \
-d '{"url": "example.com", "alertEmail": "[email protected]"}'
# List monitored domains
curl https://seoreport.dev/api/v1/monitors \
-H @<(auth)
# Stop monitoring (pass the host the list returns)
curl -X DELETE "https://seoreport.dev/api/v1/monitors?url=example.com" \
-H @<(auth)يتضمن المراقبة مع الخطط المدفوعة ولا ينفق أرصدة التقرير.
العميل الرسمي TypeScript
عميل مكتوب للـ REST API. احصل على المصادقة باستخدام مفتاح API الخاص بخطتك، ثم أنشئ واستعلم وأصدر تقارير من TypeScript.
سطر الأوامر
شغِّل تقارير من طرفك باستخدام مفتاح API. تثبيت عالمي واحد.
npm install -g @seoreport/clientخادم MCP — نفس الواجهة، نفس المفتاح
وجّه أي عميل يدعم MCP إلى https://seoreport.dev/mcp وصادِق باستخدام نفس مفتاح API من نوع Bearer الذي تستخدمه مع REST. تُعرض أدوات التقارير والحساب عند الاتصال، فيستطيع الوكيل تشغيل التدقيق وقراءة النتائج دون أي شيفرة وسيطة.
{
"mcpServers": {
"seoreport": {
"url": "https://seoreport.dev/mcp",
"headers": {
"Authorization": "Bearer sr__live_your_api_key"
}
}
}
}seoreport_create_reportابدأ تقريراً لرابط معيّن واحصل على معرّف المهمة.
seoreport_get_report_statusاستعلم عن المهمة حتى يصبح التقرير جاهزاً.
seoreport_get_reportاقرأ التقرير المكتمل بدرجته ونتائجه.
seoreport_list_reportsاعرض قائمة تقارير الحساب.
seoreport_get_report_downloadاحصل على رابط تنزيل بصيغة JSON أو Markdown أو نص أو PDF.
seoreport_get_accountتحقق من خطة الحساب والرصيد المتبقي وتاريخ التجديد.
يعيد الدفع رابطاً يُفتح في المتصفح بدلاً من الخصم المباشر: يمكن للوكيل بدؤه، ولا يدفع إلا شخص. أما إلغاء الخطة وإدارة مفاتيح API وحذف الحساب فتبقى في لوحة التحكم.
جاهز للبناء?
اختر خطة، أنشئ مفتاح API، وابدأ دمج تقارير SEO في منتجك.