找出並移除重複的商家資訊

列出個別地點及整個帳戶中偵測到的重複商家資訊,確認真正重複的項目以進行移除,清除誤判項目,並追蹤每個項目直到修正完成。

重複項目是指同一商家在同一目錄中的另一筆商家資訊。它會分散評論和排名訊號,並讓顧客感到困惑。系統會自動執行偵測。您需要檢查偵測結果,確認真正重複的項目,並排除合法的項目。

每個重複項目都有狀態,讓您了解其清理進度:

狀態意義您應採取的行動
POTENTIAL已偵測到,尚未有人處理。檢查項目(步驟 3 和 4)。
PROCESSING您已確認此項目;發布平台正在處理移除作業。請等待。稍後重新讀取(步驟 5)。
FIXED發布平台已移除或合併此項目。完成。
FAILED移除作業未成功。檢查實際頁面的連結;如果頁面仍存在,請向支援團隊反映。

1. 列出單一地點的重複項目

GET /locations/{locationId}/listings/duplicates 會直接傳回網站群組的陣列。每個群組代表一個目錄,其中包含疑似重複項目的 listings 陣列,而每個項目都有 listingItemId、可開啟以判斷是否重複的 liveLink,以及 status。

Duplicates for a location
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/duplicates \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "duplicateListingsForLocation": [      {        "id": "U2l0ZToxNTA=",        "name": "City Squares",        "url": "citysquares.com",        "listings": [          {            "id": "RHVwbGljYXRlOjIzNTk4NDUw",            "listingItemId": "TGlzdGluZ0l0ZW06MjM1OTg0NTA=",            "name": "Woodbury Train Station",            "liveLink": "http://citysquares.com/b/woodbury-train-station-23598450",            "status": "POTENTIAL"          }        ]      }    ]  }}

空陣列表示未偵測到任何項目。請保留 listingItemId:這是兩個標記端點都接受的值。Node SDK 會將群組攤平成單一陣列,每個重複項目各占一筆,因此其中的 d.id 就是後續要傳入的值。

2. 彙整整個帳戶的重複項目

GET /locations/listings/duplicates 提供整個帳戶的檢視。它採用位移分頁:傳入 page 和 perPage,傳回 records[],以及 pageInfo.totalRecords 和 pageInfo.totalPages。status 預設為 POTENTIAL,tag 預設為 all,因此不帶參數的呼叫會傳回該金鑰可存取的所有未結案重複項目。加入 siteId(plan-sites id)即可將範圍縮小至單一目錄。

Account rollup
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=POTENTIAL&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "duplicateListingsRollup": {      "pageInfo": { "hasNextPage": true, "totalPages": 34, "totalRecords": 1673 },      "records": [        {          "id": "3329229",          "name": "Woodbury Train Station",          "duplicateProcessingState": "POTENTIAL",          "liveLink": "http://citysquares.com/b/woodbury-train-station-23598450",          "locationId": "73451",          "siteName": "City Squares",          "siteUrl": "citysquares.com"        }      ]    }  }}

彙整結果會告訴您重複項目在哪裡;duplicateProcessingState 與上述生命週期狀態相同。若要處理某個項目,請將其 locationId 傳入步驟 1 的個別地點端點,並讀取該端點傳回的 listingItemId。請逐頁讀取;密集迴圈最容易觸發 429。

3. 確認重複項目以進行移除

審核人員確認某個項目確實重複後,請呼叫 POST /locations/listings/mark-as-duplicate,並將 listingItemId 值放在 input 下。請將同一地點所有已確認的 id 合併在一次呼叫中批次處理。locationId 為選填,可將請求範圍限定在該地點。

Mark as duplicate
curl -X POST https://listingsapi.com/api/v4/locations/listings/mark-as-duplicate \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]  }}'
JSON
{  "data": {    "markAsDuplicate": {      "success": true,      "errors": null    }  }}

success: true 表示項目已被接受,並已轉為 PROCESSING。帶有 success: false 的 200,或 400,都會附帶 errors 陣列,其中每個項目都包含 code 和 message;常見原因是 id 不明或格式錯誤。在這種情況下,SDK 會拋出 ValidationError。

4. 清除誤判項目

偵測採取保守策略。同一加盟體系的其他分店、另一個合法的商家檔案,或已更名的地點,都可能看起來像重複項目。POST /locations/listings/mark-as-not-duplicate 接受完全相同的請求主體,並將該項目從兩份清單中永久移除。這也是撤銷步驟 3 誤操作的方式。

Mark as not duplicate
curl -X POST https://listingsapi.com/api/v4/locations/listings/mark-as-not-duplicate \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]  }}'

回應為 data.markAsNotDuplicate,並包含與步驟 3 相同的 success 和 errors 欄位。

5. 追蹤進度

使用 status=PROCESSING 重新讀取彙整結果,查看哪些項目仍由發布平台處理,再使用 status=FIXED 確認哪些項目已移除。兩個 SDK 目前都尚未提供 status 篩選條件,因此請使用相同的 Authorization 標頭直接呼叫端點。

Progress
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=PROCESSING&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY" curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=FIXED&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"

請求 perPage=1 並讀取 pageInfo.totalRecords,即可透過四次呼叫取得各個狀態的項目數。若 FAILED 記錄的 liveLink 仍可連至頁面,就需要人工檢查;若 FAILED 記錄的連結已失效,則表示發布平台已自行修正,可依步驟 4 排除該項目。

後續步驟