Triagem de fontes
Encontra fontes candidatas e, em seguida, responde a quatro perguntas sobre cada uma antes de qualquer análise:
- É legalmente gratuita? (acesso)
- Posso, como agente de IA, realmente lê-la e por qual rota? (alcance)
- É real, atual e não retratada? (integridade)
- Quão boa e central é? (nota, papel, ⭐ escolha de contexto)
A saída é um ledger (registro). O research-plan se baseia nele, o evidence-check audita contra ele, e o usuário pode usá-lo por conta própria ("quais destes você consegue ler, quais eu preciso baixar?"). Funciona para qualquer área e para fontes que não são artigos.
Verdades centrais (aprendidas da pior forma; não as reaprenda)
- Acesso é por rota, não por artigo. Um artigo OA pode estar bloqueado no site da editora e legível através de uma API, e o inverso. Registre a rota que funcionou.
- HTTP 200 mente. Páginas CAPTCHA, muros de login, shells JS, XML de corpo vazio e ferramentas que relatam "sucesso" com texto vazio parecem sucesso. Verifique o que você obteve.
- WebFetch retorna uma extração do modelo, não a página. Bom para leitura e para metadados; nunca é uma fonte de citações literais. Texto literal vem apenas de rotas cruas: XML/JSON da API obtidos com o shell (
curl), um PDF baixado ou um arquivo fornecido pelo usuário. - Bloqueado ≠ ausente. Uma página que o bloqueia deixa uma fonte como
unchecked(não verificado), nuncanot_found(não encontrada). Uma API que está fora do ar significa omitir o sinal, nunca registrarfalse. - Bronze ≠ legível. Teste-o.
- Nunca contorne. Nada de bibliotecas sombra, espelhos, caches, raspagem em torno de robots/CAPTCHA ou coleta em massa.
- Nunca nomeie uma fonte de memória. Em testes, as referências de primeiro rascunho de ambos os modelos tinham títulos errados, anos errados, um DOI errado e um artigo que não existe. Toda fonte é verificada antes de aparecer em qualquer lugar.
Escreva enquanto avança (ponto de verificação)
Crie research/<slug>/ledger.md no início. Após cada busca, anexe a linha de consulta ao registro de busca. Após classificar uma fonte, anexe sua linha imediatamente. Execuções longas perdem contexto; o ledger no disco é a memória.
Etapa 0 — Enquadramento (uma mensagem, depois vá)
Declare em uma linha: pergunta · campo(s) · intervalo de anos (padrão: últimos 10–15 anos + trabalhos antigos de referência; "recente" = 5 anos) · tipos de fonte no escopo · restrições rígidas da solicitação (ex.: "a rubrica precisa de 2 capítulos de livro") · profundidade:
quick(rápida): mantenha 8–15 fontes. O encadeamento é opcional (um encadeamento direto a partir da revisão principal). Registros além do limite são registrados comonot carried forward (cap)(não levados adiante (limite)): contados, mas sem necessidade de motivo de exclusão.deep(profunda): mantenha 25+, encadeie para trás e para frente a partir dos 3–5 trabalhos mais centrais.
Prosseguir a menos que corrigido. Se o usuário disse "verifique comigo" / "passo a passo", pare em cada ◆. Caso contrário, execute direto e liste suas escolhas no final.
Etapa 1 — Biblioteca primeiro
Verifique o que o usuário já possui: uma pasta conectada de PDFs, ledgers research/*/ anteriores, um arquivo .bib ou exportação Zotero/CSL. Fontes próprias são held: library (possuídas: biblioteca). Passe seus DOIs para a busca como "já tenho".
Etapa 2 — Descobrir
Conjunto de termos por conceito, combinados com OR: sinônimos, acrônimos, nomes antigos, grafias UK/US, nomes de métodos. Para ciências da vida, adicione MeSH + termos de entrada, símbolos de genes, nomes de enzimas + números EC, nomes latinos + comuns de organismos. Consulte o método, não o autor. Use 2–3 grupos de conceitos por consulta; mais ANDs retornam 0 resultados.
| Necessidade | Principal | Também |
|---|---|---|
| Biomédica / ciências da vida | PubMed (MeSH) | Europe PMC REST (SRC:"PPR" encontra preprints bioRxiv/medRxiv; HAS_FT:y = texto completo disponível), OpenAlex |
| Qualquer área, ampla | OpenAlex (filtros de tópico/conceito superam busca bruta) | Semantic Scholar, Crossref |
| CC / ML / física / quant-bio | arXiv (ordenar por relevância) | Semantic Scholar, alphaXiv / Scholar Feed |
| Preprints | Europe PMC SRC:"PPR" ou OpenAlex type:preprint | o conector bioRxiv não tem busca por palavra-chave: use-o apenas para detalhes de um DOI conhecido e versão publicada |
| Capítulos de livro | OpenAlex type:book-chapter, catálogo da editora, WebSearch | verifique o container (veja Etapa 4) |
| Alegações / revisões rápido | Consensus, Elicit (se conectado) | verifique cada resultado por DOI |
| Não artigo | documentos/especificação/código oficiais do proprietário primeiro | WebSearch para o restante |
- Verificação de sensibilidade: se artigos-chave são conhecidos, confirme que suas consultas os encontram.
- Contagens de resultados: dezenas de milhares de resultados significa muito amplo; 0–1 significa super restrito, então reformule. Reformular uma consulta com zero resultados faz parte da mesma rodada.
- Registre: título, autores, ano, veículo, tipo, DOI · PMID · PMCID · arXiv · URL,
found_via. - Deduplicação: DOI → outros IDs → título normalizado + ano. Mesclar preprint + versão publicada.
- Limites: pergunte antes de ~1.000 registros ou ~50 chamadas.
◆ Ponto de verificação: termos, consultas, contagens de resultados.
Etapa 3 — Triagem de acesso (antes de ler qualquer coisa)
3a. Acesso legal (em lote)
Para cada fonte mantida, chame OpenAlex get_work (os resultados de busca omitem licença). Copie seu valor oa_status exatamente: gold · diamond · hybrid · green · bronze · closed. Também registre license e oa_url/pdf_url. Os campos license do Europe PMC e get_copyright_status do PubMed são fallbacks. Unpaywall (version, host_type) precisa de um e-mail real: use apenas um que o usuário aprovou para isso; caso contrário, ignore.
- Sem dados →
unknown. Nunca inventeoa, sufixos?ou nomes de editoras como valores de acesso. - Fonte não artigo →
web. - Licença desconhecida → trate como
local-onlypara redistribuição.
3b. Alcance do agente: a escada de rotas (pare no primeiro sucesso)
- Held: na biblioteca do usuário ou em uma execução anterior.
- Europe PMC REST, cru, via shell
curlonde o shell pode alcançá-lo:- busca:
…/rest/search?query=DOI:"a" OR DOI:"b"&format=json, ≤8 DOIs por chamada, ≥1 s de intervalo; - texto completo:
…/rest/{PMCID}/fullTextXML. Esta é a melhor rota para texto literal. Use WebFetch apenas se o shell não puder alcançá-lo; WebFetch rejeita URLs longos e tem limite de taxa. - 429 → espere, tente uma vez. 5xx →
blocked:http-5xx, vá para a próxima rota.
- busca:
- PubMed
get_full_text_article: válido apenas sefull_textnão estiver vazio. Vazio →blocked:empty-body. - Servidores de preprint: páginas
.fulldo arXiv, bioRxiv/medRxiv. - Locais OA:
oa_url/pdf_urldo OpenAlex (uma URL de PDF direta pode funcionar onde a página do artigo falha),openAccessPdfdo Semantic Scholar, CORE, links TDM do Crossref. - Página da editora: uma tentativa por host. Seguir o redirecionamento do DOI é essa tentativa. Nunca siga para um host proibido por robots (ScienceDirect / Elsevier linkinghub).
- Repositório do autor ou institucional via WebSearch
"<título exato>" pdf. Respeite avisos de "sem mineração de texto e dados / uso de IA". - Nada funcionou: registre o motivo e encaminhe a fonte ao usuário.
Observado em 2026-10 (re-teste; estes mudam):
- OK cru: Europe PMC REST via curl.
- OK extraído: Nature OA, Frontiers, MDPI, bioRxiv
.full, arXiv, URLs PDF Springer do OpenAlex. - Bloqueado: ScienceDirect (robots), Wiley incl. OA (erro de busca), páginas de artigo Springer, endpoint PDF BMC, site PMC (CAPTCHA), Annual Reviews, Science.
- Não confiável: ferramenta de texto completo PubMed (frequentemente vazia), fullTextXML do Europe PMC (HTTP 500 para alguns PMCIDs), Europe PMC via WebFetch (limitado por taxa).
Valide antes de chamar qualquer coisa de legível:
- texto do corpo além do resumo;
- não é uma página CAPTCHA / login / acesso negado;
- não está vazio ou é XML apenas com metadados.
- Um arquivo baixado conta apenas se começar com
%PDF-, não for HTML e tiver mais de ~10 KB.
| alcance | significado |
|---|---|
readable:<rota> | texto completo obtido: readable:europepmc-xml (cru) · readable:pdf (cru) · readable:webfetch (extraído, não capaz de texto literal) |
abstract-only | apenas resumo obtido (paywall típico) |
blocked:<motivo> | paywall (nem mesmo um resumo) · robots · captcha · login · http-4xx · http-5xx · fetch-error · rate-limited · empty-body · js-shell |
unchecked | não tentado (orçamento / limite). Nunca escreva "não testado". |
Regra de rótulo: a palavra controlada vem primeiro, exatamente como nestas tabelas. Notas podem seguir entre parênteses, ex.: verified (Crossref DOI).
Procure uma cópia verde antes de rotular uma fonte como blocked ou abstract-only. Uma fonte que é legalmente gold/hybrid/green/bronze mas blocked para você vai na seção "gratuita mas bloqueada para IA".
Etapa 4 — Integridade (em lote; antes de nomear qualquer coisa)
Execute isso logo após a descoberta para cada fonte que você nomeará: no plano, como ⭐, ou como recomendação. Não é uma etapa final.
- Existência: vereditos
verified·partial·mismatch·not_found·unchecked. Usecheck_referencesdo Reference Checker +resolve_referencesdo OpenAlex. Quando as ferramentas discordam, uma correspondência exata de DOI no Crossref ou OpenAlex supera umnot_foundde busca por título; registre ambos. - Capítulos de livro: verifique o container, não apenas o DOI: título do livro, editores, páginas e editora do registro Crossref (
api.crossref.org/works/<doi>→container-title,page). Em testes, um DOI estava certo, mas o título do livro estava errado. - Retratação:
check_retractions. Limpo significa apenas "nenhum aviso encontrado". - Revisão por pares: rotule preprints (
peer: preprintno ledger;`preprint`na entrada do arquivo de fontes); cite a versão publicada se existir uma. - Contaminação: um preprint de 2024+ que não é encontrado em ≥2 índices é um risco de fabricação. Re-verifique-o ou descarte-o.
- Sinalizadores de veículo predatório; literatura cinzenta: URL + data de acesso + link Wayback.
Etapa 5 — Nota, papel, ⭐
Nota A–F: mediana de adequação para seu próprio campo, metodologia, revisão por pares, atualidade, dados, conflitos. Uma falha de integridade limita a nota a D. Uma fonte não lida ou apenas com resumo obtém uma nota provisória (B?).
Papel: evidence · background · method · tool/data · counter.
Níveis para não artigo: T1 docs/especificação/código/estatuto oficiais do proprietário · T2 institucional · T3 jornalismo especializado · T4 comunidade · T5 marketing de fornecedor.
⭐ Pacote de contexto (5–10 escolhas): as fontes que mais melhorariam o que está sendo construído, se armazenadas localmente. Acesso é irrelevante. Cada escolha precisa:
- por que é importante;
- como obtê-la (link OA / login da biblioteca VIT / empréstimo entre bibliotecas / e-mail para o autor);
- um nome para Salvar como
<primeiroautor>-<ano>-<palavra-chave>.pdf; - redistribuir:
ok(CC-BY / CC0 / domínio público) oulocal-only(todo o resto, incluindo licença desconhecida).
Verificação de desvio: ≥70% dos valores conhecidos em uma dimensão → diga isso com a contagem.
Etapa 6 — O ledger
research/<slug>/ledger.md: a primeira tabela, uma linha por fonte, colunas nesta ordem:
# · Citação curta · Tipo · Papel · Nota · acesso · licença · versão · alcance · held · read · integridade · retratação · peer · ⭐ · Salvar como · Link · found_via
readcomeça comonot-read;research-planpreenche comfull·sections:<quais>·abstract·metadata.⭐=okoulocal-onlypara escolhas,-caso contrário.- Linhas excluídas usam ids
E1….
Abaixo da tabela:
- Registro de busca: banco de dados · data · consulta · resultados · qual termo encontrou o quê.
- Contagens: identificados → após deduplicação → não levados adiante (limite) → mantidos → excluídos (com motivos).
totalem qualquer linha de Contagens = cada linha do ledger, incluindo excluídos.
Execute o verificador incluído, python3 <caminho desta habilidade>/scripts/research_checks.py ledger research/<slug>/ledger.md (Python da biblioteca padrão, executa em sua própria sandbox), e corrija erros antes de passar adiante. Usado por conta própria, renderize o ledger como o arquivo de fontes descrito em research-plan.
Privacidade
Pesquise apenas com palavras do tópico, nunca frases do trabalho não publicado do usuário. O e-mail do usuário vai apenas para o Unpaywall, e apenas com a autorização dele.