

# Como conciliar os contadores públicos do X com seus próprios dados analíticos exportados

Confira se o post, a definição, o escopo temporal e o horário de observação correspondem antes de considerar 2 leituras divergentes.

Uma leitura é um valor de uma fonte em um momento. Conciliar significa registrar o que corresponde, o que tem escopo diferente e o que permanece desconhecido. O escopo é o que um número inclui. Ele abrange a métrica, os posts e a janela de tempo. Uma janela delimita o início e o fim de um período.

Um registro pontual de dados públicos não pode reconstruir um relatório mensal da conta que está faltando. Esse registro consiste em uma leitura dos contadores públicos em um momento. Separe uma diferença de escopo que você consegue explicar de uma diferença que você não consegue explicar.

## Etapas da comparação

### 1. Defina a necessidade do relatório.

Um registro de posts públicos pode documentar posts conhecidos que você consegue consultar agora. Esse registro tem uma linha para cada post. Ele não pode preencher todas as colunas de um relatório privado. Ele não pode criar os dados de um mês anterior que você não salvou.

Descreva sua necessidade em uma linha. Se você precisa de um relatório completo da conta referente a um mês passado, pare. Informe que um registro pontual de dados públicos não pode fornecer esse relatório. Se você já possui um arquivo exportado, pode continuar. Esse arquivo deve se referir a posts públicos conhecidos.

### 2. Primeiro, faça a leitura de um post público conhecido.

Um Actor é um programa hospedado de coleta de dados. Uma Task é uma configuração de entrada salva para esse Actor. O Actor [X Post Metrics](https://apify.com/chronometrica/x-post-metrics) coleta linhas de dados públicos. Você faz a comparação. O Actor não atribui uma classe ao resultado. Uma Task salva fornece uma entrada inicial. Ela não comprova que a comparação é automática.

A versão 1.0.4 é a versão pública usada para estas regras dos campos. Essa versão aceita `startUrls` com 1 a 1.000 URLs de status de posts públicos conhecidos. Uma URL de status é o endereço de um post na web. Aqui, um post é uma mensagem pública do X com sua própria URL de status. O X é o site público em x.com.

Verifique uma execução nesta ordem. Comece pela Task salva. Substitua o exemplo pela sua URL de teste piloto. Depois, leia os campos nativos da linha. Em seguida, leia `postMetricStatus` para cada métrica. Depois, leia o resumo da execução. Mantenha o resumo da execução fora da linha do post.

A entrada atual da Task salva é um exemplo:

```json
{
  "startUrls": [
    "https://x.com/OpenAI/status/2074907025537224840",
    "https://x.com/OpenAI/status/2074907027378511884",
    "https://x.com/OpenAI/status/2074907031862190406"
  ]
}
```

Etapas da comparação

Essas 3 URLs são exemplos. Substitua-as por posts públicos que você conhece. O teste piloto é sua primeira execução de pequeno porte. Use uma URL no teste piloto. Uma URL mantém o teste pequeno.

Este Actor não pesquisa a linha do tempo de um perfil. Ele não gera um relatório da conta por intervalo de datas. Ele não acessa dados analíticos privados. Ele não recupera um histórico que você não salvou. Ele não coleta posts protegidos. Um post protegido não é público. Ele não usa credenciais da conta. Credenciais são senhas ou outros dados secretos de acesso.

Cada URL de entrada gera uma linha referente à tentativa de coleta. A linha inclui `status` e `statusReason` mesmo quando faltam informações úteis. `status` informa como a tentativa terminou para essa linha. `statusReason` apresenta um motivo breve. Um contador ausente não é zero. Zero é um número retornado. Null significa que o valor não estava disponível.

Verifique 4 itens na linha do teste piloto antes de confiar nela. Verifique se `postId` e `postUrl` correspondem ao post solicitado. Verifique `status`. Verifique `observedAt`. Verifique `postMetricStatus` para cada métrica que você vai usar. `observedAt` é o horário de observação. O horário de observação é quando o contador foi lido. O horário de publicação é quando o post foi publicado. Não troque esses horários.

Os campos nativos da linha são `inputUrl`, `postUrl`, `postId`, `profileId`, `views`, `likes`, `replies`, `reposts`, `quotes`, `bookmarks`, `profileFollowers`, `postMetricStatus`, `status`, `statusReason` e `observedAt`.

`inputUrl` é a URL que você enviou. `postUrl` é a URL do post na linha. `postId` é o ID do post. `profileId` é o ID da conta. Um contador é um número armazenado para esse post ou essa conta. `views` conta eventos públicos de visualização. A linha também contém `likes`, `replies`, `reposts`, `quotes` e `bookmarks`. Uma curtida é uma marca de que alguém gostou do post. Uma resposta é uma mensagem em resposta ao post. Uma repostagem é um compartilhamento do post. Uma citação é um compartilhamento que acrescenta texto. Um item salvo é um post guardado para consulta. Não some esses contadores aqui. Este método não calcula uma taxa a partir deles.

`profileFollowers` é a contagem pública de seguidores dessa conta em `observedAt`. Um seguidor é uma conta que segue o perfil. Não use `profileFollowers` como contagem de visualizações do post.

A precisão informa se um número é exato, arredondado ou de precisão desconhecida. `postMetricStatus` fornece essa precisão para cada métrica retornada. Mantenha a precisão junto do número. Se uma métrica estiver ausente, mantenha-a ausente. Não preencha a lacuna com 0.

Um controle é uma execução pública verificada, usada para identificar quais campos são retornados. Um controle público atual retornou os campos de identificação e tempo solicitados. Esses campos incluem `postId`, `postUrl`, `profileId`, horário de publicação e `observedAt`. Ele também retornou `views`, `likes`, `replies`, `reposts`, `quotes`, `bookmarks` e `profileFollowers`. Seu `status` foi ok.

Cada métrica retornada em `postMetricStatus` foi present/exact/public_post.

| Métrica retornada | postMetricStatus do controle |
| --- | --- |
| views | present/exact/public_post |
| likes | present/exact/public_post |
| replies | present/exact/public_post |
| reposts | present/exact/public_post |
| quotes | present/exact/public_post |
| bookmarks | present/exact/public_post |

Present significa que a métrica estava na linha. Exact significa que o valor desse controle era exato. `public_post` significa que a fonte era um post público. Esse controle mostra que é possível coletar contadores públicos. Ele não mostra que um contador público é igual a um valor de um arquivo privado exportado. Sua própria execução pode apresentar diferenças. Leia sua própria linha. Não copie o status do controle para um post que o controle não leu.

O resumo da execução não é uma linha de post. Seus campos são `inputCount`, `datasetRows`, `usefulRows`, `billableRows`, `failedRows`, `statusCounts` e `stopReason`.

`inputCount` conta as URLs de entrada. `datasetRows` conta as linhas gravadas. `usefulRows` conta as linhas com informações úteis. `billableRows` conta as linhas que a execução marca para cobrança. `failedRows` conta as linhas com falha. `statusCounts` agrupa as contagens de linhas por status. `stopReason` informa por que a execução parou. Não cole nenhum desses valores em uma célula de visualizações de post. Este artigo não inventa essas contagens. Nenhum preço é informado aqui.

### 3. Registre os dados exportados que você já possui.

Um arquivo exportado é um arquivo de um relatório analítico que você tem permissão para usar. Um relatório autorizado é um relatório que você tem permissão para usar. Use um arquivo exportado somente quando tiver permissão para usá-lo. Este método não obtém um arquivo privado exportado do X. Ele não substitui um painel de forma gratuita. Ele não contorna uma regra de acesso.

Posts públicos antigos não determinam o preço nem as condições de acesso atuais ao X Analytics. Consulte [Alternativas para a análise de dados do Twitter](https://www.reddit.com/r/Twitter/comments/1e5a688/alternatives_for_twitter_analytics/) e [Análise de dados do X (Twitter)](https://www.reddit.com/r/Twitter/comments/1abvw05/x_twitter_analytics/). Se você ainda não possui o relatório, mantenha os dados desse lado como desconhecidos.

Se você possui um relatório autorizado, copie estes itens do relatório. Copie o ID do post. Copie o nome da métrica. Copie a definição da métrica das próprias notas do relatório. Copie o intervalo de datas e o fuso horário. Copie o horário de extração. O horário de extração é quando o arquivo do relatório foi obtido. Se o relatório informar o escopo pago ou orgânico, copie essa informação também. O escopo pago abrange posts promovidos. O escopo orgânico abrange posts que o relatório identifica como não promovidos. Se o relatório não informar essa divisão, não a invente.

Não presuma que uma coluna chamada impressions corresponde às visualizações públicas. Não trate o total de uma conta como o total de um post. Use a definição do relatório. Se a definição estiver ausente, a comparação permanece desconhecida.

### 4. Faça a correspondência das linhas pelo ID do post.

Faça a correspondência entre `postId` e o ID do post no seu arquivo exportado. Não faça a correspondência pelo título nem pelo texto. 2 posts diferentes podem usar as mesmas palavras. Um post com a legenda alterada ainda pode ter o mesmo ID. O ID é a chave de identificação.

Mantenha uma linha pública que não tenha uma linha correspondente no relatório. Mantenha uma linha do relatório que não tenha uma linha pública correspondente. Mantenha como desconhecido um ID que você não consegue ler. Não transforme uma correspondência ausente em 0.

Algumas linhas do relatório representam uma conta em um período. Uma linha desse tipo abrange muitos posts em uma janela de tempo. Não associe essa linha a um único post. Não trate o número da conta como o número desse post. Registre o nível de agregação na linha. O nível de agregação informa se a linha representa um post, um dia ou uma conta.

### 5. Mapeie o escopo antes de comparar os números.

Atribua um rótulo de escopo ao par.

`same_metric_scope` significa que a definição da métrica, o post e o escopo temporal correspondem.

`different_metric_scope` significa que você consegue demonstrar uma diferença na definição ou no período.

`definition_unknown` significa que uma definição necessária está ausente.

Um contador público acumulado informa o total no momento da leitura. Acumulado significa que os eventos são somados desde a publicação até `observedAt`. Um relatório de um período selecionado informa o que ocorreu dentro de uma janela. Uma janela que terminou ontem pode diferir de um total lido hoje. Esses 2 números respondem a perguntas diferentes.

As visualizações públicas são eventos de visualização. O X informa que elas podem incluir visualizações repetidas e a visualização do próprio autor. Elas não representam pessoas diferentes contadas uma única vez. Leia a [ajuda atual sobre a contagem de visualizações](https://help.x.com/en/using-x/view-counts) antes de usar `views`. Essa página não torna `views` equivalente a todas as métricas de um arquivo exportado. Se seu arquivo exportado usa outra definição, use os termos desse arquivo. Se você não consegue ler a definição no arquivo exportado, use `definition_unknown`.

As atualizações podem ter atraso. Atraso significa que a leitura mais recente ainda não inclui um evento recente. Não indique o atraso como causa sem ter evidências. Uma suposição não é uma evidência.

### 6. Calcule uma diferença somente quando a comparação permitir.

Se a definição e o período estiverem suficientemente alinhados, você pode calcular a diferença entre os valores exibidos. Use uma subtração simples.

```text
displayed difference = public value - owned value
observed counter delta = later saved public value - earlier saved public value
```

Etapas da comparação

Mantenha a precisão ao lado do resultado. Se `postMetricStatus` não indicar um valor exato, não chame o resultado de exato. Se o valor público for arredondado, uma correspondência exata pode ser impossível. Se um dos valores estiver ausente, não calcule a diferença.

[2 registros pontuais de dados públicos salvos](/pt-BR/articles/historico-de-metricas-de-posts-do-facebook/) podem mostrar uma mudança somente entre os momentos salvos. A variação observada do contador é essa mudança. Ela existe somente para os momentos que você salvou. Não invente uma leitura inicial anterior. Uma linha de base é uma leitura inicial. Você não pode recuperar um mês ausente por meio de uma suposição sobre o valor inicial.

Um contador pode diminuir quando o X o corrige. Uma variação negativa pode ser real. Não atribua toda queda a uma leitura incorreta do arquivo.

Se os escopos não estiverem alinhados, você ainda pode mostrar a subtração como uma operação aritmética. Identifique-a como uma operação aritmética. Não a identifique como a causa.

### 7. Classifique o resultado.

Use uma classe de resultado para a comparação que você consegue fundamentar.

`explained_scope_difference` significa que você consegue apontar uma diferença de escopo conhecida. Essa classe não explica toda a dimensão de uma diferença numérica.

`timing_or_precision_limit` significa que os horários diferem ou que a precisão impede uma correspondência exata. Use essa classe somente quando essa limitação for o que você consegue demonstrar.

`comparable_values` significa que o post, a definição e o escopo temporal estão suficientemente alinhados para comparar os 2 números. Uma correspondência em uma linha não comprova que todo o relatório está completo.

`unresolved_difference` significa que você não consegue fundamentar um motivo. Mantenha o motivo como desconhecido.

Fraude significaria que os números foram falsificados. Uma diferença não comprova fraude. Ela não comprova que um número adicional teve origem paga. Ela não comprova que a ferramenta de análise está com defeito. Ela não comprova que o X ocultou o post. Mantenha um motivo somente quando os 2 registros comprobatórios o sustentarem. Um registro comprobatório é a linha pública ou a linha do relatório próprio que você possui. Se a definição estiver ausente, o motivo permanece desconhecido.

### 8. Entregue a tabela por post e uma nota breve.

Use uma linha por post. Mostre o ID do post e as 2 fontes. Mostre o horário de publicação e o horário de observação em células separadas. Mostre o nome da métrica, a definição, a janela e a precisão. Indique um valor ausente como ausente. Mostre o rótulo de escopo e a classe do resultado. Se uma diferença numérica continuar sem explicação, informe isso na nota.

Se você possui somente linhas públicas, apresente essas linhas e os limites acima. Não afirme que são impressões mensais. Não afirme que representam alcance único. Não afirme que são um total privado de engajamento. Não afirme que demonstram o retorno da campanha. Não transforme os contadores em uma taxa.

Encerre a nota com uma métrica de um post. Essa linha apresenta valores comparáveis ou permanece sem solução. Não transforme uma diferença desconhecida em uma causa.

## Registro fictício de posts

Os 5 posts abaixo são uma ficção original. Eles não são um resultado do produto. Eles não são linhas do Actor. Nesta ficção, nenhum painel foi substituído. Nenhum arquivo privado exportado foi obtido. O horário de publicação não é informado. Não copie um horário de observação para a célula de horário de publicação. Não transforme uma contagem de visualizações em pessoas diferentes contadas uma única vez.

P1 a P5 são IDs fictícios de posts. Nenhum desses posts corresponde a uma exportação real.

| Post | Horário de publicação | Métrica pública | Valor público | Horário de observação pública | Definição pública | Janela pública | Precisão pública | Métrica do relatório próprio | Valor do relatório próprio | Horário do relatório próprio | Definição do relatório próprio | Janela do relatório próprio | Escopo | Operação aritmética | Resultado |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| P1 | não informado | views | 1.500 | 13 de outubro às 10:00 UTC | eventos públicos de visualização | acumulada até o horário de observação | não informada | impressions | 1.200 | não informado | impressões documentadas para a janela informada | 1–12 de outubro; fuso horário não informado | different_metric_scope | 1.500 - 1.200 = 300 | explained_scope_difference somente quanto ao escopo; a diferença de 300 não está totalmente explicada |
| P2 | não informado | views | 1.000 e depois 1.200 | 13 de outubro às 10:00 UTC e 13 de outubro às 12:00 UTC | visualizações públicas acumuladas exatas | acumulada até cada leitura salva | exata | sem linha no relatório próprio | sem linha no relatório próprio | sem linha no relatório próprio | sem linha no relatório próprio | sem linha no relatório próprio | mesma definição de visualizações públicas em 2 momentos salvos | 1.200 - 1.000 = 200 | variação observada do contador somente entre esses 2 momentos salvos |
| P3 | não informado | views | null, não 0 | não informado | as visualizações públicas não estavam disponíveis | indisponível | não se aplica | não informada | 500 | não informado | não informada | não informada | valor público ausente, portanto o escopo não foi mapeado | não calcular | comparação pública indisponível; não é uma diferença de -500 |
| P4 | não informado | não informada | 2.000 | não informado | não informada | não informada | desconhecida | não informada | não informado | não informado | definição ausente | não informada | definition_unknown | não calcular | unresolved_difference |
| P5 | não informado | contador documentado | 250 | mesmo momento da leitura do relatório próprio; horário exato não informado | mesmo contador documentado do relatório próprio | mesma janela do relatório próprio; datas não informadas | não há informação de precisão além do valor 250 | contador documentado | 250 | mesmo momento da leitura pública; horário exato não informado | mesmo escopo documentado do contador | mesma janela dos dados públicos; datas não informadas | same_metric_scope | 250 - 250 = 0 | comparable_values somente para este contador |

UTC é a referência de horário usada em P1 e P2. Ela não segue o horário de verão local.

P1 apresenta uma diferença de escopo conhecida. A célula pública contém visualizações acumuladas lidas em 13 de outubro às 10:00 UTC. A célula do relatório próprio contém impressões de 1–12 de outubro. Visualizações e impressões de uma janela não são a mesma métrica. Um total até 13 de outubro e uma janela que termina em 12 de outubro não representam o mesmo período. Por isso, o rótulo de escopo é `different_metric_scope`. A classe de resultado `explained_scope_difference` abrange somente esse fato sobre o escopo.

A subtração 1.500 - 1.200 = 300 é uma operação aritmética. Ela não representa 300 impressões ausentes verificadas. Ela não comprova um erro de coleta. Você não consegue decompor esses 300 a partir desses 2 registros comprobatórios. Você não sabe quantas visualizações ocorreram em 13 de outubro. Você não sabe quantas foram repetições ou visualizações do próprio autor. Você não sabe como a regra de impressões difere dentro desses 300. Mantenha essa parte sem explicação.

P2 tem 2 leituras públicas exatas de visualizações acumuladas. Em 13 de outubro às 10:00 UTC, o contador mostra 1.000. Em 13 de outubro às 12:00 UTC, ele mostra 1.200. A variação observada do contador é 1.200 - 1.000 = 200. Essa é a mudança exibida entre 2 momentos salvos. Ela não representa 200 pessoas diferentes contadas uma única vez. Ela não é um relatório mensal recuperado. Não há uma linha do relatório próprio para P2 nesta ficção. Não invente um valor inicial anterior às 10:00. Não descreva a evolução entre os 2 horários. Você não salvou essas leituras intermediárias.

P3 tem visualizações públicas com valor null e um valor de 500 no relatório. Null significa que o contador público de visualizações não estava disponível. Isso não significa zero visualizações. Como o valor público está ausente, você não faz a subtração. 500 - 0 é a equação errada. 0 - 500 também está errada. Não existe uma diferença de -500. O valor do relatório permanece no lado do relatório. Ele não é um total de visualizações públicas. Este resultado é uma comparação pública indisponível. Ele não é uma classificação concluída de divergência.

P4 mostra um valor público de 2.000 com precisão desconhecida. O relatório não tem uma definição. Os nomes das métricas, os horários e as janelas não são informados. O rótulo de escopo é `definition_unknown`. Você não consegue fundamentar uma causa. O resultado é `unresolved_difference`. Não suponha arredondamento. Não suponha atraso. Não suponha o nome de uma segunda métrica.

P5 usa o mesmo contador documentado, o mesmo escopo e o mesmo momento nos 2 lados. Os 2 valores são 250. A diferença exibida é 250 - 250 = 0. O rótulo de escopo é `same_metric_scope`. O resultado é `comparable_values`. Esse resultado abrange somente este contador. Ele não mostra que todos os posts de um relatório foram verificados. Ele não mostra que todas as outras métricas de P5 correspondem. Ele não mostra que o relatório está completo.

## Próxima ação

Mapeie uma métrica de um post que você conhece. Use o mesmo ID de post, a definição e o escopo temporal. Se a diferença não tiver explicação, mantenha-a sem solução. Colete os dados públicos com o [Actor X Post Metrics](https://apify.com/chronometrica/x-post-metrics). Comece pela [Task X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot). Substitua as URLs de exemplo por uma URL de um post público conhecido.

## Fontes e leituras adicionais

- [Actor X Post Metrics](https://apify.com/chronometrica/x-post-metrics)
- [Task X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot)
- [Contagens de visualizações](https://help.x.com/en/using-x/view-counts)
- [Alternativas para a análise de dados do Twitter](https://www.reddit.com/r/Twitter/comments/1e5a688/alternatives_for_twitter_analytics/)
- [Análise de dados do X (Twitter)](https://www.reddit.com/r/Twitter/comments/1abvw05/x_twitter_analytics/)