auto-paper-collecter (skill)
Um radar de literatura acadêmica auto-hospedado que funciona dentro de um agente de codificação. Os scripts Python fazem apenas o trabalho determinístico (fetch de APIs, deduplicação, renderização, e-mail). VOCÊ — o assistente executando esta skill — faz todo o trabalho de julgamento: expansão de consultas, filtragem de relevância em ciência da computação, resumos em chinês e síntese de tópicos quentes. Isso significa que nenhuma chave de API de IA é necessária — qualquer modelo que esteja executando esta skill (Claude no Claude Code, GPT no Codex, …) é o LLM.
Estrutura
skill/
├── SKILL.md
├── scripts/ common.py · fetch.py · render.py · notify.py (apenas stdlib)
├── state/ config.json · (queries/candidates/curated/trends/seen .json)
└── digests/ YYYY-MM-DD.md + .html
Execute os scripts a partir de scripts/: cd skill/scripts && python3 <script>.py
Configuração — state/config.json
keywords: até ~3 strings de tópicos a rastrear.domain: a área para restringir a relevância (padrãocomputer science).sources: ativar/desativararXiv / Crossref / Semantic Scholar / GitHub / HuggingFace / PapersWithCode / RSS.lookback_days: quantos dias para trás buscar (a deduplicação impede repetições de qualquer forma).max_per_source,rss_feeds.
Quando o usuário pedir para alterar palavras-chave / fontes / área, edite este arquivo e confirme a alteração para ele.
Variáveis de ambiente opcionais (nunca armazenadas no repositório):
SEMANTIC_SCHOLAR_KEY(aumenta limites de taxa do S2),GITHUB_TOKEN(aumenta limites do GitHub),SMTP_*/EMAIL_TO(e-mail), e canais de push —TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID,SLACK_WEBHOOK_URL,WECHAT_WEBHOOK(企业微信群机器人) ouSERVERCHAN_KEY(Server酱).
O pipeline de execução — siga NA ORDEM
1 · Ler configuração e expandir consultas (você)
Leia state/config.json. Para cada palavra-chave, pense em 2–3 consultas de busca em inglês associativas — sinônimos, formas completas, subtópicos adjacentes — para que a recuperação não se limite ao termo literal (ex.: C2Rust → ["C2Rust", "C-to-Rust translation", "migrating legacy C code to Rust"]). Escreva-as em state/queries.json como {"<keyword>": ["q1", "q2", ...], ...}.
2 · Buscar candidatos (script)
cd skill/scripts && python3 fetch.py
Busca em cada fonte habilitada por essas consultas, descarta qualquer coisa já em state/seen.json ou mais antiga que lookback_days, e escreve state/candidates.json. Se reportar 0 candidatos, informe ao usuário "暂无新文献" e pare (não há mais nada a fazer).
3 · Filtrar relevância e resumir (você)
Leia state/candidates.json. Para cada item, decida: é (a) da área de ciência da computação e (b) genuinamente no tópico para sua palavra-chave topic? Descarte o resto ("translation" médico, "AI" financeiro, listas aleatórias de estrelas do GitHub, etc.). Para cada item mantido, escreva um resumo conciso em chinês e monte state/curated.json — uma lista de objetos:
{"source","topic","title","url","venue","authors","published",
"tldr":"一句话核心 (<=60字)","method":"方法简述 (<=80字)",
"contributions":["核心贡献1","核心贡献2"]}
Coloque artigos primeiro, repositórios do GitHub por último (eles são um sinal suplementar). Se uma fonte já forneceu um tldr, você pode usá-lo como base.
Itens do GitHub são repositórios, não artigos — não os resuma demais. Use a descrição do repositório (seu
abstract) comotldre deixemethod/contributionsvazios. Ofetch.pyjá mantém apenas repositórios com ≥10 estrelas, classificados por estrelas, então eles tendem a ser substanciais (curso / framework / lista awesome), não ruído pessoal.
4 · Síntese de tópicos quentes (você, opcional mas recomendado)
Agrupe os itens mantidos em algumas subáreas grossas de CC (自然语言处理 / 计算机视觉 / 系统与编译 …; mescle agressivamente). Escreva state/trends.json: {"top": [{"name","delta": <contagem>, "summary": "<=80字方向总结", "papers": ["title", ...]}, ... até 3]}.
5 · Renderizar o resumo (script)
cd skill/scripts && python3 render.py
Escreve digests/YYYY-MM-DD.md + .html a partir de curated.json (+ trends.json) e registra tudo exibido em seen.json para que não se repita.
6 · Notificar (script, opcional)
cd skill/scripts && python3 notify.py # envia o resumo em HTML por e-mail se a variável SMTP_* estiver definida
7 · Relatar (você)
Informe ao usuário quantos artigos foram mantidos, as principais direções quentes e o caminho do resumo. Ofereça-se para abrir o HTML ou ajustar palavras-chave.
Notas
- Os scripts são Python puro da stdlib — nenhum
pip installé necessário. - O
fetch.pyjá filtra datas futuras inválidas e deduplica entre execuções. - Esta skill é a contraparte orientada a agente do painel web FastAPI do projeto; ambos compartilham as mesmas fontes e filosofia de pipeline.