

# Como salvar instantâneos de métricas do Instagram sem importações duplicadas

Armazene cada instantâneo coletado do Instagram uma única vez, com uma chave estável para a execução e a linha de origem. Mantenha o horário original da coleta. Adicione observações posteriores como novas linhas e crie uma visão separada para as leituras mais recentes. Quando uma importação falhar, reinicie com as mesmas chaves. Uma importação repetida não deve adicionar novas observações. Uma nova execução de coleta deve adicionar novas observações, mesmo quando as contagens permanecerem iguais.

Um instantâneo é uma leitura salva em um determinado horário de coleta. Uma observação é o registro armazenado dessa leitura. Este guia propõe um método de importação para desenvolvedores que já coletam métricas públicas do Instagram. O método preserva o histórico e impede que uma importação repetida seja tratada como uma verificação adicional que não ocorreu.

O programa de coleta fornece as linhas de origem. Seu processo de importação deve fornecer as chaves estáveis, as regras de armazenamento e as verificações de reinício descritas abaixo. Nenhuma coleta ou teste de importação foi realizado para este artigo.

## Defina o que cada linha salva representa

Um leitor perguntou publicamente sobre “Analisar o desempenho da publicação a cada 24 horas para criar uma curva semelhante à dos novos indicadores do Instagram.” Essa formulação identifica uma necessidade de medições recorrentes. Ela não especifica como lidar com novas tentativas. O método de importação segura apresentado aqui é uma extensão proposta para o projeto. [Pergunta do leitor, observada em 12 de agosto de 2026; data de publicação indisponível e nenhum uso do produto verificado](https://www.reddit.com/r/n8n/comments/1iy4oco/n8n_competitor_analysis/).

Um agendamento diário, por si só, não produz um histórico confiável. Você também precisa distinguir dois eventos:

- Uma nova coleta: o programa verifica a publicação novamente. Salve uma nova observação.
- Uma importação repetida: seu aplicativo lê uma linha que já salvou. Mantenha a observação existente.

Esses eventos podem conter contagens idênticas. Duas verificações que informam 100 visualizações cada continuam sendo duas observações. Ler a mesma linha coletada duas vezes continua sendo uma única observação.

Mantenha as contagens separadas do número de pessoas. Uma contagem pública de visualizações não é uma contagem de pessoas únicas. Mantenha `views`, `plays` e `playsInstagram` como campos separados. Não some esses campos nem substitua um pelo outro sem uma regra de relatório definida.

Este método trata de contagens públicas. Ele não obtém Insights privados da conta nem recupera contagens passadas que você não salvou. Registros exclusivos do proprietário exigem uma fonte autorizada separada. O contrato público verificado permite coletar métricas públicas atuais, mas não recuperar contagens históricas. [Contrato do Instagram Metrics Scraper, verificado em 25 de outubro de 2026; apenas inspeção do build público, sem execução paga](https://apify.com/chronometrica/instagram-metrics-scraper).

Se você ainda precisa escolher entre encontrar publicações recentes e verificar URLs salvas, use o [guia de coleta recorrente do Instagram](/pt-BR/articles/chronometrica-vs-webdatalabs-metricas-recorrentes-de-criadores-no-instagram/). Faça essa escolha antes de projetar a importação.

## Mantenha uma tabela de observações e um comprovante de importação

Use dois registros com funções diferentes. A tabela de observações armazena as leituras coletadas. O comprovante de importação registra como seu aplicativo processou uma execução de origem.

Uma execução corresponde a uma vez em que o programa de coleta é executado. Um conjunto de dados é a lista armazenada de linhas retornadas por esse programa. Mantenha os dois identificadores para rastrear uma observação salva até sua origem.

Os nomes a seguir são campos de armazenamento propostos. Campos como `run_id` e `item_position` são metadados do seu fluxo de trabalho: informações sobre a coleta e a importação. Eles não são novos campos de saída do Actor. Um Actor é um programa de coleta hospedado.

| Campo salvo | O que manter | Finalidade |
| --- | --- | --- |
| `observation_key` | Chave única da linha de origem | Impedir uma inserção repetida |
| `run_id` | ID da execução de origem concluída, como texto | Identificar a execução de coleta |
| `dataset_id` | ID do conjunto de dados de origem, como texto | Identificar a lista de origem |
| `item_position` | Posição absoluta original da linha | Identificar a linha antes das alterações |
| `postId` | ID original da publicação, como texto | Associar o mesmo conteúdo entre execuções |
| `postUrl` | URL original do conteúdo | Manter a referência do conteúdo |
| `scrapedAt` | Horário original da coleta | Situar a leitura no histórico |
| Contadores | Cada contador retornado, separadamente | Preservar o significado da métrica |
| Campos de status | Status original da métrica e da linha | Explicar valores ausentes ou inutilizáveis |
| `original_json` | Linha original completa | Manter as evidências de origem |
| `imported_at` | Horário em que seu aplicativo salvou a linha | Acompanhar o trabalho de importação separadamente |

JSON é um formato de texto para dados estruturados. Salve o JSON original antes de renomear campos, remover campos ou expandir uma linha de origem em vários registros.

Preserve `postMetricStatus`, `status` e `statusReason` quando forem fornecidos. Mantenha outros campos de status retornados no JSON original. Não invente valores de status nem presuma uma estrutura de status não documentada. O contrato de saída verificado inclui a identificação do conteúdo, as contagens, o horário da coleta e os campos de status. [Build padrão público, verificado em 25 de outubro de 2026; apenas campos documentados, sem teste de execução](https://api.apify.com/v2/acts/Y7Ib4ARpUHw5Ue8op/builds/default).

Para cada tentativa de importação, salve um comprovante com estes detalhes:

- ID da execução, ID do conjunto de dados e estado de conclusão da origem.
- Configurações fixas de exportação e intervalo de linhas de origem em importação.
- Linhas aceitas, linhas repetidas e linhas rejeitadas.
- Última posição de origem processada de forma durável.
- Horário de início, horário de término e estado de conclusão da importação.
- Motivos da rejeição das linhas.

“Aceita” significa que uma nova observação foi salva. “Repetida” significa que a mesma observação de origem já estava salva. “Rejeitada” significa que a linha precisa de correção ou revisão conforme as regras que você definiu.

Mantenha separadas as contagens de cada tentativa de importação. Somar os comprovantes de várias novas tentativas não fornece o número de observações distintas.

## Escolha a chave de observação antes de carregar as linhas

Uma chave é um valor que identifica um registro. Sua chave de observação deve identificar a linha de origem, e não apenas a publicação do Instagram.

Usar apenas `postId` unificaria todas as verificações posteriores dessa publicação. Usar o horário da importação criaria uma nova observação a cada nova tentativa. Uma legenda ou uma posição na lista do perfil de um criador também não identifica uma observação coletada.

Para um conjunto de dados estável e concluído, use o ID da execução e a posição original do item no conjunto de dados. Mantenha o ID do conjunto de dados junto dessa chave. Uma regra prática de armazenamento torna única a combinação de ID da execução, ID do conjunto de dados e posição do item.

Uma regra de unicidade impede que a tabela aceite dois registros com essa mesma combinação. Aplique essa regra no armazenamento, em vez de depender apenas de uma verificação no código do aplicativo antes da inserção.

Siga estas etapas:

1. Selecione uma execução de origem concluída quando sua regra de relatório exigir dados estáveis e concluídos.
2. Salve o ID da execução e o ID do conjunto de dados.
3. Fixe as configurações de exportação dos dados brutos e a ordem crescente da origem.
4. Registre o intervalo de origem que você pretende importar.
5. Atribua as posições absolutas originais antes de ordenar, filtrar ou expandir as linhas.
6. Mantenha essas posições inalteradas em cada nova tentativa.

Posição absoluta significa a posição na lista de origem completa. Se uma página contém as posições de 0 a 99, a próxima começa em 100. Ela não recomeça em 0. Informe se suas posições começam em 0 ou 1.

A Apify documenta o armazenamento de conjuntos de dados como somente de acréscimo: é possível adicionar itens armazenados, mas não modificar ou excluir itens existentes. Isso permite preservar as linhas de origem. Por si só, isso não torna uma exportação filtrada ou reordenada uma identificação segura para a importação. [Documentação de conjuntos de dados da Apify, verificada em 25 de outubro de 2026; informações sobre armazenamento somente de acréscimo e recuperação, não uma garantia de importação](https://docs.apify.com/storage/dataset).

Se não for possível manter posições de origem estáveis, use um hash documentado de uma representação fixa da linha original. Um hash é um identificador calculado a partir do conteúdo. Use os mesmos campos, a mesma representação textual e o mesmo cálculo em cada nova tentativa. Mantenha também as referências da execução e do conjunto de dados.

Essa alternativa exige cuidado. Linhas idênticas podem produzir o mesmo hash, mesmo que tenham ocupado posições de origem diferentes. Defina se essas linhas representam uma observação ou duas antes de usar esse método. Prefira posições de origem estáveis quando precisar preservar cada linha retornada.

Se uma chave existente apontar para um conteúdo original diferente, pare e revise o conflito. Não sobrescreva a observação salva sem aviso nem classifique o caso como uma repetição normal.

## Salve as linhas e o progresso como uma única operação

O principal risco de reinício ocorre entre salvar uma linha e salvar o progresso. Seu aplicativo pode parar depois que uma dessas ações for concluída, mas antes da conclusão da outra.

Uma transação salva alterações relacionadas como uma única operação. Quando sua ferramenta de armazenamento permitir transações, confirme a gravação das observações aceitas e da posição de progresso em conjunto. Mantenha as alterações relacionadas do comprovante consistentes com essa confirmação.

Use esta sequência de importação:

1. Leia as próximas linhas de origem com suas posições originais.
2. Verifique cada linha conforme suas regras de aceitação.
3. Crie a chave de observação da linha.
4. Insira uma nova observação quando a chave não existir.
5. Conte uma observação existente correspondente como uma repetição.
6. Registre as linhas rejeitadas e seus motivos.
7. Salve o progresso somente quando as linhas e os registros de rejeição estiverem armazenados de forma durável.

Durável significa que o sistema de armazenamento salvou a alteração de modo que ela permaneça após a interrupção do processo de importação.

A ausência de um contador, por si só, não deve causar a rejeição de uma linha de origem válida nos demais aspectos. A linha ainda pode registrar uma tentativa de coleta e outras contagens disponíveis. Preserve o valor ausente e seu status.

Mantenha informações de origem suficientes para revisar as linhas rejeitadas. Uma posição de progresso posterior a uma linha rejeitada não deve ocultar essa linha. Armazene o registro de rejeição antes de avançar o progresso ou pare nesse ponto até resolver o problema.

Se sua ferramenta de armazenamento não puder confirmar a gravação das linhas e do progresso em conjunto, salve as linhas antes de avançar o progresso. Após uma interrupção, reprocesse qualquer intervalo incerto com a mesma chave única. Isso pode produzir repetições, mas não deve produzir observações extras.

Não crie um novo `scrapedAt` durante o reprocessamento. `imported_at` pode mudar entre tentativas. O horário da coleta não pode mudar.

## Acompanhe uma importação e um reinício

O exemplo a seguir é uma ficção original. Ele não é uma saída do Actor, um resultado de cliente ou um resultado de teste. Todos os horários se referem ao mesmo dia fictício em UTC, um padrão de tempo comum.

A execução A contém duas linhas. Neste exemplo, as posições de origem começam em 0.

| Execução | Posição original | Publicação | Horário da coleta | Visualizações |
| --- | --- | --- | --- | --- |
| A | 0 | P1 | 10:00 UTC | 100 |
| A | 1 | P2 | 10:01 UTC | Ausente |
| B | 0 | P1 | 11:00 UTC | 120 |

Primeiro, importe a execução A. A tabela salva P1 e P2 como duas observações. P2 não tem uma contagem de visualizações disponível. Ela permanece como uma observação salva com visualizações ausentes.

Agora, reprocesse a execução A. As duas chaves de linha de origem já existem. A importação não adiciona observações e informa duas repetições.

Em seguida, importe a execução B. Sua linha de P1 tem uma identificação de execução diferente. Salve-a como uma nova observação, mesmo que P1 já exista na tabela.

| Tentativa de importação | Novas observações | Linhas repetidas | Total de observações salvas |
| --- | --- | --- | --- |
| Primeira importação de A | 2 | 0 | 2 |
| Reprocessamento de A | 0 | 2 | 2 |
| Primeira importação de B | 1 | 0 | 3 |

O cálculo é:

- Primeira importação: 0 observações + 2 novas observações = 2 observações.
- Reprocessamento: 2 observações + 0 novas observações = 2 observações.
- Nova execução: 2 observações + 1 nova observação = 3 observações.

Há três observações de duas execuções. Há cinco eventos de processamento de linhas nas três tentativas, mas esses eventos não representam cinco observações. A contagem de P2 continua ausente. Ela não se torna zero.

Agora, considere uma alternativa de reinício separada dentro dessa mesma ficção original. A primeira importação de A para após salvar P1. Ela ainda não salvou P2.

Se o progresso salvo for confiável, reinicie em P2. Esse reinício adiciona uma observação. A tabela termina com duas observações de A.

Se houver incerteza sobre o progresso, reprocesse A desde o início. P1 conta como uma repetição, e P2 conta como uma nova observação. A tabela ainda termina com duas observações de A.

Após a importação de B, qualquer um dos caminhos de reinício produz as mesmas três observações salvas. Esse é o resultado que sua verificação de nova tentativa deve confirmar.

## Crie a exibição mais recente sem alterar o histórico

Uma visão é um resultado montado a partir de registros salvos. Crie uma visão das leituras mais recentes em vez de substituir observações antigas.

Ordene os horários válidos das observações por `scrapedAt`, não pelo horário da importação. Importar hoje a execução concluída de ontem não deve fazer a contagem de ontem parecer mais recente que uma leitura coletada hoje.

Mostre dois fatos separadamente para cada publicação:

- A tentativa de coleta salva mais recente.
- A leitura utilizável mais recente de cada contador necessário, com o horário original dessa leitura.

Uma linha mais recente pode ter visualizações ausentes, enquanto uma linha mais antiga tem visualizações utilizáveis. Você pode manter o valor mais antigo como referência, mas mostre seu horário anterior e o resultado ausente mais recente. Não exiba o valor mais antigo como uma nova medição.

A leitura “utilizável mais recente” pode variar conforme o contador. A linha mais recente com curtidas utilizáveis pode ser diferente da linha mais recente com visualizações utilizáveis. Mantenha seus horários separados.

Documente estes casos de ordenação antes do lançamento:

- Horários de coleta iguais: mantenha as duas observações de origem. Mostre o empate ou aplique uma regra de exibição declarada. Uma regra de exibição não comprova qual leitura ocorreu depois.
- Horário de coleta ausente: preserve a linha de origem, mas exclua-a da ordenação por horário até que seja revisada.
- Horário de coleta inválido: registre o problema. Não o substitua pelo horário da importação sem uma indicação clara.
- Nenhuma linha retornada: registre a lacuna de coleta separadamente. Não invente uma observação nem uma contagem igual a zero.

Para cálculos posteriores, use o [guia de relatórios mensais do Instagram](/pt-BR/articles/como-separar-publica%C3%A7%C3%B5es-antigas-e-novas-no-relat%C3%B3rio-mensal-do-instagram/). Este método de importação preserva observações; ele não fornece leituras ausentes nos limites entre meses. O [guia de histórico de métricas](/pt-BR/articles/historico-de-metricas-de-posts-do-facebook/) também explica por que os horários reais das observações importam quando há lacunas entre verificações.

## Use uma entrada pequena de coleta e depois verifique a importação

O Instagram Metrics Scraper da Chronometrica documenta entradas diretas de conteúdo e os campos necessários para este método de armazenamento proposto. Essa adequação documentada não significa que ele cria sua tabela de histórico ou aplica suas chaves de importação.

Uma Task é uma configuração de entrada predefinida e salva para um Actor. A Task pública Instagram Post Metrics Tracker oferece um ponto de partida. A verificação da página fornecida confirmou apenas sua presença pública. Ela não verificou as configurações salvas com acesso autenticado nem executou a configuração predefinida. [Instagram Post Metrics Tracker, verificado em 25 de outubro de 2026; apenas presença da página pública, sem verificação autenticada das entradas ou execução paga](https://apify.com/chronometrica/instagram-metrics-scraper/examples/instagram-post-metrics-tracker).

Use esta entrada pequena fornecida:

```json
{"maxItems":1,"mode":"contentUrls","startUrls":["https://www.instagram.com/reel/DIwcCZgxVZP/"]}
```

Use uma entrada pequena de coleta e depois verifique a importação

`mode` seleciona como o Actor trata as entradas. `contentUrls` seleciona verificações diretas de conteúdo. `startUrls` contém as URLs dos conteúdos pretendidos. `maxItems` limita o número de linhas de métricas retornadas.

Substitua a URL de exemplo pela URL de uma publicação pública ou de um Reel público conhecido. Um Reel é um formato de vídeo do Instagram. Substitua a lista de exemplo em vez de adicionar sua URL ao lado dela. Inspecione as configurações salvas antes do uso.

Essa entrada passou por uma verificação estática de esquema. Essa verificação confirma a estrutura da entrada em relação ao esquema público fornecido. Ela não confirma a disponibilidade atual do conteúdo nem o sucesso da coleta. [Esquema público de entrada, verificado em 25 de outubro de 2026; apenas validação estática, sem execução paga](https://api.apify.com/v2/acts/Y7Ib4ARpUHw5Ue8op/builds/default).

As verificações a seguir são ações propostas ao leitor:

1. Colete um item público pretendido e mantenha as referências da execução concluída e do conjunto de dados.
2. Importe suas linhas e registre as contagens de linhas aceitas, repetidas e rejeitadas.
3. Importe a mesma origem novamente. Confirme que há zero novas observações.
4. Interrompa uma importação antes do fim e depois a reinicie. Confirme que as chaves finais das linhas de origem correspondem às de uma importação completa.
5. Faça uma nova execução de coleta para o mesmo item. Confirme que ela cria uma nova observação.
6. Confirme que todos os valores salvos de `scrapedAt` correspondem aos de suas linhas de origem.
7. Confirme que os contadores ausentes continuam ausentes e que as contagens utilizáveis mais antigas mantêm seus horários originais.

Uma execução concluída não comprova que todos os itens solicitados têm um contador utilizável. Compare a lista de conteúdos pretendidos com as linhas retornadas e registre as lacunas separadamente.

## Torne a próxima importação segura

Comece pela menor verificação completa: um conjunto de dados de origem concluído, uma tabela de observações e um comprovante. Importe os dados duas vezes. Só avance para a coleta recorrente quando a segunda importação adicionar zero observações e uma execução posterior adicionar uma nova observação.

Use o [Instagram Metrics Scraper, contrato verificado em 25 de outubro de 2026; adequação documentada à coleta pública, sem teste de execução para este guia](https://apify.com/chronometrica/instagram-metrics-scraper) para coletar as linhas públicas de que seu aplicativo precisa. Mantenha separados os horários de coleta, importação e exibição. Se a verificação de nova tentativa falhar, corrija a chave de observação ou o controle de progresso antes de adicionar mais dados de coletas agendadas.

## Fontes e leituras adicionais

- [Contrato público do Instagram Metrics Scraper, verificado em 25 de outubro de 2026; entradas e saídas públicas documentadas, sem execução paga ou teste atual de funcionamento](https://apify.com/chronometrica/instagram-metrics-scraper)
- [Build padrão público 1.0.35, verificado em 25 de outubro de 2026; evidências do esquema e dos campos documentados, não do comportamento medido durante a execução](https://api.apify.com/v2/acts/Y7Ib4ARpUHw5Ue8op/builds/default)
- [Documentação de conjuntos de dados da Apify, verificada em 25 de outubro de 2026; evidências de armazenamento somente de acréscimo e recuperação, a identificação estável para importação ainda exige uma ordem de origem fixa](https://docs.apify.com/storage/dataset)
- [Task Instagram Post Metrics Tracker, verificada em 25 de outubro de 2026; apenas presença pública da configuração predefinida, sem autenticação para verificar as configurações salvas e sem execução paga](https://apify.com/chronometrica/instagram-metrics-scraper/examples/instagram-post-metrics-tracker)
- [Pergunta sobre medições recorrentes, observada em 12 de agosto de 2026; data de publicação indisponível, uma pergunta pública e não uma evidência de demanda ou de uso do produto](https://www.reddit.com/r/n8n/comments/1iy4oco/n8n_competitor_analysis/)