مستندات توسعه دهندگان

فهرست موردهای جذب لینک

GET/sites/{siteId}/outreach
Scope
search:read
ابزار MCP
list_outreach_targets

Outreach targets, ranked, with why Pages and sites worth asking for a link or a mention: open ones by score, then contacted, added, declined; targets the source no longer lists last, when included. Spam-flagged, script-made and gone targets are left out unless include names them; counts and totals leave out what is hidden. MonoRanks says who and why; it does not send email or look up contacts.

توضیح ها از سند OpenAPI می آیند و انگلیسی اند.

پارامترها

ناممحلتوضیح
siteIdاجباریpathstringWebsite id, from GET /sites.
statusqueryto_contactcontactedaddeddeclinedOnly this status.
sourcequeryai_sourcebest_listlink_gaplost_linkmanualOnly this source.
tagquerystringat most 40 characters, pattern ^[a-z0-9]+(-[a-z0-9]+)*$Only targets with this tag (one label).
spamquery1trueInclude targets with a spam score above 60 (same as include=spam).
includequerystringHidden groups to list too, comma separated: spam, auto (pages a script made, link gap domains with no linking page, and AI-source pages nobody can be asked about: example addresses, competitors' own pages, home or product pages of much larger sites), gone (no longer listed by the source).
pagequeryintegerdefault 1, min 1Page number, from 1.
perqueryintegerdefault 50, min 1, max 200Rows per page, 1 to 200.

پاسخ

200 · application/json

فیلدتوضیح
filtersobject · required; The filters applied
filters.statusto_contact | contacted | added | declined | · required; Status filter
filters.sourceai_source | best_list | link_gap | lost_link | manual | · required; Source filter
filters.tagstring or null · required; Tag filter
filters.spamtrue or false · required; Spam-flagged targets included
filters.includelist of spam | auto | gone · required; Hidden groups included
countsobject · required; Counts
counts.allinteger · required; Targets shown, all statuses
counts.statusobject · required; Targets per status
counts.status.to_contactinteger · required; Targets to_contact
counts.status.contactedinteger · required; Targets contacted
counts.status.addedinteger · required; Targets added
counts.status.declinedinteger · required; Targets declined
counts.sourceobject · required; Targets per source
counts.source.ai_sourceinteger · required; Targets from ai_source
counts.source.best_listinteger · required; Targets from best_list
counts.source.link_gapinteger · required; Targets from link_gap
counts.source.lost_linkinteger · required; Targets from lost_link
counts.source.manualinteger · required; Targets from manual
counts.spamHiddeninteger · required; Spam-flagged targets left out (platform pages included)
counts.platformHiddeninteger · required; Platform pages of much larger sites left out
counts.autoHiddeninteger · required; Script-made pages and link gap domains without a page left out
counts.goneHiddeninteger · required; Targets the source no longer lists, left out
totalinteger · required; Rows that match, over all pages
pageinteger · required; This page, from 1
perinteger · required; Rows per page
hasMoretrue or false · required; More rows after this page
targetslist of values · required
targets[].idstring
targets[].sourcestring
targets[].urlstring
targets[].domainstring
targets[].titlestring
targets[].scorenumber
targets[].classstring
targets[].reasonobject
targets[].reason.competitorslist of strings
targets[].reason.domainRanknumber
targets[].reason.ourRanknumber
targets[].reason.spamScorenumber
targets[].reason.outOfnumber
targets[].reason.backlinksnumber
targets[].reason.pageslist of objects
targets[].reason.pages[].competitorstring
targets[].reason.pages[].urlstring
targets[].reason.pages[].anchorstring
targets[].reason.pages[].titlestring
targets[].reason.pageKindstring
targets[].reason.pageKindBystring
targets[].statusstring
targets[].statusAtstring
targets[].statusAutotrue or false
targets[].notestring
targets[].tagslist of strings
targets[].firstSeenstring
targets[].lastSeenstring
targets[].gonetrue or false
targets[].checkobject
targets[].check.atstring
targets[].check.oktrue or false
targets[].check.statusnumber
targets[].check.linksUstrue or false
targets[].check.mentionsUstrue or false
targets[].check.matchedlist of strings
targets[].linkstring
notestring · required; How to read the fields
linkaddress (URL) · required; The Outreach screen in the app

نکته ها

GET /sites/{siteId}/outreach صفحه ها و سایت هایی را لیست می کند که ارزش دارد از آن ها لینک یا منشن بخواهید، به ترتیب: اول موردهای باز بر اساس score (از 0 تا 100)، بعد پیام داده شده ها، اضافه شده ها و ردشده ها. موردهایی که منبعشان دیگر پیدایشان نمی کند (gone) آخر می آیند. MonoRanks ایمیل نمی فرستد و دنبال اطلاعات تماس هم نمی گردد: موردها را لیست می کند، شما سراغشان می روید و نتیجه را ثبت می کنید.

مورد توضیح
source ai_source (پاسخ های هوش مصنوعی به سؤال های شما به صفحه ارجاع می دهند ولی اسم شما را نمی آورند)، best_list (فهرست «بهترین X» که اسم رقبای شما را آورده ولی شما را نه)، link_gap (سایتی که به دو رقیب یا بیشتر لینک داده ولی به شما نه)، lost_link (سایت قوی ای که لینکش به شما را برداشته و راه حل این است که از آن ها بخواهید لینک را به روز کنند) یا manual (دستی اضافه شده).
reason دلیل را می گوید، با فیلدهایی که منبعش می داند: مثلاً questions، models و timesCited؛ keyword و position؛ competitors، domainRank، spamScore و outOf؛ یا lostAt.
status to_contact، contacted، added یا declined. با status و source فیلتر کنید. counts جمع هر وضعیت و هر منبع را دارد.
اسپم موردهایی که امتیاز اسپمشان بالای 60 است کنار گذاشته می شوند، مگر اینکه spam=1 بفرستید؛ counts.spamHidden می گوید چندتا کنار رفته اند.
نوشتن POST /sites/{siteId}/outreach/{targetId} مقدار status و/یا note را می گیرد (حداکثر 2,000 کاراکتر؛ یادداشت خالی آن را پاک می کند). تغییر به نام صاحب کلید در Activity سایت ثبت می شود. وقتی منبع، مورد را به روز می کند، وضعیت و یادداشت سر جایشان می مانند.
اضافه شدن خودکار MonoRanks هفته ای یک بار هر صفحه باز را دوباره و رایگان می خواند. اگر صفحه حالا به سایت لینک بدهد یا اسمش را بیاورد، مورد added می شود و statusAuto برابر true است.

خطاها

کدمعنی
400Bad request. Codes: bad_status, bad_source, bad_include, bad_tag, bad_page, bad_per.
401Missing, unknown or revoked key. Codes: missing_key, invalid_key.
403The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden.
404Not found. Codes: not_found.
429Too many requests this hour for this key. Codes: rate_limited.

نمونه درخواست

curl \
  -H "Authorization: Bearer mr_ws_…" \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/outreach"

نمونه پاسخ

{
  "filters": {
    "status": null,
    "source": null,
    "tag": null,
    "spam": false,
    "include": []
  },
  "counts": {
    "all": 64,
    "status": {
      "to_contact": 51,
      "contacted": 8,
      "added": 3,
      "declined": 2
    },
    "source": {
      "ai_source": 12,
      "best_list": 9,
      "link_gap": 38,
      "lost_link": 4,
      "manual": 1
    },
    "spamHidden": 5,
    "platformHidden": 2,
    "autoHidden": 11,
    "goneHidden": 3
  },
  "total": 64,
  "page": 1,
  "per": 50,
  "hasMore": true,
  "targets": [
    {
      "id": "0b2d4f6a-8c0e-4a2c-9e4a-8c0e2a4c6e8a",
      "source": "link_gap",
      "url": "https://rideguide.example/best-bike-shops/",
      "domain": "rideguide.example",
      "title": "The best online bike shops",
      "score": 82,
      "class": "editorial",
      "reason": {
        "competitors": [
          "bikeworld.example",
          "cyclehub.example"
        ],
        "domainRank": 47,
        "ourRank": 33,
        "spamScore": 4,
        "outOf": 2,
        "backlinks": 5,
        "pages": [
          {
            "competitor": "bikeworld.example",
            "url": "https://rideguide.example/best-bike-shops/",
            "anchor": "Bike World",
            "title": "The best online bike shops"
          }
        ],
        "pageKind": "review",
        "pageKindBy": "ai"
      },
      "status": "contacted",
      "statusAt": "2026-10-02T09:30:00.000Z",
      "statusAuto": false,
      "note": "Emailed the editor on Oct 2.",
      "tags": [
        "gear-review"
      ],
      "firstSeen": "2026-09-14T03:00:00.000Z",
      "lastSeen": "2026-10-05T03:00:00.000Z",
      "gone": false,
      "check": {
        "at": "2026-10-05T03:10:00.000Z",
        "ok": true,
        "status": 200,
        "linksUs": false,
        "mentionsUs": false,
        "matched": []
      },
      "link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/outreach?open=0b2d4f6a-8c0e-4a2c-9e4a-8c0e2a4c6e8a"
    }
  ],
  "note": "Pages and sites worth asking for a link or a mention, with why (reason) and a score (0–100, higher first).",
  "link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/outreach"
}

سرور MCP همین کار را با ابزار list_outreach_targets انجام می دهد.