Trova ed elimina le schede duplicate
Elenca le schede duplicate rilevate per sede e account, conferma quelle da rimuovere, scarta i falsi positivi e seguile fino alla risoluzione.
Un duplicato è una seconda voce per la stessa attività nella stessa directory. Distribuisce le recensioni e i segnali di posizionamento tra più voci e confonde i clienti. Il rilevamento avviene automaticamente. Esamina ciò che ha trovato, conferma i duplicati effettivi e scarta le voci legittime.
Ogni duplicato ha uno stato che indica a che punto si trova nel processo di pulizia:
1. Elenca i duplicati di una sede
GET /locations/{locationId}/listings/duplicates restituisce un semplice array di gruppi di siti. Ogni gruppo rappresenta una directory con un array listings di sospetti duplicati, e ogni voce ha un listingItemId, un liveLink che puoi aprire per valutarla e un status.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/duplicates \-H "Authorization: API $LISTINGSAPI_KEY"{ "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" } ] } ] }}Un array vuoto significa che non è stato rilevato nulla. Conserva listingItemId: è il valore accettato da entrambi gli endpoint di contrassegno. Il Node SDK appiattisce i gruppi in un array per duplicato, quindi in quel caso d.id è il valore da passare.
2. Riepiloga i duplicati dell'intero account
GET /locations/listings/duplicates offre una vista dell'intero account. È una pagina con paginazione basata su offset: riceve page e perPage e restituisce records[] insieme a pageInfo.totalRecords e pageInfo.totalPages. Il valore predefinito di status è POTENTIAL e quello di tag è all, quindi una chiamata senza parametri restituisce tutti i duplicati aperti visibili alla chiave. Aggiungi siteId (un id plan-sites) per limitare i risultati a una sola directory.
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=POTENTIAL&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"{ "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" } ] } }}Il riepilogo indica dove si trovano i duplicati; duplicateProcessingState è lo stesso stato del ciclo di vita descritto sopra. Per intervenire su un duplicato, passa il suo locationId all'endpoint per singola sede del passaggio 1 e leggi il valore listingItemId restituito. Scorri le pagine una alla volta; un ciclo senza pause è il modo più rapido per ottenere un 429.
3. Conferma un duplicato per farlo rimuovere
Quando chi esamina una voce conferma che è un duplicato, chiama POST /locations/listings/mark-as-duplicate inserendo i valori listingItemId sotto input. Raggruppa tutti gli id confermati per una sede in un'unica chiamata. locationId è facoltativo e limita la richiesta a quella sede.
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="] }}'{ "data": { "markAsDuplicate": { "success": true, "errors": null } }}success: true significa che gli elementi sono stati accettati e sono passati allo stato PROCESSING. Un 200 con success: false, oppure un 400, include un array errors le cui voci contengono code e message; la causa più comune è un id sconosciuto o non valido. In quel caso, gli SDK sollevano ValidationError.
4. Scarta un falso positivo
Il rilevamento è prudenziale. Un'altra sede dello stesso franchising, un secondo profilo legittimo o una sede rinominata possono tutti sembrare duplicati. POST /locations/listings/mark-as-not-duplicate accetta lo stesso corpo della richiesta e rimuove definitivamente la voce da entrambi gli elenchi. È anche il modo per annullare un'azione eseguita per errore al passaggio 3.
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="] }}'La risposta è data.markAsNotDuplicate con gli stessi campi success e errors del passaggio 3.
5. Monitora l'avanzamento
Consulta di nuovo il riepilogo con status=PROCESSING per vedere quali duplicati sono ancora in gestione presso le piattaforme di pubblicazione e con status=FIXED per confermare quali sono stati rimossi. Nessuno dei due SDK espone ancora il filtro status, quindi chiama direttamente l'endpoint con la stessa intestazione Authorization.
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"Richiedendo perPage=1 e leggendo pageInfo.totalRecords ottieni il conteggio per ciascuno stato in quattro chiamate. Un record FAILED il cui liveLink è ancora raggiungibile richiede una verifica manuale; un record FAILED il cui link non funziona più è stato risolto autonomamente dalla piattaforma di pubblicazione e può essere scartato con il passaggio 4.
Passaggi successivi
- Controlla lo stato delle schede e i link pubblici: la scheda principale per ogni directory, con cui compete un duplicato.
- Trova e correggi gli errori delle schede: l'altro passaggio di pulizia.
- Riferimenti: Ottieni le schede duplicate di una sede, Ottieni tutte le schede duplicate di un account, Contrassegna una scheda come duplicata, Contrassegna una scheda come non duplicata.