auto-paper-collecter (Skill)
Ein selbstgehosteter Forschungsliteratur-Radar, der in einem Coding-Agenten läuft. Die Python-Skripte erledigen nur die deterministische Arbeit (API-Abruf, Deduplizierung, Rendering, E-Mail-Versand). SIE – der Assistent, der diesen Skill ausführt – übernehmen die gesamte Beurteilungsarbeit: Query-Erweiterung, Relevanzfilterung im Bereich Informatik, chinesische Zusammenfassungen und Synthese aktueller Trends. Das bedeutet: Es wird kein AI-API-Schlüssel benötigt – welches Modell auch immer diesen Skill ausführt (Claude in Claude Code, GPT in Codex usw.) ist das LLM.
Aufbau
skill/
├── SKILL.md
├── scripts/ common.py · fetch.py · render.py · notify.py (nur Stdlib)
├── state/ config.json · (queries/candidates/curated/trends/seen .json)
└── digests/ YYYY-MM-DD.md + .html
Skripte aus scripts/ ausführen: cd skill/scripts && python3 <skript>.py
Konfiguration – state/config.json
keywords: bis zu ~3 Themen-Strings, die verfolgt werden.domain: das Fachgebiet, auf das die Relevanz eingeschränkt wird (Standard:computer science).sources: aktivieren/deaktivieren vonarXiv / Crossref / Semantic Scholar / GitHub / HuggingFace / PapersWithCode / RSS.lookback_days: wie weit zurück abgerufen werden soll (Deduplizierung verhindert Wiederholungen trotzdem).max_per_source,rss_feeds.
Wenn der Benutzer Keywords, Quellen oder das Fachgebiet ändern möchte, bearbeiten Sie diese Datei und bestätigen Sie die Änderung gegenüber dem Benutzer.
Optionale Umgebungsvariablen (niemals im Repository gespeichert):
SEMANTIC_SCHOLAR_KEY(erhöht S2-Ratenlimits),GITHUB_TOKEN(erhöht GitHub-Limits),SMTP_*/EMAIL_TO(E-Mail) sowie Push-Kanäle –TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID,SLACK_WEBHOOK_URL,WECHAT_WEBHOOK(企业微信群机器人) oderSERVERCHAN_KEY(Server酱).
Die Ausführungspipeline – IN REIHENFOLGE BEACHTEN
1 · Konfiguration lesen & Queries erweitern (Sie)
Lesen Sie state/config.json. Denken Sie sich für jedes Keyword 2–3 assoziative englische Suchanfragen aus – Synonyme, vollständige Formen, angrenzende Unterthemen – damit der Abruf nicht auf den wörtlichen Begriff beschränkt ist (z. B. C2Rust → ["C2Rust", "C-to-Rust translation", "migrating legacy C code to Rust"]). Schreiben Sie diese in state/queries.json als {"<keyword>": ["q1", "q2", ...], ...}.
2 · Kandidaten abrufen (Skript)
cd skill/scripts && python3 fetch.py
Ruft jede aktivierte Quelle für diese Queries ab, verwirft alles, was bereits in state/seen.json steht oder älter als lookback_days ist, und schreibt state/candidates.json. Wenn 0 Kandidaten gemeldet werden, teilen Sie dem Benutzer mit: "暂无新文献" und beenden Sie den Vorgang (es ist nichts weiter zu tun).
3 · Relevanz filtern & zusammenfassen (Sie)
Lesen Sie state/candidates.json. Entscheiden Sie für jeden Eintrag: Ist er (a) informationswissenschaftlich und (b) wirklich thematisch relevant für sein topic-Keyword? Verwerfen Sie den Rest (medizinische "Übersetzung", finanzielle "AI", zufällige GitHub-Sternlisten usw.). Schreiben Sie für jeden behaltenen Eintrag eine prägnante chinesische Zusammenfassung und erstellen Sie state/curated.json – eine Liste von Objekten:
{"source","topic","title","url","venue","authors","published",
"tldr":"一句话核心 (<=60字)","method":"方法简述 (<=80字)",
"contributions":["核心贡献1","核心贡献2"]}
Behalten Sie zuerst Paper, dann GitHub-Repositorys (diese sind ein ergänzendes Signal). Wenn eine Quelle bereits einen tldr geliefert hat, können Sie darauf aufbauen.
GitHub-Einträge sind Repositorys, keine Paper – fassen Sie sie nicht übermäßig zusammen. Verwenden Sie die Repo-Beschreibung (dessen
abstract) alstldrund lassen Siemethod/contributionsleer.fetch.pybehält nur Repos mit ≥10 Sternen, sortiert nach Sternen, sodass sie tendenziell substanziell sind (Kurs / Framework / awesome-list), kein persönliches Rauschen.
4 · Trend-Synthese (Sie, optional aber empfohlen)
Clusteren Sie die behaltenen Einträge in eine Handvoll grober Informatik-Teilgebiete (自然语言处理 / 计算机视觉 / 系统与编译 …; fassen Sie großzügig zusammen). Schreiben Sie state/trends.json:
{"top": [{"name","delta": <Anzahl>, "summary": "<=80字方向总结", "papers": ["title", ...]}, ... max. 3]}.
5 · Digest rendern (Skript)
cd skill/scripts && python3 render.py
Schreibt digests/YYYY-MM-DD.md + .html aus curated.json (+ trends.json) und zeichnet alles Angezeigte in seen.json auf, damit es sich nicht wiederholt.
6 · Benachrichtigen (Skript, optional)
cd skill/scripts && python3 notify.py # sendet das HTML-Digest per E-Mail, wenn SMTP_*-Umgebungsvariablen gesetzt sind
7 · Rückmeldung geben (Sie)
Teilen Sie dem Benutzer mit, wie viele Paper behalten wurden, die wichtigsten heißen Richtungen und den Pfad zum Digest. Bieten Sie an, das HTML zu öffnen oder die Keywords anzupassen.
Hinweise
- Die Skripte verwenden ausschließlich die Python-Standardbibliothek – kein
pip installerforderlich. fetch.pyfiltert bereits ungültige Zukunfts- und Duplikatsdaten heraus.- Dieses Skill ist das agentengesteuerte Gegenstück zum FastAPI-Webdashboard des Projekts; beide teilen dieselben Quellen und die Pipeline-Philosophie.