Se você chegou até aqui, provavelmente já se deparou com aquele frustrante ícone de imagem quebrada no seu perfil do GitHub onde deveria estar aparecendo suas estatísticas lindamente renderizadas. Eu sei, é irritante!
Mas calma, tenho uma boa notícia: existe uma solução permanente, gratuita e muito mais poderosa do que simplesmente esperar o serviço voltar. Neste artigo, vou te mostrar como implementar um sistema automatizado que gera suas métricas do GitHub usando GitHub Actions, garantindo que seu perfil esteja sempre atualizado e funcionando perfeitamente.
📉 O Problema: Por Que o GitHub Readme Stats Caiu?
Antes de partirmos para a solução, é importante entender o que realmente aconteceu com o github-readme-stats, aquele serviço querido que todos usávamos.
A História Por Trás do Erro 503
O GitHub Readme Stats é um projeto open-source extremamente popular que gerava cards dinâmicos de estatísticas do GitHub. Durante muito tempo, ele funcionou perfeitamente hospedado na Vercel com um plano enterprise gratuito fornecido como patrocínio para projetos open-source.
Mas o que deu errado?
Em abril de 2024, a Vercel descontinuou esse patrocínio. O projeto foi rebaixado para o plano "Hobby" gratuito, que possui limites de uso bem mais restritos. Com milhões de desenvolvedores usando o serviço público, esses limites são ultrapassados rapidamente, resultando no temido erro:
503 SERVICE_UNAVAILABLE
DEPLOYMENT_PAUSED
"This Deployment is paused by the owner."
Por Que Isso Não Vai Se Resolver Sozinho?
Muita gente pensa que é apenas uma "queda temporária", mas a verdade é mais complexa:
- Limites de recursos: O plano gratuito da Vercel não suporta o tráfego massivo gerado pelo uso global
- Custos insustentáveis: Manter o serviço funcionando exigiria que o mantenedor arcasse com custos significativos
- Problema estrutural: Não é um bug, mas sim uma incompatibilidade entre demanda e recursos disponíveis
O Impacto na Comunidade
- Milhares de perfis do GitHub exibindo imagens quebradas
- Perda da funcionalidade de showcasing de habilidades
- Frustração generalizada entre desenvolvedores
- Dezenas de issues duplicadas reportando o mesmo problema
A Solução Proposta: GitHub Actions + lowlighter/metrics
Depois de analisar as alternativas disponíveis, a solução mais robusta e confiável é migrar para o lowlighter/metrics executando via GitHub Actions. Vamos entender por quê.
Por Que Esta Solução é Superior?
1. Totalmente Gratuita e Independente
- Roda na infraestrutura do próprio GitHub
- Sem depender de serviços externos que podem cair
- Zero custos de hospedagem
2. Extremamente Personalizável
- Mais de 40 plugins disponíveis
- Mais de 300 opções de configuração
- Templates variados: classic, terminal, markdown, etc.
3. Mais Poderosa
Enquanto o GitHub Readme Stats oferece apenas cards básicos, o lowlighter/metrics fornece:
- Análise de linguagens com detalhes avançados
- Gráficos de linhas de código
- Calendários isométricos de commits
- Análise de hábitos de codificação
- Integração com WakaTime, LeetCode e outras plataformas
4. Confiável e Estável
- Execução controlada por você
- Sem rate limits externos
- SVG gerado e commitado no seu repositório
- Sempre disponível, mesmo offline
🛠️ Tutorial Passo a Passo Completo
Agora vamos colocar a mão na massa! Siga este guia detalhado para implementar suas métricas automatizadas.
Pré-requisitos
Antes de começar, certifique-se de que você tem:
- ✅ Uma conta no GitHub (Sim, eu sei, pode parecer besta essa confirmação rsrs)
- ✅ Um repositório para seu perfil (geralmente
seu-usuario/seu-usuario) - ✅ Conhecimento básico de Git e GitHub
Passo 1: Criar o Personal Access Token (PAT)
O token é necessário para que o GitHub Actions possa acessar seus dados de forma segura.
-
Acesse as configurações de desenvolvedor:
- Vá para github.com/settings/tokens
- Ou navegue:
Settings→Developer settings→Personal access tokens→Tokens (classic)
-
Gere um novo token:
- Clique em "Generate new token" → "Generate new token (classic)"
- Dê um nome descritivo, como
METRICS_TOKEN
Configure os escopos necessários:
Para funcionalidades básicas, selecione:
- ✅
public_repo- para acessar repositórios públicos - ✅
read:user- para dados do usuário
Se você quiser métricas mais avançadas, adicione:
- ✅
read:org- para métricas de organizações (se aplicável) - ✅
repo- para incluir repositórios privados
-
Gere e copie o token:
- Clique em "Generate token"
- IMPORTANTE: Copie o token AGORA! Você não poderá vê-lo novamente
- O formato será algo como:
ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Passo 2: Adicionar o Token como Secret no Repositório
Agora vamos armazenar o token de forma segura no seu repositório.
-
Navegue até o repositório do seu perfil:
- Geralmente é
https://github.com/seu-usuario/seu-usuario
- Geralmente é
-
Acesse as configurações de Secrets:
- Clique em "Settings" (No menu superior)
- No menu lateral: "Secrets and variables" → "Actions"
-
Crie um novo secret:
- Clique em "New repository secret"
-
Name:
METRICS_TOKEN - Value: Cole o token que você copiou no Passo 1
- Clique em "Add secret"
Pronto! Seu token está seguro e pronto para ser usado.
Passo 3: Criar o Arquivo de Workflow
Agora vamos criar a automação que vai gerar suas métricas.
-
No seu repositório, crie a estrutura de pastas:
- Crie a pasta
.github/workflows/na raiz do repositório - Se estiver usando a interface web, você pode fazer isso ao criar o arquivo
- Crie a pasta
-
Crie o arquivo
metrics.yml:- Caminho completo:
.github/workflows/metrics.yml
- Caminho completo:
Adicione o seguinte conteúdo:
name: GitHub Metrics
on:
# Permite execução manual do workflow
workflow_dispatch:
# Executa automaticamente todo dia às 6h da manhã (UTC)
schedule:
- cron: "0 6 * * *"
jobs:
metrics:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: lowlighter/metrics@latest
with:
# Token de autenticação (obrigatório)
token: ${{ secrets.METRICS_TOKEN }}
# Seu usuário do GitHub
user: seu-usuario-aqui
# Nome do arquivo que será gerado
filename: assets/metrics.svg
# Seções base a serem incluídas
base: header, activity, community, repositories, metadata
# Plugin de linguagens de programação
plugin_languages: yes
plugin_languages_sections: most-used, recently-used
plugin_languages_details: bytes-size, percentage
plugin_languages_limit: 8
# Plugin de linhas de código
plugin_lines: yes
** IMPORTANTE: Substitua
seu-usuario-aqui** pelo seu username do GitHub!-
Commit o arquivo:
- Se estiver na interface web, clique em "Commit changes"
- Se estiver localmente:
git add .github/workflows/metrics.yml && git commit -m "feat: adiciona GitHub Metrics workflow" && git push
Passo 4: Entender a Configuração do Workflow
Vamos destrinchar cada parte do workflow para você entender exatamente o que está acontecendo.
Trigger Events (Eventos de Disparo)
on:
workflow_dispatch:
schedule:
- cron: "0 6 * * *"
-
workflow_dispatch: Permite executar o workflow manualmente através da interface do GitHub -
schedule: Agenda execuções automáticas -
cron: "0 6 * * *": Sintaxe cron que significa:-
0= minuto 0 -
6= hora 6 (UTC) -
* * *= todos os dias, todos os meses, todos os dias da semana
-
Dica: Para converter para seu fuso horário local, use crontab.guru
Permissões
permissions:
contents: write
Esta linha é crítica! Ela concede ao workflow permissão para fazer commit dos arquivos gerados de volta ao repositório. Sem isso, o workflow falhará.
Configurações Básicas
token: ${{ secrets.METRICS_TOKEN }}
user: seu-usuario-aqui
filename: assets/metrics.svg
-
token: Referência ao secret que criamos (nunca exponha o token diretamente!) -
user: Seu username do GitHub -
filename: Onde o SVG será salvo (cria a pasta automaticamente)
Base Sections (Seções Base)
base: header, activity, community, repositories, metadata
Define quais informações básicas serão exibidas:
- header: Cabeçalho com seu nome e avatar
- activity: Nível de atividade e contribuições
- community: Pull requests, issues, reviews
- repositories: Estatísticas dos seus repositórios
- metadata: Informações sobre quando foi gerado
Plugin: Languages (Linguagens)
plugin_languages: yes
plugin_languages_sections: most-used, recently-used
plugin_languages_details: bytes-size, percentage
plugin_languages_limit: 8
-
most-used: Mostra suas linguagens mais utilizadas historicamente -
recently-used: Linguagens usadas recentemente -
bytes-size, percentage: Exibe o tamanho em bytes e percentual -
limit: 8: Mostra no máximo 8 linguagens
Plugin: Lines (Linhas de Código)
plugin_lines: yes
Gera estatísticas sobre linhas de código adicionadas e removidas. Simples e direto!
Passo 5: Executar e Testar
Agora vamos rodar o workflow pela primeira vez!
-
Navegue até a aba Actions do seu repositório:
- URL:
https://github.com/seu-usuario/seu-usuario/actions
- URL:
-
Encontre o workflow "GitHub Metrics":
- Ele deve aparecer na lista de workflows disponíveis
-
Execute manualmente:
- Clique no workflow "GitHub Metrics"
- Clique no botão "Run workflow" (à direita)
- Mantenha a branch padrão selecionada
- Clique em "Run workflow" (verde)
-
Acompanhe a execução:
- Aguarde alguns segundos e recarregue a página
- Clique na execução que apareceu
- Clique em "metrics" para ver os detalhes
- Acompanhe o log em tempo real
-
Verificar o resultado:
- Se tudo correr bem, você verá um ✅ verde
- O arquivo
assets/metrics.svgserá criado no seu repositório - Verifique acessando:
https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8yjffjm1uwfulw9il5g.png
Passo 6: Adicionar o SVG ao README
Última etapa: vamos exibir suas métricas no README!
Abra o arquivo
README.mddo seu repositórioAdicione a imagem usando Markdown:
## 📊 Minhas Estatísticas do GitHub

Ou, para garantir que sempre mostre a versão mais recente:
## 📊 Minhas Estatísticas do GitHub

- Commit e push das alterações:
git add README.md
git commit -m "docs: adiciona métricas do GitHub ao README"
git push
- Admire o resultado!
Acesse seu perfil e veja suas métricas lindamente renderizadas!
Customizações e Plugins Avançados
Agora que você tem o básico funcionando, que tal turbinar suas métricas? O lowlighter/metrics oferece uma infinidade de opções!
Plugins Populares para Experimentar
1. Calendário Isométrico de Commits
plugin_isocalendar: yes
plugin_isocalendar_duration: half-year
Cria um calendário 3D mostrando sua atividade de commits.
2. Hábitos de Codificação
plugin_habits: yes
plugin_habits_charts: yes
plugin_habits_days: 14
plugin_habits_facts: yes
plugin_habits_from: 200
Analisa seus padrões: horários preferidos, dias mais produtivos, etc.
3. Contribuições Notáveis
plugin_notable: yes
plugin_notable_filter: stars:>50
Destaca repositórios onde você contribuiu que têm mais de 50 stars.
4. Gráfico de Stargazers
plugin_stargazers: yes
plugin_stargazers_charts: yes
plugin_stargazers_charts_type: chartist
Mostra a evolução de stars nos seus repositórios.
5. Integração com WakaTime
plugin_wakatime: yes
plugin_wakatime_token: ${{ secrets.WAKATIME_TOKEN }}
plugin_wakatime_days: 7
plugin_wakatime_sections: time, projects, languages
Exibe estatísticas detalhadas de tempo de codificação do WakaTime.
Templates Visuais Diferentes
Você pode mudar completamente a aparência usando templates:
Terminal Style
template: terminal
Classic (padrão)
template: classic
Repository Style
template: repository
Temas Pré-definidos
config_theme: dark
# Opções: default, dark, auto
Ou use temas personalizados:
config_theme: github-dark
# Outras opções: github, monokai, solarized, etc.
Exemplo de Configuração Avançada
Aqui está um exemplo completo com vários plugins:
name: GitHub Metrics Advanced
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
jobs:
metrics:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: lowlighter/metrics@latest
with:
token: ${{ secrets.METRICS_TOKEN }}
user: seu-usuario
filename: assets/metrics-advanced.svg
# Configurações gerais
base: header, activity, community, repositories, metadata
config_timezone: America/Sao_Paulo
config_theme: dark
# Plugin de linguagens
plugin_languages: yes
plugin_languages_sections: most-used, recently-used
plugin_languages_details: bytes-size, percentage
plugin_languages_limit: 8
plugin_languages_indepth: yes
# Plugin de linhas de código
plugin_lines: yes
# Calendário isométrico
plugin_isocalendar: yes
plugin_isocalendar_duration: half-year
# Hábitos
plugin_habits: yes
plugin_habits_charts: yes
plugin_habits_days: 14
plugin_habits_facts: yes
# Contribuições notáveis
plugin_notable: yes
plugin_notable_filter: stars:>100
# Stargazers
plugin_stargazers: yes
plugin_stargazers_charts: yes
🔧 Troubleshooting: Problemas Comuns e Soluções
Encontrou algum problema? Vamos resolver! Aqui estão os erros mais comuns e como corrigi-los.
❌ Erro: "Resource not accessible by integration"
Causa: O workflow não tem permissão para fazer commit.
Solução:
- Adicione
permissions: contents: writeao job - Verifique se as Actions têm permissão de escrita:
-
Settings→Actions→General - Em "Workflow permissions", selecione "Read and write permissions"
-
❌ Erro: "Bad credentials" ou "401 Unauthorized"
Causa: Problema com o token de acesso.
Soluções:
- Verifique se o secret
METRICS_TOKENestá configurado corretamente - Certifique-se de que o token não expirou
- Confirme que o token tem os escopos necessários
- Gere um novo token se necessário
❌ Erro: Plugin não funciona ou exibe "Skipped"
Causa: O token não tem as permissões (scopes) necessárias para aquele plugin.
Solução:
- Verifique a documentação do plugin para ver quais scopes são necessários
- Crie um novo token com os scopes corretos
- Atualize o secret
METRICS_TOKEN
❌ O SVG não aparece no README
Causas possíveis:
- Caminho incorreto no Markdown
- O arquivo ainda não foi gerado
Soluções:
- Verifique se o caminho está correto:
./assets/metrics.svg - Ou use o caminho completo:
https://upload.wikimedia.org/wikipedia/commons/1/14/Cryogenic_electron_microscopy_workflow.svg - Certifique-se de que o workflow rodou com sucesso
- Aguarde alguns minutos para o cache do GitHub atualizar
❌ Workflow executou mas não gerou o arquivo
Causa: Permissões ou configuração incorreta.
Soluções:
- Verifique os logs do workflow para mensagens de erro específicas
- Confirme que
permissions: contents: writeestá presente - Verifique se o
filenameestá correto - Certifique-se de que a pasta de destino não está em
.gitignore
Dica Profissional: Como Debugar
Para facilitar o debugging, adicione esta configuração ao workflow:
config_output: svg
debug: yes
Isso gerará logs mais detalhados mostrando exatamente o que está acontecendo em cada etapa.
Ainda com Problemas?
- Consulte a documentação oficial: github.com/lowlighter/metrics
- Use o playground interativo: metrics.lecoq.io para testar configurações
- Verifique as issues: Procure por problemas similares nas issues do projeto
- Peça ajuda: Crie uma issue detalhando seu problema com logs e configurações
🎯 Conclusão e Próximos Passos
Parabéns! Você acabou de implementar uma solução profissional, confiável e totalmente automatizada para exibir suas estatísticas do GitHub.
Vantagens que Você Conquistou
✅ Independência total - Não depende mais de serviços externos
✅ Confiabilidade garantida - Suas métricas sempre estarão disponíveis
✅ Personalização infinita - Mais de 40 plugins ao seu dispor
✅ Gratuito para sempre - Sem custos de hospedagem
✅ Controle total - Você decide quando e como atualizar
✅ Profissionalismo - Um perfil que impressiona recrutadores
Sugestões de Próximos Passos
-
Experimente diferentes plugins
- Teste o
plugin_habitspara mostrar seus padrões de codificação - Adicione
plugin_isocalendarpara um visual impactante - Se usa WakaTime, integre com
plugin_wakatime
- Teste o
-
Crie múltiplas versões
- Gere um SVG para modo claro e outro para modo escuro
- Crie versões especializadas (só linguagens, só atividade, etc.)
-
Otimize o agendamento
- Ajuste o cron para atualizar em horários estratégicos
- Considere executar semanalmente se diário for excessivo
-
Compartilhe e inspire
- Mostre seu perfil renovado nas redes sociais
- Ajude outros devs compartilhando este artigo
-
Explore a documentação
- Visite metrics.lecoq.io para descobrir todas as possibilidades
- Leia os exemplos oficiais para inspiração
Uma Nota Final sobre Open Source ❤️
Tanto o github-readme-stats quanto o lowlighter/metrics são projetos open-source mantidos pela comunidade. Se você achar essas ferramentas úteis, considere:
- ⭐ Dar uma estrela no repositório
- 💬 Reportar bugs ou sugerir melhorias
- 🤝 Contribuir com código ou documentação
- ☕ Apoiar os mantenedores se possível
O open source só funciona porque pessoas dedicam seu tempo para criar ferramentas incríveis gratuitamente. Vamos retribuir sempre que possível!
📚 Recursos Adicionais
- Documentação oficial: github.com/lowlighter/metrics
- Playground interativo: metrics.lecoq.io
- Exemplos de uso: github.com/lowlighter/metrics/tree/examples
- GitHub Actions Docs: docs.github.com/actions
- Sintaxe Cron: crontab.guru
Gostou do artigo? Deixe um ❤️ e compartilhe com outros desenvolvedores que possam estar com o mesmo problema! Tem alguma dúvida ou sugestão? Comenta aqui embaixo!
Top comments (0)