في أي كلمات مفتاحية ترتيبك بين 11 و30؟ اطّلع على نطاق cusp مجانًا

للمطوّرين

كل ما نقيسه
يمكن قراءته.

المفتاح نفسه يفتح واجهة REST ونقطة MCP معًا؛ وكلتاهما للقراءة فقط وتأتيان مع باقة Studio. بياناتك ليست محبوسة في شاشتنا - فهي تصل إلى نصك البرمجي أو لوحتك أو مساعدك بالصورة نفسها.

  • انقلها إلى لوحتك أنت

    اسحب سجل الترتيب إلى لوحة داخلية أو جدول أو تقرير أسبوعي. البيانات بياناتك، وليست ملزَمة بالبقاء على شاشتنا.

  • فحص قبل الإصدار

    قبل إرسال البيانات الوصفية الجديدة، دع نصك يقرأ النطاق الحدّي: في أي مركز أنت على الكلمة التي أزلتها للتو من العنوان الفرعي، وهل يمكن التضحية بها فعلًا؟

  • اسأل مساعدك

    مع توصيل نقطة MCP يأتي جواب سؤال «أي كلماتي في النطاق الحدّي وأيها الأكثر شيوعًا؟» دون لقطة شاشة واحدة.

ابدأ بسطر واحد

ثلاثة مداخل ومفتاح واحد. اختر ما ينطبق عليك: مساعد يتحدث MCP، أو طرفية، أو نص برمجي.

claude-code
claude mcp add --transport http rankcusp \
  https://rankcusp.com/api/mcp \
  --header "Authorization: Bearer rc_live_…" \
  --header "Accept-Language: tr"

هذا كل الإعداد. والترويسة الثانية هي ما يجعل الأحكام تعود بلغتك؛ فإن حذفتها جاءت بالإنجليزية. اسأل «أي كلماتي في النطاق الحدّي؟» وسيستدعي المساعد الأدوات أدناه من تلقاء نفسه.

المفتاح

أنشئه من شاشة الحساب. يُعرض المفتاح مرة واحدة فقط - فنحن لا نحفظ سوى بصمته، ولذلك لا يمكن استرجاعه إن ضاع؛ تلغيه وتأخذ غيره.

ما يستطيع المساعد فعله

تسع أدوات. ثمانٍ منها تقرأ فقط؛ والأخيرة تضيف كلمات، وتعلن ذلك للعميل قبل أن تُستدعى. يصل إليها المساعد فور اتصاله، وهي نفسها ما تستدعيه الأداة في الخلفية.

list_apps
تطبيقات الحساب ومنافسوها. ومن هنا يأتي appId الذي تطلبه بقية الأدوات.
cusp_actions
النطاق 11-30 مرتبًا حسب الشيوع: القائمة القصيرة للكلمات التي يستحق إنفاق الأحرف عليها.
get_keyword
كلمة واحدة - الترتيب والشيوع والصعوبة - مع الحكم مكتوبًا بلغتك: هل تستحق الاستهداف، وعلى أي أساس.
ranking_keywords
الكلمات التي يحتلّ التطبيق ترتيبًا فيها فعلًا، من السجل المشترك لكل بحث أجراه هذا المنتج. وجّهها إلى منافس لتقرأ كلماته: لا تنشر آبل نقطة لهذا، فالجواب واسع بقدر ما رُصد فقط.
keyword_competitors
من غيرك يحتل ترتيبًا في هذه العبارة، أعمق من العشرة التي تعرضها الصفحة الأولى. التطبيق في المركز 40 حيث تقف أنت في 60 هو الجدير بالدراسة.
audit_metadata
يقرأ مسودة العنوان والعنوان الفرعي وحقل الكلمات قبل النشر، ويقول ما الذي يتكرر وما الذي يضيع وكم حرفًا تسترجع.
country_priorities
أي متجر يستحق الساعة القادمة: عدد الكلمات الحدّية في كل بلد، وأين يكون المنافسون أضعف.
list_keywords
كل الكلمات المتابَعة في بلد واحد، مع ترتيبها الحالي والسابق.
add_keywords
الوحيدة التي تكتب. تضيف كلمات إلى قائمة متابعة تطبيق في متجر واحد، من قائمة أو من سطر ملصوق. تصل بلا تقييم - فالتقييم يكلّف طلبات إلى آبل وينتظر دور المجمّع - ولذلك فالشيوع الفارغ هنا ليس صفرًا.

أداة سطر الأوامر

أمر `curl` واحد ومفتاح. تطبع جداول مصمّمة للقراءة في الطرفية - والقيمة غير المقيسة تبقى شَرطة هناك أيضًا، فلا يُختلق صفر في أي موضع.

terminal
$ rankcusp cusp 1544… --country us
KEYWORD          RANK   Δ  POP  DIFF  CUSP
───────────────  ────  ──  ───  ────  ────
habit tracker      14  +5   32    41  •   
streak tracking    23   -    -    38  •   
rankcusp
يفتح الجلسة: بماذا أنت متصل، وما الذي يمكنك سؤاله، وسطر أوامر.
rankcusp apps
تطبيقات الحساب ومنافسوها.
rankcusp keywords <appId> --country <cc>
كل الكلمات المتابَعة في متجر واحد.
rankcusp cusp <appId> --country <cc>
النطاق الحدّي لتطبيق واحد، مرتبًا حسب الشيوع.
rankcusp keyword <appId> <phrase> --country <cc>
كلمة واحدة مع حكمها.
rankcusp audit --country <cc> --title … --keywords …
يفحص مسودة البيانات الوصفية قبل نشرها.
rankcusp countries <appId>
أي متجر تعمل عليه تاليًا.
rankcusp tools
يسرد الأدوات - هكذا يهتدي المساعد إلى طريقه.

النقاط

GET/api/v1/apps
تطبيقات الحساب ومنافسوه. ومن هنا يأتي appId الذي تطلبه بقية النداءات.
GET/api/v1/keywords?app=…&country=…
الكلمات المتابَعة: الترتيب، والترتيب السابق، والشيوع، والصعوبة، وهل هي في النطاق الحدّي.
GET/api/v1/keywords?app=…&country=…&cusp=1
النطاق 11-30 فقط - أكثر الكلمات عائدًا على تعديل واحد في البيانات الوصفية.
GET/api/v1/keywords?app=…&country=…&keyword=…
كلمة واحدة: صفحتها الأولى والحكم - هل تُستهدف، وبأي مبرّر.
POST/api/mcp
‏نقطة MCP (‏JSON-RPC 2.0). ومنها تمر الأدوات التسع أعلاه.

كيف يبدو الرد؟

المثال أدناه يبيّن شكل نداء يطلب النطاق الحدّي. انظر إلى السطر الثاني: previousRank وpopularity قيمتهما null. أي أن الكلمة قيست لأول مرة ولم يتيسّر بعد قراءة شيوعها - لا أنه صفر.

json
{
  "total": 2,
  "maxPageSize": 200,
  "keywords": [
    {
      "keyword": "habit tracker",
      "country": "us",
      "rank": 14,
      "previousRank": 19,
      "delta": 5,
      "popularity": 32,
      "difficulty": 41,
      "cusp": true,
      "lastMeasuredAt": "2026-08-12T04:12:09.114Z"
    },
    {
      "keyword": "streak tracking",
      "country": "us",
      "rank": 23,
      "previousRank": null,
      "delta": null,
      "popularity": null,
      "difficulty": 38,
      "cusp": true,
      "lastMeasuredAt": "2026-08-12T04:12:11.902Z"
    }
  ]
}

ما ينبغي أن تعرفه

  • القيمة غير المقيسة تعود `null` ولا تعود صفرًا أبدًا. rank: null تعني «خارج أول 200»، وpopularity: null تعني «لم يُقَس بعد». والعميل الذي يستبدلها بالأصفار سينتهي به الأمر إلى حساب متوسطها.
  • تعود الأحكام بلغتك أنت. تقرأ نقطة MCP لغة العميل، وتأخذ الأداة RANKCUSP_LANG=ar. أما الأرقام فهي نفسها في كل اللغات.
  • ‏120 طلبًا في الدقيقة. وإذا تجاوزتها فستحصل على 429 وretry-after.
  • ‏200 سطر في الصفحة على الأكثر؛ تقدّم باستخدام offset.
  • أداة واحدة فقط تكتب. تضيف add_keywords إلى قائمة المتابعة وتعلن عن نفسها ككاتبة، فيستطيع العميل أن يسأل قبل استدعائها. وكل ما عداها، وكل مسارات REST، تقرأ فقط.
  • country مطلوب في كل نداء: العبارة نفسها في متجرين بحثان مختلفان، وبالتالي سطران مختلفان.
  • المفتاح يمثّل حسابًا لا شخصًا. وتوليد مفاتيح منفصلة بدل مشاركة واحد يتيح إلغاء أحدها دون تعطيل الآخر.

الكلمات التي ترتيبك فيها بين 11 و30 هي الموضع الذي تكلّفك فيه الصفحة الأولى أقل جهد. هل تريد أن ترى أيّها؟