morning-ai: Gerador de Relatório MorningAI
Visão geral de permissões: Coleta dados públicos do Reddit, Hacker News, GitHub, HuggingFace, arXiv e X/Twitter. Requer chaves de API opcionais configuradas em
.envou~/.config/morning-ai/.env. Escreve arquivos de relatório no diretório de trabalho atual. Veja Configuração para detalhes.
Monitore mais de 80 entidades de IA em 6 fontes. Colete atualizações das últimas 24 horas, pontue e deduplique-as, e gere um relatório diário estruturado em Markdown. Abrange 4 tipos: Produto (lançamentos de funcionalidades, versões), Modelo (novos modelos, pesos open-source), Benchmark (mudanças em rankings, artigos), Financiamento (rodadas, aquisições, marcos).
--intro — Introdução do Produto
Se o usuário passar --intro, exiba a introdução a seguir e pare (não prossiga para a coleta de dados):
MorningAI — Monitor de notícias diárias de IA que acompanha 80+ entidades em 6 fontes.
O que faz:
- Coleta atualizações do Reddit, Hacker News, GitHub, HuggingFace, arXiv e X/Twitter
- Pontua e deduplica itens em uma escala de 1 a 10 com verificação entre fontes
- Gera relatórios Markdown estruturados com 4 tipos de conteúdo: Produto, Modelo, Benchmark, Financiamento
- Opcional: imagens de infográfico (5 estilos visuais), resumos para mensagens (WeChat/Telegram/Slack), cópias para redes sociais (X/Xiaohongshu)
Fontes (todas gratuitas, sem necessidade de chaves de API para uso básico):
| Fonte | Método | Chave de API |
|---|---|---|
| JSON público | Não necessária | |
| Hacker News | API Algolia | Não necessária |
| GitHub | API REST | Opcional (GITHUB_TOKEN para limites de taxa mais altos) |
| HuggingFace | API pública | Não necessária |
| arXiv | API pública | Não necessária |
| X/Twitter | Pesquisa web | Não necessária |
Início rápido:
/morning-ai # Executa com padrões (Inglês, todos os tipos)
/morning-ai --lang zh # Relatório em Chinês
/morning-ai --depth deep # Coleta abrangente
/morning-ai --exclude Funding # Pular notícias de financiamento
Funcionalidades opcionais (requerem chaves de API):
- Imagens de infográfico: defina
IMAGE_GEN_PROVIDER+ chave de API do provedor - Cópia para redes sociais: defina
SOCIAL_ENABLED=true - Resumo para mensagens: defina
MESSAGE_ENABLED=true
Arquivo de configuração: ~/.config/morning-ai/.env — execute /morning-ai sem configuração para iniciar a configuração guiada.
Versão: 1.2.9 | GitHub | ClawHub
Após exibir a introdução, pare. Não prossiga para o Passo 0 ou coleta de dados.
Passo 0: Portão de Configuração (OBRIGATÓRIO — deve ser concluído antes de qualquer outro passo)
Execute este comando PRIMEIRO antes de fazer qualquer outra coisa:
if [ -f "$HOME/.config/morning-ai/.env" ] || [ -f ".claude/morning-ai.env" ] || [ -f ".env" ]; then echo "CONFIG_STATUS=READY"; else echo "CONFIG_STATUS=MISSING"; fi
Ramifique conforme a saída:
- Se a saída for
CONFIG_STATUS=READY— leia o arquivo de configuração, informe quais fontes estão ativas, então prossiga para o Passo 1. - Se a saída for
CONFIG_STATUS=MISSING— PARE. Você DEVE concluir a Primeira Configuração abaixo antes de prosseguir para o Passo 1.
Primeira Configuração (quando MISSING)
CRÍTICO: PARE AQUI. Você DEVE concluir todas as etapas de configuração abaixo interativamente com o usuário. NÃO execute o Passo 1 (coleta de dados) até que um arquivo de configuração exista e a verificação do portão retorne
READY. Executar a coleta de dados sem configuração produzirá resultados incompletos.
Guie o usuário pela configuração interativamente, aguardando a resposta dele em cada etapa:
- Boas-vindas — explique brevemente o que o morning-ai faz: monitora 80+ entidades de IA em 6 fontes (Reddit, Hacker News, GitHub, HuggingFace, arXiv, X/Twitter), gera relatórios diários pontuados
- Mostre o que funciona gratuitamente — 6 fontes (5 não precisam de chaves de API, 1 opcional):
- Reddit (JSON público), Hacker News (API Algolia), HuggingFace (API pública), arXiv (API pública), X/Twitter (pesquisa web)
- GitHub (API pública,
GITHUB_TOKENopcional para limites de taxa mais altos)
- Pergunte ao usuário se ele deseja ativar o GitHub com limites de taxa mais altos:
| Chave | Fonte | Onde obter |
|---|---|---|
GITHUB_TOKEN | Releases e repositórios do GitHub (limite de taxa mais alto) | https://github.com/settings/tokens |
- Pergunte sobre infográficos (opcional):
| Chave | Descrição |
|---|---|
IMAGE_GEN_PROVIDER | Provedor: gemini | minimax | none (padrão: none) |
IMAGE_STYLE | Estilo: classic | dark | glassmorphism | newspaper | tech |
GEMINI_API_KEY | Google Gemini/Imagen (https://aistudio.google.com/apikey) |
MINIMAX_API_KEY | MiniMax global(https://www.minimax.io) |
MINIMAX_API_KEY | MiniMax cn (https://platform.minimaxi.com) |
-
Pergunte sobre distribuição de conteúdo social (opcional):
- Ativar geração de conteúdo social? Defina
SOCIAL_ENABLED=true - Quais plataformas? X (Twitter), Xiaohongshu (Little Red Book), ou ambos
- Para configuração avançada de múltiplas contas/estilos, crie
~/.config/morning-ai/social_channels.json(vejaskills/gen-social/SKILL.mdpara o esquema). Para configuração rápida de canal único, basta definir as variáveis de ambienteSOCIAL_PLATFORM,SOCIAL_STYLEeSOCIAL_LANG.
- Ativar geração de conteúdo social? Defina
-
Pergunte sobre resumo por mensagem (opcional):
- Ativar resumo conciso para compartilhamento em plataformas de mensagens (WeChat, Telegram, Slack)?
- Se sim: defina
MESSAGE_ENABLED=true - Configurações opcionais:
MESSAGE_MIN_SCORE(padrão 5),MESSAGE_MAX_ITEMS(padrão 10),MESSAGE_LINKS(bottomouinline),MESSAGE_CATEGORY_BALANCE(padrão true, distribui espaços entre tipos de conteúdo)
-
Crie o arquivo de configuração — colete as chaves que o usuário fornecer e escreva-as em
~/.config/morning-ai/.envno formatoCHAVE=valor(uma por linha). Crie o diretório se necessário:mkdir -p ~/.config/morning-ai -
Confirme — mostre quantas fontes estão agora ativas (N/9)
-
Verifique — reexecute a verificação do portão para confirmar
CONFIG_STATUS=READY:if [ -f "$HOME/.config/morning-ai/.env" ] || [ -f ".claude/morning-ai.env" ] || [ -f ".env" ]; then echo "CONFIG_STATUS=READY"; else echo "CONFIG_STATUS=MISSING"; fiSó prossiga para o Passo 1 se a saída for
READY. -
Se o usuário quiser pular a configuração de chaves de API e usar apenas fontes gratuitas, crie um arquivo de configuração mínimo primeiro, depois prossiga para o Passo 1:
mkdir -p ~/.config/morning-ai && echo "# Configuração morning-ai — apenas fontes gratuitas" > ~/.config/morning-ai/.env
Idioma
| Parâmetro | Padrão | Exemplo |
|---|---|---|
--lang | en (Inglês) | --lang zh (Chinês), --lang ja (Japonês) |
Regras:
- O padrão é Inglês. A menos que
--langseja explicitamente especificado, o relatório DEVE ser escrito inteiramente em Inglês. Todo o texto do relatório — títulos, resumos, cabeçalhos de seção, rótulos de tabelas, marcadores, análise "Por Que Isso Importa" e todo outro conteúdo legível por humanos — deve estar em Inglês. - Se
--langfor especificado, use esse idioma para todo o conteúdo legível por humanos. - Nomes de entidades são substantivos próprios (OpenAI, DeepSeek, Midjourney, etc.) — mantenha-os como estão independentemente do idioma.
- Quando os dados de origem estiverem em um idioma diferente do alvo (ex.: fonte em Chinês → relatório em Inglês), traduza-os para o idioma alvo durante a geração do relatório. NÃO deixe fragmentos não traduzidos.
- A configuração
--langtambém se aplica ao conteúdo do prompt de infográfico (veja Passo 4).
Pré-requisito: O Passo 0 deve ter retornado
CONFIG_STATUS=READY. Se você não concluiu o Passo 0, volte e execute-o agora.
Passo 1: Coleta de Dados
Execute o coletor Python para reunir dados de fontes automatizadas:
cd {SKILL_DIR} && python3 skills/tracking-list/scripts/collect.py --date {YYYY-MM-DD} --depth default -o {CWD}/data_{YYYY-MM-DD}.json
Parâmetros:
--date: Data alvo, padrão hoje (YYYY-MM-DD)--depth: Profundidade de coleta —quick(rápido, menos resultados),default, oudeep(abrangente)--sources: Fontes específicas apenas, ex.:--sources reddit hackernews github-o: Caminho do arquivo JSON de saída
O que faz:
- Executa 5 coletores concorrentemente (Reddit, HN, GitHub, HuggingFace, arXiv)
- Janela de tempo:
[Ontem 08:00, Hoje 08:00) UTC+8 - Pipeline: coletar → pontuar (1-10) → deduplicar → vincular entre fontes → bônus de verificação
- Retorna JSON estruturado com todos os itens, estatísticas e metadados de coleta
Timeout: Permita até 3 minutos para profundidade padrão, 5 minutos para profunda.
Se o usuário fornecer --exclude tipos (ex.: --exclude Funding), anote quais tipos filtrar no Passo 3.
Pesquisa X/Twitter
Após a coleta automatizada ser concluída, use pesquisa web para descobrir atualizações recentes do X/Twitter de entidades monitoradas. Os handles X monitorados estão listados em {SKILL_DIR}/lib/entities.py sob X_HANDLES.
Estratégia de Pesquisa: Verificação de Contas em Múltiplas Camadas
Pesquise X/Twitter em três camadas, em ordem de prioridade:
Camada 1 — Contas Oficiais (maior prioridade):
Pesquise por posts recentes de contas oficiais de empresas/produtos. Os handles estão listados em arquivos de entidade em {SKILL_DIR}/entities/.
- Foco: Lançamentos de modelos, lançamentos de produtos, atualizações de API, mudanças de preço
Camada 2 — Contas de CEO / Pessoal-Chave: Verifique as contas de pessoas-chave para anúncios, prévias e contexto que as contas oficiais podem não cobrir. Listados como "Pessoas-Chave" em cada arquivo de entidade.
- Foco: Pré-visualizações iniciais, contexto estratégico, detalhes técnicos, comentários competitivos
Camada 3 — KOLs e Instituições de Benchmark:
Verifique contas de líderes de opinião em IA e contas de avaliação para análises independentes, resultados de benchmarks e descobertas em tendência. Veja {SKILL_DIR}/entities/kol.md e {SKILL_DIR}/entities/benchmarks-academic.md.
- Foco: Destaques de artigos, classificações de benchmarks, tendências da comunidade, testes independentes
Execução da Pesquisa
Para cada profundidade de pesquisa:
| Profundidade | Camada 1 (Oficial) | Camada 2 (Pessoal) | Camada 3 (KOLs) |
|---|---|---|---|
quick | Top 5 entidades por prioridade | Pular | Pular |
default | Todas as entidades principais (~20) | Contas de CEO principais (~10) | Principais KOLs (~5) |
deep | Todas as entidades com handles X | Todas as contas de pessoal | Todos os KOLs + contas de benchmark |
Use consultas de pesquisa web como:
site:x.com @{handle} since:{ontem}— para posts de conta específicasite:x.com "{nome da entidade}" anúncio IA— para descoberta mais amplasite:x.com lançamento modelo IA OU benchmark OU open-source {data}— para notícias de IA em tendência
Tratamento de RT/Tweet com Citação
Quando um post descoberto for um retweet (RT) ou tweet com citação:
- Rastreie até o post original — o timestamp do evento é a hora do post original, não a hora do RT/citação
- Valide a hora do post original está dentro da janela de coleta de 24 horas
[Ontem 08:00, Hoje 08:00) UTC+8 - Use a URL do post original como
source_url, não a URL do RT/citação - Credite o autor original em
source_label(ex.:"@AnthropicAI no X (via @karpathy RT)")
Validação de Pontualidade
- Todos os horários de posts X devem ser convertidos para UTC+8 para validação da janela
- A janela de coleta é
[Ontem 08:00, Hoje 08:00) UTC+8 - Posts fora desta janela são rejeitados — NÃO os inclua independentemente da relevância
- Para RTs/tweets com citação, valide a hora do post original, não a hora do retweet
Prioridade de Fonte para Itens com Origem em X
| Prioridade | Tipo de Fonte | Credibilidade |
|---|---|---|
| 1 | Blog oficial / changelog | Mais alta |
| 2 | Conta oficial X/Twitter | Alta |
| 3 | Changelog / docs da API | Alta |
| 4 | Release oficial do GitHub | Alta |
| 5 | Conta X do CEO / pessoal-chave | Média-Alta |
| 6 | Conta X de instituição de benchmark | Média |
| 7 | Conta X de KOL | Apenas para referência — requer verificação cruzada |
Itens provenientes apenas de contas KOL (Prioridade 7) devem ser pontuados de forma conservadora e sinalizados para verificação cruzada com uma fonte oficial.
Incorporando Descobertas do X
Para cada atualização X/Twitter verificada:
- Crie um TrackerItem com
source: "x",source_urlapontando para o tweet original, esource_labelcomo"@{handle} no X" - Se o mesmo evento já foi encontrado por um coletor automatizado (Reddit, HN, GitHub, etc.), mescle-o como um
cross_refem vez de criar uma duplicata — isso fortalece a pontuação de verificação - Se for uma descoberta genuinamente nova não presente nos dados automatizados, adicione-a como um novo item com pontuação apropriada
Passo 2: Leia as Especificações
Após a coleta de dados ser concluída, leia a especificação de monitoramento para entender os critérios de pontuação, formato de registro e regras de pontualidade:
Leia {SKILL_DIR}/skills/tracking-list/SKILL.md
Esta especificação define:
- 4 tipos de monitoramento (Produto / Modelo / Benchmark / Financiamento) com critérios de inclusão/exclusão
- Classificações de prioridade de fonte
- Critérios de pontuação (escala 1-10 com 5 dimensões)
- Regras de validação de pontualidade (data do evento ≠ data da página)
- Requisitos de verificação cruzada (pontuações 7+ precisam de 2+ fontes independentes)
- Formato de registro para o relatório
Internalize a especificação antes de escrever o relatório. Preste atenção especial às tabelas de referência de pontuação e ao guia de classificação de tipos.
Passo 3: Gerar Relatório
- Leia a saída JSON do Passo 1
- Leia o modelo de relatório:
Leia {SKILL_DIR}/templates/report.md - Gere
report_{YYYY-MM-DD}.mdno diretório de trabalho
Regras de geração de relatório:
- Idioma: O padrão é Inglês. Escreva TODO o conteúdo em Inglês a menos que
--langseja explicitamente especificado. Se os dados de origem estiverem em um idioma diferente, traduza-os. Nomes de entidades (substantivos próprios) permanecem como estão. - Links de fonte: TODO item DEVE incluir um link de fonte clicável
[Nome da Fonte](URL)apontando para o conteúdo original. Isso se aplica a todas as seções: Resumo, entradas detalhadas e linhas de tabela compacta. - Qualidade dos detalhes: Os marcadores de resumo devem incluir detalhes específicos — números de versão, melhorias percentuais, contagens de parâmetros, preços, datas de disponibilidade, pontuações de benchmark. Evite descrições vagas sem números concretos.
- Verificabilidade factual: Todo número e afirmação deve ser rastreável a uma fonte. Se um item contém um número ou alegação que não pode ser verificado, observe isso (ex.: "não verificado").
- Sem invenções: Não invente especificações, métricas ou dados. Se o coletor não retornou detalhes específicos suficientes, indique "Detalhes não disponíveis" em vez de inventá-los.
- Deduplicação: Mescle itens duplicados entre fontes em uma única entrada. Use
cross_refpara listar múltiplas fontes. - Tabelas & cabeçalhos: Use a mesma estrutura de tabela do modelo. Não altere nomes de colunas.
- Formato de data: Use
YYYY-MM-DDpara datas, exceto em texto legível por humanos (ex.: "15 de março de 2025").
Filtragem por Tipo
Se o usuário fornecer --exclude (ex.: --exclude Funding), filtre itens do(s) tipo(s) excluído(s) do relatório. A saída JSON ainda contém esses itens; apenas omita-os do relatório gerado.
Estrutura do Relatório
O relatório deve seguir esta estrutura (veja o modelo para detalhes):
- Cabeçalho — Data, período de coleta, estatísticas resumidas (total de itens, pontuação média, tipos de item, fontes)
- TLDR — Resumo executivo (3-5 itens) destacando os eventos mais significativos
- Acontecimentos do Dia — Seção principal com entradas detalhadas para cada item de alto valor (pontuação ≥ 5), agrupadas por tipo:
- Modelos
- Produtos
- Benchmarks & Artigos
- Financiamentos & Aquisições
- Destaques Adicionais — Itens de valor médio (pontuação 3-4) em formato de tabela compacta, agrupados por tipo
- Menções & Notas — Itens de baixa pontuação (1-2), rumores não verificados e notas
- Metadados — Status da fonte, pontualidade da coleta, notas de verificação
Passo 4: Pós-processamento Opcional
Após gerar o relatório Markdown, se alguma das seguintes funcionalidades estiver habilitada na configuração, execute os comandos relevantes:
4a: Resumo para Mensagens (WeChat/Telegram/Slack)
Se MESSAGE_ENABLED=true:
cd {SKILL_DIR} && python3 skills/gen-message/scripts/generate.py --report {CWD}/report_{YYYY-MM-DD}.md -o {CWD}/message_{YYYY-MM-DD}.txt --lang {LANG}
4b: Cópia para Redes Sociais (X/Xiaohongshu)
Se SOCIAL_ENABLED=true:
cd {SKILL_DIR} && python3 skills/gen-social/scripts/generate.py --report {CWD}/report_{YYYY-MM-DD}.md -o {CWD}/social_{YYYY-MM-DD}.md --lang {LANG}
4c: Geração de Infográfico
Se IMAGE_GEN_PROVIDER estiver definido (não none):
cd {SKILL_DIR} && python3 skills/gen-image/scripts/generate.py --report {CWD}/report_{YYYY-MM-DD}.md -o {CWD}/infographic_{YYYY-MM-DD}.png --lang {LANG} --style {IMAGE_STYLE}