

# Como manter registros comparáveis de posições de palavras-chave no Bing

Salve cada posição no Bing com a mesma consulta, país, idioma, configurações, limite de resultados e horário de observação. Uma posição é o número que indica o lugar do resultado na amostra coletada. Um número menor significa que o resultado apareceu antes. O limite de resultados é a quantidade máxima de resultados mantidos para uma consulta. Compare apenas registros que coincidam em todos esses aspectos. Um registro é uma execução salva. Se sua página não aparecer em uma amostra com limite de resultados, registre que ela não foi vista nessa amostra. Não invente uma posição. Não diga que a página está ausente de todo o Bing.

## O que você está salvando

Um Actor é um programa hospedado que coleta dados. Este método usa o Actor [Google Search Scraper](https://apify.com/chronometrica/google-search-scraper), build 1.0.15. Uma Task é uma configuração de entrada salva. A Task atual [Keyword Search Rank Snapshot](https://apify.com/chronometrica/google-search-scraper/examples/keyword-rank-snapshot) é apenas uma entrada inicial. Ela não analisa posições por conta própria.

O Actor salva linhas da fonte. Você compara essas linhas com as etapas abaixo.

O build 1.0.15 aceita Google, Bing, Brave e DuckDuckGo na lista engines. Este método aceita apenas o Bing. Mantenha Google, Brave e DuckDuckGo fora desta tabela de posições. Um fluxo do Google mantido em espera retornou endereços de redirecionamento que ocultam o site final. Esses endereços não são aceitos como URLs de destino.

A tabela de posições reúne seus registros de execução. Esta tabela não corresponde à posição média do Google Search Console. Ela não representa a posição que cada pessoa vê.

## Configure a entrada do Bing

A Task atual [Keyword Search Rank Snapshot](https://apify.com/chronometrica/google-search-scraper/examples/keyword-rank-snapshot) salva esta entrada:

```json
{
  "queries": ["best CRM", "small business accounting software", "AI marketing tools"],
  "engines": ["google", "bing", "brave", "duckduckgo"],
  "maxResultsPerExecutedQuery": 20,
  "country": "US",
  "language": "en",
  "safeSearch": true,
  "includeSponsoredResults": false
}
```

Configure a entrada do Bing

Substitua toda a lista queries. Substitua toda a lista engines. Para a primeira verificação, use uma consulta que você pretende acompanhar. Defina engines como ["bing"]. Defina maxResultsPerExecutedQuery como 2. Defina country e language com a combinação que você vai repetir. Mantenha safeSearch como true. Mantenha includeSponsoredResults como false.

Esta entrada não tem configuração de expansão. Ela não tem um campo público para limitar páginas. O limite de resultados é maxResultsPerExecutedQuery. Não adicione um campo de limite de páginas.

Solicitar um país não elimina a personalização. Personalização significa que o Bing ainda pode mostrar resultados diferentes para pessoas diferentes. O país não garante que o resultado corresponda ao de todos os usuários locais.

Use esta estrutura para a primeira verificação. Coloque sua expressão real em queries:

```json
{
  "queries": ["one intended phrase"],
  "engines": ["bing"],
  "maxResultsPerExecutedQuery": 2,
  "country": "US",
  "language": "en",
  "safeSearch": true,
  "includeSponsoredResults": false
}
```

Configure a entrada do Bing

Altere country e language apenas quando a nova combinação for a que você vai manter. Registre os mesmos valores em todos os registros posteriores.

Fixe estas escolhas antes da primeira comparação:

- o texto exato da consulta
- country
- language
- safeSearch
- includeSponsoredResults
- maxResultsPerExecutedQuery

Uma alteração posterior no limite pode mudar a ordem aparente. Uma alteração posterior na forma de ler os resultados também pode fazer isso. Mantenha um escopo de coleta semelhante ao comparar.

## Leia cada linha de resultado

Uma linha corresponde a um resultado observado para um mecanismo de busca, uma consulta, uma página de resultados e uma posição. O Actor pode manter muitas consultas em uma execução. Ele não as agrupa em uma única linha por site. Neste método, a execução deve conter uma consulta no Bing.

Estes são os campos exatos das linhas do Actor [Google Search Scraper](https://apify.com/chronometrica/google-search-scraper):

- runId
- country
- language
- safeSearch
- engine
- executedQuery
- page
- rankOnPage
- rank
- title
- canonicalUrl
- resultDomain
- snippet
- isSponsored
- advertiserDomain
- observedAt
- schemaVersion

rank é a posição na amostra coletada naquela execução específica. rankOnPage é a posição naquela página de resultados. page é o número da página de resultados.

canonicalUrl é a sequência de caracteres do endereço que o Actor armazenou após limpar o link. É um endereço candidato. Não é um link HTML rel=canonical verificado. Não é uma cópia perfeita do href original. Mantenha a sequência de caracteres retornada sem alterações. Essa sequência é sua evidência da fonte.

snippet é um texto do resultado da busca. Não é o texto do artigo no site de destino. Ele não comprova uma afirmação feita nesse site.

isSponsored informa se a linha é um resultado pago. Um resultado orgânico é um resultado não pago. Mantenha as linhas pagas e não pagas separadas. Com includeSponsoredResults definido como false, não trate uma linha patrocinada como a posição orgânica.

advertiserDomain pode aparecer em uma linha patrocinada. Ele não é uma segunda posição orgânica.

country, language e safeSearch na linha representam o contexto solicitado. Eles não são uma garantia sobre todos os resultados personalizados.

O Actor não abre o site de destino. Ele não remove todo o texto extra da página. Ele não verifica citações. Ele não atribui pontuações a vendas. Ele não agenda a próxima execução. Se você precisar verificar o destino, faça essa verificação por conta própria.

## Leia o resumo da execução

OUTPUT é o resumo da execução. Ele é separado de cada linha de resultado. Leia os dois. OUTPUT usa estes campos:

- queriesRequested
- searchesCompiled
- executionsPlanned
- enginesSuccessful
- enginesFailed
- pagesAttempted
- pagesParsed
- resultsSaved
- engineStatusCounts
- engineResultCounts
- queryResultCounts
- stopReason

Um teste de controle atual do Bing neste Actor usou a consulta Python asyncio documentation. O Actor tentou acessar uma página de resultados e a analisou. Ele salvou 2 linhas. As duas linhas continham URLs diretas de docs.python.org. engine era bing. executedQuery era exatamente essa expressão. page era 1. Uma linha tinha rank 1. A outra linha tinha rank 2. Cada linha tinha observedAt.

O OUTPUT do teste de controle foi:

```json
{
  "queriesRequested": 1,
  "searchesCompiled": 1,
  "executionsPlanned": 1,
  "enginesSuccessful": 1,
  "enginesFailed": 0,
  "pagesAttempted": 1,
  "pagesParsed": 1,
  "resultsSaved": 2,
  "engineStatusCounts": {"bing": {"ok": 1}},
  "engineResultCounts": {"bing": 2},
  "queryResultCounts": {"Python asyncio documentation": 2},
  "stopReason": "result_caps_reached"
}
```

Leia o resumo da execução

Os valores conhecidos das linhas do teste de controle são:

| Campo | Valor no teste de controle |
| --- | --- |
| engine | bing |
| executedQuery | Python asyncio documentation |
| page | 1 |
| rank | 1 e 2 |
| canonicalUrl | 2 URLs diretas de docs.python.org |
| observedAt | presente em cada linha |

O valor result_caps_reached em stopReason significa que a execução atingiu o limite de resultados. Isso não significa que o Bing tenha apenas 2 resultados.

Este teste de controle verifica uma amostra limitada do Bing. Ele verifica a URL, a posição e a consulta, a página de resultados e o horário salvos. Ele não testa Google, Brave ou DuckDuckGo. Ele não testa todos os operadores de busca. Ele não testa todos os países. Ele não repete a observação da posição em outro momento. Ele não mede uma mudança de posição. Ele não mede tráfego. Ele não extrai dados do site de destino.

Se enginesFailed não for 0, não declare que o alvo está ausente.  Uma consulta que falhou não permite atribuir um estado de alvo ausente.

Uma amostra vazia também não representa uma cobertura completa do Bing. Resultados limitados pelo teto definido, com falha ou vazios descrevem apenas aquela execução.

## Compare registros em 8 etapas

### 1. Escolha o alvo e uma lista curta e fixa de consultas.

Defina o alvo antes de examinar a mudança de posição. Um alvo de página exata corresponde a um endereço e caminho declarados. Um alvo de domínio corresponde à página aceita mais bem posicionada em um host. Informe qual opção a decisão usa. Uma lista curta e fixa significa que você repete as mesmas expressões. A primeira verificação ainda usa uma expressão e apenas o Bing. Adicione outra expressão apenas em uma linha fixa própria, com as mesmas configurações.

Uma tabela de posições com escopo limitado ao Bing não informa a posição média do Google Search Console. Ela não informa a posição que cada pessoa vê.

### 2. Fixe o Bing e as configurações da amostra.

Substitua a lista de mecanismos de busca da Task por engines ["bing"]. Substitua as consultas de exemplo por uma consulta que você pretende acompanhar na primeira verificação. Defina maxResultsPerExecutedQuery como 2 para esse teste-piloto. Fixe country, language, safeSearch, includeSponsoredResults e o limite de resultados.

As mesmas palavras em outro país correspondem a um registro diferente. A busca segura ativada e a busca segura desativada correspondem a registros diferentes. Um limite de 2 e um limite de 10 correspondem a registros diferentes. Solicitar um país ainda não garante que o resultado corresponda ao de todos os usuários locais.

### 3. Examine as linhas obtidas com sucesso e o OUTPUT.

Mantenha executedQuery, rank, rankOnPage, page e observedAt de cada linha obtida com sucesso. Mantenha as contagens de OUTPUT e stopReason junto delas. O pequeno teste de controle atual tem 2 URLs diretas com posições na página de resultados 1. Esse teste de controle não representa uma mudança medida para sua página.

Se a consulta falhou, não atribua um estado de ausência ao alvo. Salve source_failed em vez disso.

### 4. Identifique o alvo de acordo com a regra definida.

Para uma página exata, compare usando a regra de endereço e caminho que você declarou. Preserve o canonicalUrl retornado. Não altere a sequência de caracteres retornada.

Para um domínio, identifique o host pretendido. Entre as linhas orgânicas aceitas desse host, mantenha o menor valor de rank. Esse menor valor é a melhor posição do domínio observada na amostra.

Não agrupe uma empresa com nome semelhante. Não agrupe um subdomínio diferente. Não agrupe um redirecionamento de rastreamento sem verificar esse redirecionamento e aceitar o destino. Se a identidade não estiver clara, o estado será unresolved_target.

### 5. Armazene um estado válido. Nunca armazene uma posição inventada.

Use observed_rank quando o alvo corresponder a uma linha. Uma amostra útil vem de uma execução concluída com sucesso e com seu limite registrado. Use not_seen_within_cap quando essa amostra não contiver o alvo. Use source_failed quando a coleta falhar. Use unresolved_target quando você não conseguir determinar se uma linha corresponde ao alvo.

Não use 0. Não use cap + 1. Esses números parecem posições, mas não são posições observadas.

Com o limite de 2 do teste-piloto, um alvo ausente recebe not_seen_within_cap para o limite de 2. A página pode aparecer mais adiante. A posição real continua desconhecida. A mesma regra se aplica a qualquer limite maior que você fixar depois.

### 6. Repita a mesma entrada depois.

Execute a entrada fixa novamente quando decidir usar esse orçamento. Salve o novo registro como uma [nova observação](/pt-BR/articles/combinar-exporta%C3%A7%C3%B5es-de-buscas-do-bing/). Não sobrescreva o antigo.

A Task não monitora posições por conta própria. O agendamento é uma etapa separada que você configura de forma intencional. Compare a mesma consulta e a mesma regra de alvo. Use o mesmo país, idioma e valor de safeSearch. Use a mesma configuração de resultados patrocinados e um escopo de coleta semelhante.

Se o limite mudou, não considere o par comparável. Se a forma de ler os resultados mudou, não considere o par comparável.

### 7. Calcule a mudança de posição apenas para 2 posições conhecidas.

A mudança de posição usa uma subtração simples. Mudança de posição = posição antiga - posição nova. Um resultado positivo significa que o número da nova posição é menor. O resultado aparece mais perto do início na nova amostra do que na antiga.

Exclua not_seen_within_cap dessa subtração. Exclua também source_failed e unresolved_target. Não calcule médias que misturem valores desconhecidos com posições reais. Não calcule médias com números substitutos, como 0 ou cap + 1.

Uma mudança nessa ordem da amostra não comprova uma mudança no tráfego. Ela não comprova uma mudança nas vendas. Ela não comprova que uma edição de conteúdo causou a mudança.

### 8. Entregue a tabela de posições e encerre com uma comparação de valores conhecidos.

Crie uma linha na tabela de posições para cada consulta e regra de alvo. Inclua a execução de origem, o contexto, o limite, o estado e uma nota sobre a comparação. Mantenha o Google e qualquer outro mecanismo de busca em um local separado. Não faça afirmações sobre eles aqui.

Encerre com um par de registros equivalentes ou escreva que a comparação continua sem resolução. Não preencha a lacuna com uma posição estimada sem evidência.

## Uma tabela fictícia de posições

A tabela abaixo é uma ficção original. Ela ensina os estados. Ela não é um resultado do Actor. Ela não é o teste de controle do Bing acima. A página-alvo fictícia é https://garden.example/guide. O domínio fictício é garden.example. S1 é o registro mais antigo. S2 é o registro mais recente. Os 2 registros de Q1 usam as mesmas configurações do Bing e o mesmo limite dos 10 primeiros resultados. O limite de 2 do teste-piloto corresponde a outro escopo. Não misture esses limites. Nenhuma data foi fornecida, por isso nenhuma é exibida.

Q1 compara a página exata do guia. S1 observa a posição 7. S2 observa a posição 4. As duas posições estão dentro de amostras equivalentes dos 10 primeiros resultados. Mudança de posição = 7 - 4 = +3. Segundo essa definição, a página avançou 3 posições em direção ao início da amostra.

Q2 usa a mesma página exata e o mesmo limite de 10. S1 observa a posição 2. S2 é not_seen_within_cap para o limite de 10. A nova posição é desconhecida. A mudança de posição é desconhecida. Não armazene 11. A página pode estar em uma posição depois da 10. Você não sabe qual é essa posição posterior.

Q3 usa a mesma página exata. A posição e o horário de S1 não foram fornecidos, por isso S1 continua desconhecido. S2 é source_failed. A comparação não está disponível. Isso não representa uma perda de posição. A falha significa que a nova amostra não foi coletada.

Q4 é um registro de domínio, não um par para medir mudança de posição. Duas páginas aceitas no domínio têm posições orgânicas 3 e 8. Se o alvo for o domínio, a melhor posição observada será 3. Se o alvo for a página exata do guia, essa página poderá estar na posição 8. Outra página do domínio poderá estar na posição 3 ao mesmo tempo. Informe qual definição você usa. Não informe 3 como a posição da página exata.

| Consulta | Regra de alvo | Estado de S1 | Estado de S2 | Mudança de posição | Conclusão segura |
| --- | --- | --- | --- | --- | --- |
| Q1 | Página exata https://garden.example/guide | observed_rank 7 | observed_rank 4 | 7 - 4 = +3 | Par de posições conhecidas em amostras equivalentes dos 10 primeiros resultados |
| Q2 | Página exata, limite de 10 | observed_rank 2 | not_seen_within_cap 10 | desconhecida | Não é a posição 11, nem uma mudança de posição de 2 - 11 |
| Q3 | Página exata | desconhecido | source_failed | desconhecida | Comparação indisponível, não uma perda de posição |
| Q4 | Domínio garden.example ou a página exata do guia | Um registro: posições aceitas 3 e 8 | Mesmo registro, não um segundo momento | nenhuma | O menor valor de posição do domínio é 3. A página exata do guia pode estar na posição 8 |

Alguém poderia inventar a posição 11 para Q2. Depois, poderia calcular 2 - 11 = -9. Esse -9 não é uma observação. Calcular a média do +3 de Q1 com esse -9 inventado produz um resumo falso. Mostre primeiro o par de posições conhecidas. Mostre a ausência limitada à amostra. Mostre a falha da fonte. Exclua estados desconhecidos de qualquer média.

Esses valores de S1 e S2 são estados da tabela de posições usados para ensinar. Eles não são campos nativos de posição do teste de controle. Esse teste de controle salvou apenas as posições 1 e 2. Ele não mediu uma mudança.

## Próxima ação

Salve um registro do Bing com sua consulta exata, país, idioma, configuração de safeSearch, configuração de resultados patrocinados e limite de resultados. Registre um estado válido do alvo: posição observada, não visto dentro do limite, falha da fonte ou alvo não resolvido. Comece pelo Actor [Google Search Scraper](https://apify.com/chronometrica/google-search-scraper) e pela Task atual [Keyword Search Rank Snapshot](https://apify.com/chronometrica/google-search-scraper/examples/keyword-rank-snapshot). Altere essa Task para uma consulta e engines ["bing"] antes de comparar qualquer coisa.

## Fontes e leituras adicionais

- [Google Search Scraper](https://apify.com/chronometrica/google-search-scraper)
- [Keyword Search Rank Snapshot](https://apify.com/chronometrica/google-search-scraper/examples/keyword-rank-snapshot)
- [https://www.reddit.com/r/SEO/comments/1dybuk8/any_tools_to_just_monitor_specific_keyword_ranking/](https://www.reddit.com/r/SEO/comments/1dybuk8/any_tools_to_just_monitor_specific_keyword_ranking/)
- [https://www.reddit.com/r/SEO/comments/1d5kve4/how_to_check_if_you_ranked_on_a_keyword/](https://www.reddit.com/r/SEO/comments/1d5kve4/how_to_check_if_you_ranked_on_a_keyword/)