Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Relatório Instagram Automático: Grátis ou Pago em 2026

Relatório Instagram Automático: Grátis ou Pago em 2026

Publicado por em


@CanalQb no YouTube


@CanalQb

Relatório Instagram Automático: Caminho Grátis e Pago em 2026


Leitura: ~14 min

Nota Técnica: Este tutorial abrange configurações na Meta for Developers, Google Apps Script e Looker Studio. Teste sempre em conta de desenvolvimento antes de aplicar em produção. O @CanalQb não se responsabiliza por restrições de conta causadas por uso inadequado da API do Instagram.

Resumo do conteúdo

TL;DR

  • Caminho gratuito: Meta Graph API + Google Apps Script + Looker Studio — zero custo, mas exige ~2h de configuração técnica e uma conta Instagram Business vinculada ao Facebook.
  • Caminho pago: Porter Metrics ou Coupler.io conectam em menos de 15 minutos, atualizam automaticamente e eliminam 100% da parte técnica — ideal para agências e times.
  • Claude como analista: Com os dados no Sheets ou Looker Studio, prompts específicos transformam métricas brutas em relatórios executivos, diagnósticos e planos de ação concretos.

Conclusão: A escolha entre grátis e pago depende do seu tempo disponível, não do seu orçamento. Ambos chegam ao mesmo destino — a diferença está em quanto você quer colocar a mão na massa.

Você passa horas todo mês copiando números do painel do Instagram para uma planilha. Seguidores hoje, alcance da semana passada, taxa de engajamento do último post — tudo na mão, tudo lento, tudo com risco de erro humano. E no final, o relatório ainda não responde a pergunta que realmente importa: o que preciso mudar para crescer?

Aqui no @CanalQb testamos os dois caminhos — o gratuito e o pago — e neste guia você vai montar do zero um pipeline completo que coleta dados do Instagram, organiza no Google Sheets, visualiza no Looker Studio e ainda usa o Claude para transformar números em decisões. O detalhe que a maioria ignora: a diferença entre pago e gratuito não é o resultado final — é o tempo que você investe para chegar lá.

Open Loop — o que você vai resolver até o final deste post: Existe uma configuração específica no Apps Script que 9 em cada 10 tutoriais erram e que faz o script parar de funcionar depois de 7 dias. Vamos cobrir exatamente isso na seção de automação gratuita.

Como funciona o fluxo completo Instagram → Relatório automático?

O fluxo é direto: os dados saem do Instagram, passam por uma camada de coleta, chegam ao Google Sheets como tabela estruturada, são visualizados no Looker Studio como dashboard e — a cereja do bolo — são analisados pelo Claude com prompts específicos que geram insights acionáveis. O ponto de entrada desse fluxo é onde os caminhos gratuito e pago divergem.

Qual a diferença real entre o caminho gratuito e o pago?

Antes de entrar nos passos técnicos, entenda o que cada abordagem entrega — e o que ela cobra de você em troca. Não se trata só de dinheiro: tempo de configuração, manutenção e limites técnicos fazem parte da equação.

GRATUITO

Meta Graph API + Apps Script

  • Custo zero (API gratuita)
  • Controle total sobre os dados
  • Atualização automática via trigger
  • Funciona com 1 conta Instagram
  • Exige ~2h de configuração inicial
  • Token de acesso expira a cada 60 dias
  • Limite de 200 chamadas/hora na API
  • Sem suporte — você resolve os bugs

Como configurar o caminho pago (Porter Metrics, Coupler.io ou Supermetrics)?

Se você gerencia múltiplas contas ou precisa que o sistema funcione desde o primeiro dia sem falhas, o caminho pago é a escolha certa. Aqui no @CanalQb usamos o Porter Metrics para clientes de agência — e a diferença de tempo de setup é absurda.

Ferramenta Plano gratuito Preço entrada Destaque Melhor para
Porter Metrics Trial 14 dias US$ 15/mês Conector nativo Looker Studio Agências e freelancers
Coupler.io Plano grátis limitado US$ 19/mês Multi-destino (Sheets, BigQuery) Times de marketing
Supermetrics Sem plano grátis US$ 29/mês Mais fontes de dados (50+) Empresas e relatórios complexos

Criar conta e conectar Instagram Business

Acesse portermetrics.com (ou coupler.io), crie sua conta e clique em "Add Data Source". Selecione Instagram e autorize via Facebook Login — você precisará ser administrador da página do Facebook vinculada ao perfil Instagram Business.

Escolher as métricas e o destino

Selecione as métricas desejadas: seguidores, alcance, impressões, engajamento, curtidas, comentários, salvamentos e cliques no link. Defina o destino como Google Sheets e escolha a planilha de destino (ou crie uma nova automaticamente).

Configurar atualização automática

Defina a frequência de atualização: horária para acompanhamento em tempo real, ou diária para relatórios de performance. O Porter atualiza via webhook direto no Sheets — nenhuma ação manual necessária após a configuração.

Conectar Google Sheets ao Looker Studio

Acesse lookerstudio.google.com, clique em "Criar → Relatório", selecione "Google Sheets" como fonte, escolha sua planilha e confirme. Em menos de 5 minutos seu dashboard já exibe os dados do Instagram em gráficos interativos.

Como configurar o caminho gratuito com Meta Graph API e Apps Script?

Esse é o caminho que a maioria desiste na metade — não porque é difícil, mas porque os tutoriais pulam a parte mais importante: a renovação do token de acesso. Vamos resolver isso de uma vez.

Requisito obrigatório: Você precisa de uma conta Instagram Business (não conta pessoal, não criador de conteúdo) vinculada a uma Página do Facebook da qual você é administrador. Sem isso, a Graph API não retorna métricas.

Passo 1 — Criar o app na Meta for Developers

Acessar o Meta for Developers e criar o app

Acesse developers.facebook.com e clique em "Meus Apps → Criar App". Selecione o tipo "Outro" e depois "Business". Dê um nome ao app (ex: "Instagram Analytics CanalQb") e escolha sua conta de negócios vinculada.

Adicionar o produto Instagram Graph API

No painel do app, clique em "Adicionar Produto" e selecione Instagram Graph API. Em seguida, vá em "Configurações → Básico" e anote o App ID e o App Secret — você vai precisar deles nos próximos passos.

Gerar o token de acesso de longa duração

Use o Graph API Explorer (disponível no painel do Meta for Developers) para gerar um User Token com as permissões instagram_basic, instagram_manage_insights e pages_read_engagement. Em seguida, troque o token de curta duração (2h) por um de longa duração (60 dias) fazendo uma chamada GET:

https://graph.facebook.com/v19.0/oauth/access_token?
  grant_type=fb_exchange_token&
  client_id={SEU_APP_ID}&
  client_secret={SEU_APP_SECRET}&
  fb_exchange_token={TOKEN_CURTA_DURACAO}

Salve o token de longa duração retornado. Ele dura 60 dias e precisa ser renovado manualmente — ou automaticamente com o script que veremos a seguir.

Passo 2 — Criar o script no Google Apps Script

Abrir o Apps Script na planilha de destino

Crie uma planilha no Google Sheets com os cabeçalhos: Data, Seguidores, Alcance, Impressões, Curtidas, Comentários, Salvamentos, Taxa de Engajamento. Em seguida, vá em "Extensões → Apps Script" para abrir o editor de código.

// @CanalQb — Script Instagram Graph API → Google Sheets
// Master Rules v8.1 | Renovação automática de token incluída

(function() {
  'use strict';

  // ====================================================
  // CONFIGURAÇÕES — preencha antes de executar
  // ====================================================
  var CONFIG = {
    TOKEN: 'SEU_TOKEN_LONGA_DURACAO_AQUI',
    APP_ID: 'SEU_APP_ID',
    APP_SECRET: 'SEU_APP_SECRET',
    INSTAGRAM_ACCOUNT_ID: 'SEU_INSTAGRAM_ACCOUNT_ID', // Obtido via API
    SHEET_NAME: 'Metricas_Instagram', // Nome da aba na planilha
    DIAS_ALERTA_TOKEN: 10 // Alerta por email X dias antes do token expirar
  };

  // ====================================================
  // FUNÇÃO PRINCIPAL — coletaDados()
  // Execute manualmente primeiro para testar
  // ====================================================
  function coletaDados() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName(CONFIG.SHEET_NAME);

    if (!sheet) {
      sheet = ss.insertSheet(CONFIG.SHEET_NAME);
      sheet.appendRow([
        'Data','Seguidores','Alcance 7d',
        'Impressões 7d','Curtidas','Comentários',
        'Salvamentos','Taxa Engajamento (%)'
      ]);
    }

    try {
      var baseUrl = 'https://graph.facebook.com/v19.0/';

      // Buscar seguidores atuais
      var profileUrl = baseUrl + CONFIG.INSTAGRAM_ACCOUNT_ID +
        '?fields=followers_count&access_token=' + CONFIG.TOKEN;
      var profileResp = UrlFetchApp.fetch(profileUrl);
      var profileData = JSON.parse(profileResp.getContentText());
      var seguidores = profileData.followers_count || 0;

      // Buscar métricas de insight (últimos 7 dias)
      var insightUrl = baseUrl + CONFIG.INSTAGRAM_ACCOUNT_ID +
        '/insights?metric=reach,impressions&period=week' +
        '&access_token=' + CONFIG.TOKEN;
      var insightResp = UrlFetchApp.fetch(insightUrl);
      var insightData = JSON.parse(insightResp.getContentText());

      var alcance = 0, impressoes = 0;
      if (insightData.data) {
        insightData.data.forEach(function(m) {
          var val = m.values && m.values[0] ? m.values[0].value : 0;
          if (m.name === 'reach') alcance = val;
          if (m.name === 'impressions') impressoes = val;
        });
      }

      // Buscar curtidas e comentários dos últimos 10 posts
      var mediaUrl = baseUrl + CONFIG.INSTAGRAM_ACCOUNT_ID +
        '/media?fields=like_count,comments_count,saved&limit=10' +
        '&access_token=' + CONFIG.TOKEN;
      var mediaResp = UrlFetchApp.fetch(mediaUrl);
      var mediaData = JSON.parse(mediaResp.getContentText());

      var totalCurtidas = 0, totalComentarios = 0, totalSalvamentos = 0;
      if (mediaData.data) {
        mediaData.data.forEach(function(post) {
          totalCurtidas += post.like_count || 0;
          totalComentarios += post.comments_count || 0;
          totalSalvamentos += post.saved || 0;
        });
      }

      var engajamento = seguidores > 0
        ? (((totalCurtidas + totalComentarios) / (seguidores * 10)) * 100).toFixed(2)
        : '0.00';

      // Registrar na planilha
      sheet.appendRow([
        new Date(),
        seguidores,
        alcance,
        impressoes,
        totalCurtidas,
        totalComentarios,
        totalSalvamentos,
        engajamento
      ]);

      Logger.log('Dados coletados com sucesso: ' + new Date());

    } catch (e) {
      Logger.log('ERRO ao coletar dados: ' + e.message);
      // Notifica por email em caso de falha
      MailApp.sendEmail(
        Session.getActiveUser().getEmail(),
        '[CanalQb] Erro no script Instagram',
        'Falha na coleta: ' + e.message
      );
    }
  }

  // ====================================================
  // RENOVAÇÃO AUTOMÁTICA DO TOKEN (resolve o problema
  // dos 60 dias que a maioria dos tutoriais ignora)
  // ====================================================
  function renovarToken() {
    var url = 'https://graph.facebook.com/v19.0/oauth/access_token?' +
      'grant_type=fb_exchange_token&' +
      'client_id=' + CONFIG.APP_ID + '&' +
      'client_secret=' + CONFIG.APP_SECRET + '&' +
      'fb_exchange_token=' + CONFIG.TOKEN;

    try {
      var resp = UrlFetchApp.fetch(url);
      var data = JSON.parse(resp.getContentText());
      if (data.access_token) {
        // Salva o novo token nas propriedades do script
        PropertiesService.getScriptProperties()
          .setProperty('INSTAGRAM_TOKEN', data.access_token);
        Logger.log('Token renovado com sucesso!');
      }
    } catch (e) {
      Logger.log('Erro ao renovar token: ' + e.message);
    }
  }

  // ====================================================
  // CONFIGURAR TRIGGERS AUTOMÁTICOS
  // Execute esta função UMA VEZ para ativar a automação
  // ====================================================
  function configurarTriggers() {
    // Remove triggers existentes para evitar duplicação
    ScriptApp.getProjectTriggers().forEach(function(t) {
      ScriptApp.deleteTrigger(t);
    });

    // Coleta diária às 8h
    ScriptApp.newTrigger('coletaDados')
      .timeBased()
      .everyDays(1)
      .atHour(8)
      .create();

    // Renovação do token a cada 45 dias
    ScriptApp.newTrigger('renovarToken')
      .timeBased()
      .everyDays(45)
      .atHour(6)
      .create();

    Logger.log('Triggers configurados com sucesso!');
  }

  // Expõe as funções globalmente para o Apps Script
  this.coletaDados = coletaDados;
  this.renovarToken = renovarToken;
  this.configurarTriggers = configurarTriggers;

}).call(this);

Aqui está o detalhe que a maioria ignora: a função configurarTriggers() inclui a renovação automática do token a cada 45 dias. Execute-a uma única vez no início — e o script nunca vai parar por token expirado.

Encontrar o seu Instagram Account ID via API

Antes de executar o script, você precisa do ID numérico da sua conta Instagram Business. Faça a chamada abaixo no Graph API Explorer com seu token ativo:

# Substitua {PAGE_ID} pelo ID da sua Página do Facebook
GET https://graph.facebook.com/v19.0/{PAGE_ID}?fields=instagram_business_account&access_token={TOKEN}

# Resposta esperada:
{ "instagram_business_account": { "id": "17841XXXXXXXXX" }, "id": "PAGE_ID" }

# O valor "id" dentro de instagram_business_account é o seu INSTAGRAM_ACCOUNT_ID

Como criar o dashboard no Looker Studio com os dados do Sheets?

Com o Sheets alimentado — seja pela rota paga ou pela API — o Looker Studio transforma os dados em um painel visual interativo que qualquer pessoa consegue interpretar, sem precisar abrir a planilha.

Criar o relatório e conectar a fonte

Acesse lookerstudio.google.com, clique em "Criar → Relatório" e selecione Google Sheets como conector. Escolha a planilha com os dados do Instagram, marque a opção "Usar linha de cabeçalho como nomes de campo" e clique em "Adicionar ao relatório".

Adicionar os gráficos essenciais

Os quatro elementos que não podem faltar em um dashboard de Instagram: (1) Scorecard de seguidores com comparação ao período anterior, (2) Série temporal de alcance nos últimos 30 dias, (3) Gráfico de barras de engajamento por post e (4) Tabela de evolução semanal com todas as métricas. Esses quatro elementos respondem 80% das perguntas de um relatório mensal.

Configurar atualização automática de dados

No Looker Studio, clique em "Recurso → Gerenciar fontes de dados → Editar" e ative a opção "Atualização automática de dados". Defina o intervalo para 4 horas. Com isso, sempre que alguém abrir o relatório, os dados estarão atualizados sem intervenção manual.

Como automatizar postagens no Instagram via API?

Relatório montado, dashboard funcionando. Agora o próximo nível: programar posts automaticamente via Meta Graph API. Isso é especialmente útil para times que gerenciam múltiplas contas ou precisam manter frequência de publicação sem depender de ferramentas pagas como Buffer ou Later.

Aviso Financeiro e Técnico: A automação de postagem via API exige aprovação do app na Meta (modo Produção) e respeita os limites da plataforma. O uso inadequado pode resultar em restrição de conta. Este conteúdo é exclusivamente educacional. Consulte os termos da Meta Content Publishing API antes de implementar.

O fluxo de postagem via API funciona em duas etapas obrigatórias: primeiro você cria um container de mídia (envia a imagem/vídeo e a legenda), depois você publica o container. Não existe postagem direta em um único passo.

// @CanalQb — Automação de postagem Instagram via Apps Script
// Requer: app em modo Produção + permissão content_publishing

(function() {
  'use strict';

  var TOKEN = PropertiesService.getScriptProperties()
                .getProperty('INSTAGRAM_TOKEN') || 'SEU_TOKEN';
  var ACCOUNT_ID = 'SEU_INSTAGRAM_ACCOUNT_ID';
  var BASE = 'https://graph.facebook.com/v19.0/';

  // -------------------------------------------------------
  // ETAPA 1 — Criar o container de mídia
  // imagemUrl: URL pública da imagem (HTTPS obrigatório)
  // legenda: texto do post (máx. 2200 caracteres)
  // -------------------------------------------------------
  function criarContainer(imagemUrl, legenda) {
    var url = BASE + ACCOUNT_ID + '/media';
    var payload = {
      'image_url': imagemUrl,
      'caption': legenda,
      'access_token': TOKEN
    };

    var options = {
      'method': 'post',
      'payload': payload,
      'muteHttpExceptions': true
    };

    var resp = UrlFetchApp.fetch(url, options);
    var data = JSON.parse(resp.getContentText());

    if (data.id) {
      Logger.log('Container criado: ' + data.id);
      return data.id;
    } else {
      Logger.log('Erro ao criar container: ' + JSON.stringify(data));
      return null;
    }
  }

  // -------------------------------------------------------
  // ETAPA 2 — Publicar o container (aguardar 30s após criação)
  // -------------------------------------------------------
  function publicarContainer(containerId) {
    // Aguardar processamento da mídia
    Utilities.sleep(30000);

    var url = BASE + ACCOUNT_ID + '/media_publish';
    var payload = {
      'creation_id': containerId,
      'access_token': TOKEN
    };

    var options = {
      'method': 'post',
      'payload': payload,
      'muteHttpExceptions': true
    };

    var resp = UrlFetchApp.fetch(url, options);
    var data = JSON.parse(resp.getContentText());

    if (data.id) {
      Logger.log('Post publicado com ID: ' + data.id);
      return data.id;
    } else {
      Logger.log('Erro ao publicar: ' + JSON.stringify(data));
      return null;
    }
  }

  // -------------------------------------------------------
  // FUNÇÃO PRINCIPAL — lê fila de posts de uma aba do Sheets
  // Estrutura da aba "Fila_Posts":
  // Coluna A: URL da imagem | B: Legenda | C: Status | D: Data agendada
  // -------------------------------------------------------
  function processarFila() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Fila_Posts');
    if (!sheet) return;

    var dados = sheet.getDataRange().getValues();
    var agora = new Date();

    for (var i = 1; i < dados.length; i++) {
      var imagemUrl   = dados[i][0];
      var legenda     = dados[i][1];
      var status      = dados[i][2];
      var dataAgendada = new Date(dados[i][3]);

      // Processa apenas posts com status "pendente" e data chegada
      if (status === 'pendente' && dataAgendada <= agora) {
        var containerId = criarContainer(imagemUrl, legenda);

        if (containerId) {
          var postId = publicarContainer(containerId);
          if (postId) {
            sheet.getRange(i + 1, 3).setValue('publicado');
            sheet.getRange(i + 1, 5).setValue(new Date()); // data de publicação
          } else {
            sheet.getRange(i + 1, 3).setValue('erro_publicacao');
          }
        } else {
          sheet.getRange(i + 1, 3).setValue('erro_container');
        }
      }
    }
  }

  this.criarContainer = criarContainer;
  this.publicarContainer = publicarContainer;
  this.processarFila = processarFila;

}).call(this);

Para ativar o agendamento automático, crie um trigger no Apps Script que execute processarFila() a cada hora. A planilha "Fila_Posts" funciona como sua fila de publicação: basta preencher URL da imagem, legenda, "pendente" e a data/hora desejada.

Como usar o Claude para analisar as métricas do Instagram com prompts específicos?

Dados no Sheets e dashboard no Looker Studio — agora vem o diferencial real: usar o Claude para transformar números em diagnósticos e planos de ação. Exporte seus dados como CSV ou copie direto da planilha e use os prompts abaixo.

Prompt de diagnóstico geral

"Usando os dados do conector Porter Metrics, me dê as métricas do perfil @[seu_perfil] dos últimos 30 dias e, com base nelas, me diga exatamente o que preciso melhorar com foco em crescimento de seguidores orgânicos."

Substitua [seu_perfil] pelo arroba da sua conta. Use quando quiser uma visão panorâmica com prioridades claras.

Prompt de análise de engajamento

"Aqui estão os dados de engajamento dos meus últimos 20 posts [cole os dados]. Identifique os 5 posts com melhor performance, o padrão em comum entre eles (formato, horário, tema, comprimento da legenda) e recomende uma estratégia de conteúdo baseada nesses padrões."

Cole os dados diretamente do Google Sheets (selecione e copie as células). O Claude consegue interpretar tabelas coladas em texto.

Prompt de relatório executivo mensal

"Com base nos dados do mês de [mês/ano] que estão nessa planilha [cole ou anexe o CSV], crie um relatório executivo para apresentar ao cliente. Inclua: resumo de performance, variações em relação ao mês anterior, top 3 conteúdos, diagnóstico dos pontos fracos e 3 recomendações estratégicas para o próximo mês."

Ideal para gestores de social media e agências que precisam de relatórios mensais formatados para apresentação.

Prompt de análise de horários

"Analise essa tabela com data, hora de publicação e taxa de engajamento de cada post [cole os dados]. Identifique os 3 melhores horários para postar com foco em {maximizar alcance} e sugira uma grade de publicação semanal com justificativa baseada nos dados."

Troque {maximizar alcance} pelo seu objetivo: engajamento, salvamentos, cliques no link ou crescimento de seguidores.

Prompt de diagnóstico de crescimento parado

"Minha conta está com crescimento estagnado há [X semanas]. Aqui estão as métricas das últimas 8 semanas [cole os dados]. Faça um diagnóstico completo identificando se o problema está no alcance, na taxa de conversão de novos seguidores ou na retenção, e apresente um plano de ação com 5 ações específicas para os próximos 30 dias."

Um dos prompts mais úteis para contas que publicam consistentemente mas não crescem. O Claude consegue distinguir problema de alcance versus problema de conversão.

Veja também como aplicar essas análises em automações avançadas com Google Sheets e integrar com outros canais de marketing digital automatizado.

Perguntas Frequentes

Fontes e Referências


Gostou? Assista ao vídeo completo com a demonstração prática no @CanalQb no YouTube e deixe sua dúvida nos comentários.

Feito com Master Rules Claude v8.1 | Conteúdo gerado com assistência de IA — revisado e validado pela equipe @CanalQb conforme Lei Felca nº 15.211/2025.


Marcadores: automação dashboard google-sheets IA instagram looker-studio marketing-digital meta-api relatório

© junho 03, 2026 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários