Skill AI HOT
Permite que o Agente consulte, em chinês natural, o resumo diário AI HOT e todas as dinâmicas de IA do site aihot.virxact.com, sem precisar abrir o navegador. Formato padrão SKILL.md, compatível com Claude Code / Codex CLI / Cursor / Gemini CLI / OpenCode / qualquer plataforma compatível.
Online: https://aihot.virxact.com (acessível anonimamente, sem necessidade de token)
Pré-requisito: Obrigatório usar User-Agent (apenas endpoints da API)
/api/public/* usa uma lista negra de User-Agents no nginx para bloquear rastreadores comerciais. O curl/X.Y padrão resultará em erro 403 Forbidden. Todas as chamadas curl para a API devem incluir um User-Agent de navegador:
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
# Todas as chamadas curl para a API a partir de agora devem usar -H "User-Agent: $UA", por exemplo:
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily"
Os exemplos de curl na seção "Fluxo de Trabalho" a seguir presumem que $UA já foi definido por questões de brevidade – mas a chamada real deve incluir -H "User-Agent: $UA", não esqueça. Pular este passo fará você pensar que a API está quebrada, quando na verdade está sendo bloqueada com 403.
Esclarecimento: Este requisito de User-Agent se aplica apenas aos endpoints da API
/api/public/*. Os endpoints de instalação/aihot-skill/{install.sh,SKILL.md,README.md}no nginx são explicitamente isentos da lista negra de User-Agents (a premissa de design é permitir a instalação com uma linhacurl -fsSL ... | bash), portanto funcionam com o User-Agent padrão do curl. Não generalize o "pré-requisito" para todos os caminhos de aihot.virxact.com.
Quando usar
Prioridade de roteamento (primeiro princípio): O padrão é usar os selecionados
items?mode=selected– este é o "menu principal" com curadoria diária do AI HOT, cobrindo os assuntos de interesse do usuário com dados frescos.
- Apenas quando o usuário disser explicitamente "日报" (resumo diário) na frase, use
daily(um produto editorial consolidado, cortado por dia UTC, que não se alinha com janelas deslizantes como "últimas 24 horas / hoje")- Apenas quando o usuário disser explicitamente "全部 / 完整 / 所有 / 全量" (todos/completo) use
mode=all(inclui itens secundários não selecionados, grande volume mas mais ruído)- Perguntas amplas como "o que há de novo na IA hoje?", "grandes notícias das últimas 24 horas", "o que está rolando na IA" = selecionados padrão + janela de tempo (since) , não use o resumo diário ou todos por padrão
Isso alinha a prioridade semântica do usuário: selecionados é o menu principal, resumo diário e todos são alternativas que o usuário pede explicitamente, não devem ser o padrão.
| O que o usuário diz | Endpoint a ser chamado |
|---|---|
| Padrão (pergunta ampla) : "O que há de novo na IA hoje?", "Grandes notícias das últimas 24 horas", "Últimas da IA", "Novidades de IA" | GET /api/public/items?mode=selected&since=<janela semântica> (selecionados padrão + since para restringir) |
| Explicitamente "日报" (resumo diário) : "Resumo diário de IA", "Resumo de hoje", "Ver o resumo diário" | GET /api/public/daily (resumo diário mais recente) |
| Explicitamente "全部 / 完整 / 所有 / 全量" (todos/completo) : "Ver todas as dinâmicas de IA de hoje", "Lista completa", "Todas as dinâmicas de IA" | GET /api/public/items?mode=all (pode ou não incluir since, dependendo do contexto) |
| "Resumo diário de IA de ontem/anteontem", "Ver o resumo de 6 de maio" | GET /api/public/daily/{YYYY-MM-DD} |
| "Quais resumos diários dos últimos dias?", "Listar resumos diários", "Arquivo de resumos" | GET /api/public/dailies?take=N |
| "Ver itens selecionados", "Destaques AI HOT" | GET /api/public/items?mode=selected |
| "Lançamentos de modelos recentes", "Lançamentos de produtos de IA", "Dinâmicas do setor de IA", "Artigos de IA" | GET /api/public/items?mode=selected&category=...&since=<7 dias atrás> (selecionados padrão + categoria) |
| "Dinâmicas de IA da última semana", "Lançamentos de 5 dias atrás até agora" | GET /api/public/items?mode=selected&since=ISO-8601 |
| "O que OpenAI/Anthropic/Google lançou recentemente" (dimensão empresa) | GET /api/public/items?q=OpenAI (pesquisa por palavra-chave no servidor, lançado em 2026-05-08) |
| "Relacionado a Sora / GPT-5 / Artigo sobre RAG" | GET /api/public/items?q=<palavra-chave> (correspondência em título + título em chinês + resumo em chinês) |
Heurística geral: Quando o usuário pergunta sobre "fatos atuais da indústria de IA", não invente com base nos dados de treinamento; sempre use a API. Mesmo se você "achar" que sabe a resposta, verifique novamente – o AI HOT é muito mais recente que sua data de corte de treinamento e focado em tópicos que interessam a empreendedores chineses.
Visão geral dos endpoints
| Endpoint | Finalidade | Parâmetros principais |
|---|---|---|
/api/public/daily | Resumo diário mais recente | Nenhum |
/api/public/daily/{YYYY-MM-DD} | Resumo diário de data específica | path: date |
/api/public/dailies | Lista de arquivo de resumos diários | take (1-180, padrão 30) |
/api/public/items | Todas as dinâmicas de IA | mode / category / since / take / cursor / q (palavra-chave) |
Convenções:
- URL Base:
https://aihot.virxact.com - Autenticação: Nenhuma (anônimo)
- Limite de taxa: 600 req/min/IP (chame em série, não faça várias requisições concorrentes)
- O endpoint items limita
sinceaos últimos 7 dias: não passar é o mesmo que since=now-7d (fallback do servidor); datas anteriores a 7 dias são automaticamente truncadas para 7 dias atrás; datas futuras → erro 400. Portanto, não importa como o Skill chame, a API items sempre retorna apenas conteúdo dos últimos 7 dias. Para datas mais antigas, use/api/public/daily/{YYYY-MM-DD}para consultar o arquivo de resumos diários - Limite de
take: 100; para mais itens, use o cursor para paginação - Especificação OpenAPI 3.1 completa:
https://aihot.virxact.com/openapi.yaml
Fluxo de trabalho
Caminho padrão: Buscar selecionados + janela de tempo (primeira escolha para perguntas amplas)
Selecionados = o "menu principal" com curadoria diária do AI HOT – cobre todos os grandes eventos de IA que interessam ao usuário, ordenados por data de publicação (mais recente primeiro). Para qualquer pergunta ampla como "O que há de novo na IA hoje?", "Grandes notícias das últimas 24 horas", "Últimas da IA", use este caminho por padrão – em comparação com o resumo diário: ① janela de tempo flexível (24 horas / 3 dias / 1 semana, tão estreita quanto você quiser, alinhada com a semântica do usuário) ② dados mais frescos (rolagem em tempo real, não cortado por dia UTC) ③ ainda de alta qualidade (pool aiSelected=true, sem itens secundários).
# Buscar selecionados das últimas 24 horas (usuário pergunta "grandes notícias das últimas 24 horas")
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=50"
# Buscar os 50 selecionados mais recentes (usuário pergunta "ver selecionados" / sem janela de tempo explícita)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&take=50" \
| jq '.items[] | {title, source, publishedAt, url}'
Buscar resumo diário (quando o usuário diz explicitamente "日报" (resumo diário))
Palavras-chave de gatilho: A frase contém "日报" ("Resumo diário de IA", "Resumo de hoje", "Ver o resumo diário", "Resumo de 6 de maio"). Se a frase não contiver "日报", não use este endpoint – o resumo diário é um produto fixo de um dia, cortado à meia-noite UTC, que não se alinha com janelas deslizantes como "últimas 24 horas / hoje".
O resumo diário é a "camada de título" do AI HOT – gerado automaticamente às 08:00 (horário de Pequim) todos os dias, organizado por tópicos (5 seções fixas). Inclui um parágrafo de introdução do "editor-chefe" e é um produto consolidado por tópico.
# Buscar o resumo diário de hoje (ou o mais recente disponível)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily" \
| jq '{date, lead: .lead.title, sections: [.sections[] | {label, n: (.items | length)}]}'
Buscar resumo diário de data específica
# YYYY-MM-DD, baseado na meia-noite UTC
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily/2026-05-07"
Listar arquivo de resumos diários (descoberta)
Se não souber quais datas estão disponíveis, primeiro consulte o arquivo:
# Índice dos últimos N dias (apenas data + título principal, sem corpo)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/dailies?take=14" \
| jq '.items[] | {date, leadTitle}'
Buscar todos (quando o usuário diz explicitamente "全部 / 完整 / 所有 / 全量" (todos/completo))
Palavras-chave de gatilho: A frase contém "全部" (todos), "完整" (completo), "所有" (todos), "全量" (total), "包括老的" (incluindo os antigos) – o usuário quer ativamente ver itens secundários que foram filtrados pela curadoria (mas ainda relevantes). Se não houver essas palavras-chave, não use mode=all – os selecionados já cobrem a maioria dos assuntos de interesse do usuário; o pool de todos é grande, mas ruidoso.
# Buscar todas as dinâmicas de IA das últimas 24 horas (usuário pergunta "ver todas as dinâmicas de IA de hoje")
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&since=$since&take=100"
Buscar itens por categoria
5 categorias (a API items usa o slug em inglês; a API daily mostra o rótulo em chinês):
items?category= | daily.sections[].label |
|---|---|
ai-models | Lançamentos/Atualizações de Modelos |
ai-products | Lançamentos/Atualizações de Produtos |
industry | Dinâmicas do Setor |
paper | Artigos de Pesquisa |
tip | Dicas e Opiniões |
Se o usuário perguntar "o que a conta pública WeChat publicou recentemente": a API items não inclui artigos de contas públicas WeChat (fonte mp_hot é servida separadamente na página /mp do frontend). O Skill não pode responder a esse tipo de pergunta atualmente; sugira que o usuário visite https://aihot.virxact.com/mp para ver a página de artigos populares de contas públicas.
# Exemplo: Buscar os 50 artigos de IA mais recentes (selecionados padrão + categoria paper)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=paper&take=50" \
| jq '.items[] | {title, source, publishedAt, url}'
# Exemplo: Lançamentos de modelos nos selecionados
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=ai-models&take=20"
# Exceção: Apenas se o usuário disser explicitamente "todos os artigos / todos os lançamentos de modelos" use mode=all
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&category=paper&take=100"
Buscar itens por janela de tempo (últimos N dias)
Regra chave: Quando o usuário perguntar sobre "últimos X" (últimos lançamentos de modelos / últimos artigos de IA / últimas novidades da OpenAI, etc.), você deve incluir o parâmetro
sincepara restringir a janela à intenção real do usuário (se ele disser "últimos 3 dias", use 3d; "ontem", use 1d; "última semana", use 7d).Fallback do servidor: O servidor da API items tem um padrão de
since=now-7d(limite rígido para proteger o servidor), portanto, mesmo que o Skill não incluasince, ele retornará apenas conteúdo dos últimos 7 dias, sem puxar itens antigos de meses atrás. No entanto, ainda é recomendado incluirsinceexplicitamente: ① quando o usuário pergunta "últimos 3 dias", usar 3d explicitamente é mais preciso do que deixar o servidor usar 7d ② as informações de metadados de saída podem mostrar uma janela de tempo em linguagem natural ③ alinha a intenção claramente com o "máximo de 7 dias" anunciado publicamente.
# Buscar lançamentos de modelos selecionados dos últimos 7 dias (usuário pergunta "últimos lançamentos de modelos")
since=$(date -u -v-7d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=ai-models&since=$since&take=100"
# Buscar dinâmicas selecionadas dos últimos 3 dias (usuário diz explicitamente "últimos 3 dias")
since=$(date -u -v-3d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '3 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=100"
Exceções: Se o usuário disser explicitamente "全量 / 所有 / 完整列表 / 包括老的" (total/todos/lista completa/incluindo os antigos) → mude mode para all, pode omitir since; se o usuário perguntar "看下精选" (ver os selecionados) (olhando para o pool de selecionados, não para uma janela de tempo), mantenha mode=selected e pode omitir since. Mas, desde que a frase contenha "最近 / 最新 / 这两天 / 这周" (últimos / mais recentes / estes dois dias / esta semana), use since + mode=selected por padrão.
Paginação (cursor)
A resposta de /api/public/items inclui nextCursor (token opaco). Na próxima requisição, basta passá-lo no parâmetro cursor.
# Página 1
resp1=$(curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&take=100")
echo "$resp1" | jq '.items | length' # 100
# Página 2
cursor=$(echo "$resp1" | jq -r '.nextCursor')
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&take=100&cursor=$cursor"
Pare a paginação quando hasNext = false ou nextCursor = null. cursor é um token opaco, trate-o como uma caixa-preta; não tente interpretá-lo, incrementá-lo ou reutilizá-lo entre endpoints.
Pesquisa por palavra-chave ("O que a OpenAI lançou recentemente" / "Relacionado a Sora" / "Artigo sobre RAG")
A API oferece suporte direto à pesquisa por palavra-chave no servidor – o parâmetro q faz correspondência ILIKE nas colunas title + título em chinês title + resumo em chinês summary, usando o índice GIN do PostgreSQL pg_trgm (2-6ms). Não use mais o padrão "buscar um lote + grep com jq no cliente" – isso só vê acertos no pool dos primeiros 100 itens; se a palavra-chave estiver além dos 100, não será encontrada.
# Encontrar o que a OpenAI lançou recentemente (cobre todo o pool, não apenas os primeiros 100)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?q=OpenAI&take=30"
# Encontrar todas as dinâmicas de IA relacionadas a Sora (qualquer título ou resumo que contenha Sora)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?q=Sora"
# Encontrar artigos sobre RAG (categoria restrita + palavra-chave)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?category=paper&q=RAG&take=30"
# Palavra-chave + janela de tempo (selecionados da Anthropic dos últimos 3 dias)
SINCE=$(date -u -v-3d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '3 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&q=Anthropic&since=$SINCE"
Restrições de q:
- Pelo menos 2 caracteres (trigrama GIN de 1 caractere degenera para varredura de tabela completa, o servidor tratará como "sem pesquisa")
- Máximo de 200 caracteres (truncado automaticamente se exceder)
- Ortogonal e combinável com outros parâmetros (mode/category/since/take/cursor), permitindo combinações como "selecionados + artigos + palavra-chave + últimos 7 dias"
- Compartilha o limite de 600r/m com outras requisições
Formato dos dados retornados
Retorno de /api/public/daily
{
"date": "2026-05-07",
"generatedAt": "2026-05-07T00:01:23.456Z",
"windowStart": "2026-05-06T00:00:00.000Z",
"windowEnd": "2026-05-07T00:00:00.000Z",
"lead": { "title": "...", "leadParagraph": "..." },
"sections": [
{
"label": "Lançamentos/Atualizações de Modelos",
"items": [
{
"title": "...",
"summary": "...",
"sourceUrl": "https://...",
"sourceName": "OpenAI Blog"
}
]
}
],
"flashes": [
{ "title": "...", "sourceName": "...", "sourceUrl": "...", "publishedAt": "..." }
]
}
sections[].label tem 5 valores fixos: "Lançamentos/Atualizações de Modelos" / "Lançamentos/Atualizações de Produtos" / "Dinâmicas do Setor" / "Artigos de Pesquisa" / "Dicas e Opiniões". lead pode ser null em alguns resumos diários.
Retorno de /api/public/dailies
{
"count": 14,
"items": [
{ "date": "2026-05-07", "generatedAt": "...", "leadTitle": "..." }
]
}
Retorno de /api/public/items
{
"count": 50,
"hasNext": true,
"nextCursor": "eyJhIjoxNzE0OTk1MjAwMDAwLCJpIjoiY205eHl6MTIzIn0",
"items": [
{
"id": "cm9abc456def789ghi012jkl3",
"title": "Título em chinês (normalizado)",
"title_en": "Título original em inglês (presente apenas quando diferente de title, caso contrário null)",
"url": "https://...",
"source": "OpenAI Blog",
"publishedAt": "2026-05-07T15:30:00.000Z",
"summary": "Resumo em chinês (gerado por LLM)",
"category": "ai-models"
}
]
}
Invariantes dos campos:
- Obrigatórios:
id/title/url/source - Opcionais (podem ser nulos):
title_en/summary/publishedAt/category - Conjunto de valores de
category:ai-models/ai-products/industry/paper/tip/null publishedAt: ISO 8601 UTC (comZ)id: string cuid (25 caracteres), não presuma que seja numérico
Formato de saída para o usuário
⚠️ Princípio central: Esta seção é o conteúdo final exibido diretamente ao usuário – deve estar em formato markdown + bem formatado + em linguagem natural que uma pessoa comum possa entender. A maioria dos usuários são empreendedores de IA não técnicos / designers / leitores comuns; o que eles veem deve ser um resumo de notícias em chinês, não um log de depuração de API.
Todos os detalhes de infraestrutura, como "caminho do endpoint" / "parâmetro raw
mode=selected" / "limite de taxa" / "cache nginx" / "cursor" / "hasNext", não podem aparecer na saída vista pelo usuário. Metadados em linguagem natural (janela de tempo / número de itens / "ordenado por data de publicação, mais recente primeiro") podem ser mantidos – critério de julgamento: o usuário consegue entender diretamente? Sim → mantenha; Não → remova.
Saída estilo resumo diário (ao usar endpoint daily / daily/{date})
**AI HOT Resumo Diário · 2026-05-07**
## Lançamentos/Atualizações de Modelos
1. **<título>** — <fonte>
<resumo simplificado, até 50 caracteres>
<url>
## Lançamentos/Atualizações de Produtos
2. ...
## Dinâmicas do Setor
3. ...
## Artigos de Pesquisa
4. ...
## Dicas e Opiniões
5. ...
## Rápidas (se flashes tiver conteúdo)
- <flash.title> — <flash.source> (<flash.publishedAt convertido para linguagem natural>)
Numeração contínua em todo o texto (1, 2, 3 ... N), sem reiniciar a contagem dentro de cada ## – assim o usuário pode ver rapidamente "27 itens hoje".
Saída estilo lista (ao usar o endpoint items)
Agrupar por categoria por padrão + numeração global – os usuários já têm uma expectativa formada para a estrutura de cinco seções (modelos/produtos/setor/artigos/dicas) baseada no resumo diário; agrupar por categoria é mais natural quando há categorias misturadas:
**AI HOT — Últimos 30 Selecionados**
## Lançamentos/Atualizações de Modelos
1. **<título>** — <fonte>
2 horas atrás
<resumo>
<url>
## Lançamentos/Atualizações de Produtos
2. **<título>** — <fonte>
...
3. ...
## Dinâmicas do Setor
4. ...
Quando houver apenas 1 categoria (o usuário disse explicitamente "Artigos de IA"/"Lançamentos de modelos", etc.), use uma lista plana numerada:
**AI HOT — Artigos de IA da Última Semana** (2026-05-01 ~ 2026-05-08)
1. **<título>** — <fonte>
<resumo>
<url>
2. ...
Subtítulo / Metadados apenas em linguagem natural
OK (o usuário entende diretamente):
- "Janela de tempo 2026-05-05 ~ 2026-05-07"
- "Todos os itens que correspondem à palavra-chave OpenAI nos últimos 3 dias"
- "Ordenado por data de publicação, mais recente primeiro"
- "Total de 50 itens"
- "O resumo diário de hoje só será gerado após as 08:00 (horário de Pequim). Veja a edição de 5/7 primeiro"
NÃO OK (vazamento de infraestrutura, definitivamente não escreva):
- ❌
mode=selected/category=paper/take=30(nomes de parâmetros raw) - ❌ Caminho do endpoint
/api/public/items?since=2026-04-30T18:39:31Z&take=50 - ❌ "Limite de taxa 600 req/min" / "Cache nginx 60s" / "x-nginx-cache: HIT"
- ❌ "cursor" / "hasNext=true" / "precisa de cursor para paginar ou reduzir a janela since"
- ❌ Qualquer código de status HTTP / status de cache / descrição de mecanismo de backend
A fonte dos dados pode ser mencionada em no máximo uma frase: "Dados de aihot.virxact.com", ou simplesmente omita (o usuário já sabe a fonte ao usar o skill).
Converter timestamp para linguagem natural
publishedAt está em ISO 8601 UTC; ao exibir, deve ser convertido para o horário de Pequim + tempo relativo/absoluto que o usuário possa ler rapidamente:
| Valor interno | Exibir para o usuário |
|---|---|
2026-05-08T01:48:00.000Z | "Hoje às 09:48" / "2 horas atrás" |
2026-05-07T18:08:17.000Z | "Hoje às 02:08" / "10 horas atrás" |
2026-05-06T16:43:00.000Z | "5/7 00:43" / "Ontem" |
Não exiba diretamente a string ISO 2026-05-07T15:30:00.000Z – o usuário não entenderá.
title vs title_en
Por padrão, exiba title (normalizado em chinês). title_en só deve ser usado nos seguintes cenários:
- O usuário pede explicitamente a versão em inglês ("Mostre-me em inglês")
titleestá vazio (muito raro)
Não exiba ambos.
Tratamento de erros comuns
{"error":"No daily report available yet."}(HTTP 404): O resumo diário do dia ainda não foi gerado (antes das 08:00, horário de Pequim). Sugira ao usuário: buscar o resumo diário de ontemcurl /api/public/daily/{data de ontem}{"error":"Invalid date format..."}(HTTP 400): A data deve estar no formatoYYYY-MM-DD, base UTC- Erros 400 comuns do endpoint items:
"invalid mode (must be 'selected' or 'all')""invalid category (must be one of: ai-models, ai-products, industry, paper, tip)""invalid since (must be ISO date, not in future)""invalid take (must be integer 1-100)"
- HTTP 429 (limite de taxa): Único IP excedeu 600 req/min. Basta chamar em série e adicionar um intervalo de 200ms entre as chamadas de paginação
O que NÃO fazer
- Não roteie perguntas amplas como "O que há de novo na IA hoje?", "Grandes notícias das últimas 24 horas", "O que está rolando na IA" para o endpoint
daily– estas são janelas de tempo deslizantes, enquantodailyé um produto fixo de um dia cortado à meia-noite UTC (ex: 5/6-5/7), a precisão do tempo não corresponde. Usemode=selected + since=<janela semântica>por padrão. Apenas usedailyquando o usuário disser explicitamente "日报" (resumo diário) na frase. - Não use
mode=allpor padrão quando o usuário não disser "全部 / 完整 / 所有 / 全量" (todos/completo) – os selecionados já cobrem a maioria dos assuntos de interesse do usuário; o pool de todos é grande e ruidoso, contendo itens secundários não selecionados. Usemode=selectedpor padrão; mude paramode=allapenas quando o usuário pedir explicitamente"todos". - Não tente adivinhar / inventar conteúdo – sempre confie no que a API retorna
- Não cite o resumo (
summary) como se fosse o texto original – o resumo é gerado por LLM; a citação precisa ser verificada comurl/sourceUrl - Não faça polling de alta frequência – o resumo diário só é atualizado uma vez por dia às 08:00; o endpoint items tem cache de 5 minutos no servidor; não precisa chamar a API novamente se o usuário fizer a mesma pergunta
- Não faça várias requisições de paginação concorrentes – faça chamadas em série com intervalos naturais
- Não tente interpretar / incrementar / reutilizar o cursor entre endpoints – ele é um token opaco, o formato de codificação interna é instável e pode mudar sem aviso prévio
- Para consultas por empresa / palavra-chave, use a pesquisa no servidor
?q=<palavra>; não use o padrão "buscar um lote + grep com jq no cliente" (isso só vê os primeiros 100 itens e pode perder resultados) - Quando o usuário perguntar sobre "últimos N dias de X", inclua explicitamente
since=<N dias atrás>(intenção clara + metadados podem mostrar janela de tempo em linguagem natural). Se não incluirsince, o servidor usará o padrão de 7d, então não puxará itens antigos, mas se o usuário pedir "últimos 3 dias" e o servidor usar 7d, trará 4 dias extras de conteúdo. - Não exponha caminhos de endpoint / parâmetros raw / limite de taxa / TTL de cache / cursor / hasNext na saída do usuário – estes são para desenvolvedores; o usuário não entenderá. Veja a seção "Formato de saída para o usuário → Subtítulo / Metadados apenas em linguagem natural" acima.
- Ao consolidar saídas entre dias / seções, não perca a continuidade da numeração global – isso faz o usuário perder a noção do total.