Not in the top 1,000 by GitHub stars
OvOhao/auto-paper-collecter
📚🔭 Your personal research radar — an LLM-powered tool that auto-aggregates the latest papers for your keywords across arXiv / Crossref / Semantic Scholar / GitHub / RSS.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/auto-paper-collecter/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
54209b920ac4 → 54209b920ac4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 54209b920ac4
No earlier version was observed for comparison.
Verified commit 54209b920ac4f2a551a7a5cf798e8cd681d374eb
git clone --filter=blob:none --no-checkout https://github.com/OvOhao/auto-paper-collecter.git .hotskills/ovohao-auto-paper-collecter && git -C .hotskills/ovohao-auto-paper-collecter checkout --detach 54209b920ac4f2a551a7a5cf798e8cd681d374eb
# Copy each selected skill directory from .hotskills/ovohao-auto-paper-collecter into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/OvOhao/auto-paper-collecter.git .hotskills/ovohao-auto-paper-collecter && git -C .hotskills/ovohao-auto-paper-collecter checkout --detach 54209b920ac4f2a551a7a5cf798e8cd681d374eb
# Copy each selected skill directory from .hotskills/ovohao-auto-paper-collecter into .agents/skills/<skill-name>/Heat
0.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- auto-paper-collecter
skills/auto-paper-collecter
How it works
auto-paper-collecter
When your agent uses it
Personal research-paper radar. Fetches the latest papers and code repos for the user's keyword subscriptions across arXiv, Crossref (IEEE/ACM), Semantic Scholar, GitHub, HuggingFace, Papers with Code and RSS; deduplicates against history; then YOU (the assistant) expand the queries, filter for computer-science relevance, write Chinese summaries, detect hot sub-fields, and emit a Markdown + HTML digest (optionally emailed). Use when the user asks to "run my paper radar / 文献雷达", "check for new papers", "what's new in my topics", "今天有什么新论文 / 最新文献", "today's research digest", or to configure their keyword subscriptions / sources / schedule.
What it loads into context
Frontmatter
159 tokensAlways available to the agent
SKILL.md
1,399 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Layout
- Config — `state/config.json`
- The run pipeline — follow IN ORDER
- Notes
Scripts executed separately
scripts/common.pyscripts/fetch.pyscripts/notify.pyscripts/render.py
Files
../../.claude-plugin/marketplace.jsonasset660 bytes../../.claude-plugin/marketplace.jsonasset660 bytes../../.claude-plugin/plugin.jsonasset779 bytes.gitignoreasset145 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesSKILL.mdcore5,413 bytesscripts/common.pyruns2,446 bytesscripts/fetch.pyruns11,119 bytesscripts/notify.pyruns4,146 bytesscripts/render.pyruns4,856 bytesstate/config.jsonasset390 bytes
Read SKILL.md
# auto-paper-collecter (skill)
A self-hosted research-literature radar that runs inside a coding agent.
**The Python scripts do only the deterministic work** (API fetch, dedup, render,
email). **YOU — the assistant running this skill — do all the judgement work**:
query expansion, computer-science relevance filtering, Chinese summaries, and
hot-topic synthesis. That means **no AI API key is needed** — whichever model is
running this skill (Claude in Claude Code, GPT in Codex, …) is the LLM.
## Layout
```
skill/
├── SKILL.md
├── scripts/ common.py · fetch.py · render.py · notify.py (stdlib only)View the complete source on GitHubSkills included
- auto-paper-collecter
Repository facts
- License
- MIT
- Created
- Jun 25, 2026
- Last pushed
- Jun 28, 2026
- Forks
- 7
- Open issues
- 2
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 9 notes
.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/auto-paper-collecter/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 52 network referencesin 7 files: auto-paper-collecter/scripts/fetch.py:18 auto-paper-collecter/scripts/notify.py:24 auto-paper-collecter/scripts/common.py:39 and 4 more
- No hidden or obfuscated text
- No instruction overrides
- 4 executable scriptsin 4 files: auto-paper-collecter/scripts/common.py:1 auto-paper-collecter/scripts/fetch.py:1 auto-paper-collecter/scripts/notify.py:1 and 1 more
- 14 references to secretsin 3 files: auto-paper-collecter/scripts/notify.py:51 auto-paper-collecter/scripts/fetch.py:97 auto-paper-collecter/SKILL.md:35
- No requests to vote in Hot
Show all 70 signals by file
.claude-plugin/marketplace.json
- Network accessline 13
"version": "1.0.0", "license": "MIT", "homepage": "https://github.com/OvOhao/auto-paper-collecter", - Network accessline 14
"license": "MIT", "homepage": "https://github.com/OvOhao/auto-paper-collecter", "keywords": ["arxiv", "research", "papers", "literature-review", "rag", "research-assistant"] - Network accessline 15
"homepage": "https://github.com/OvOhao/auto-paper-collecter",
.claude-plugin/plugin.json
- Network accessline 4
"version": "1.0.0", "author": { "name": "Penghao Jiang" }, "homepage": "https://github.com/OvOhao/auto-paper-collecter", - Network accessline 5
"author": { "name": "Penghao Jiang" }, "homepage": "https://github.com/OvOhao/auto-paper-collecter", "repository": "https://github.com/OvOhao/auto-paper-collecter", - Network accessline 6
"homepage": "https://github.com/OvOhao/auto-paper-collecter", - Network accessline 7
"repository": "https://github.com/OvOhao/auto-paper-collecter",
skills/auto-paper-collecter/SKILL.md
- Network accessline 27
- `domain`: the field to constrain relevance to (default `computer science`). - `sources`: toggle `arXiv / Crossref / Semantic Scholar / GitHub / HuggingFace / PapersWithCode / RSS`. - `lookback_days`: how far back to fetch (dedup stops rep - Network accessline 28
- `sources`: toggle `arXiv / Crossref / Semantic Scholar / GitHub / HuggingFace / PapersWithCode / RSS`. - `lookback_days`: how far back to fetch (dedup stops repeats anyway). - `max_per_source`, `rss_feeds`. - Network accessline 29
- `lookback_days`: how far back to fetch (dedup stops repeats anyway). - Access to secretsline 35
[Credential-related source omitted]
skills/auto-paper-collecter/scripts/common.py
- Executable scriptline 1
Executable file - Network accessline 39
"RSS": True}, "lookback_days": 5, "max_per_source": 15, "rss_feeds": ["http://export.arxiv.org/rss/cs.PL"], - Network accessline 40
"lookback_days": 5, "max_per_source": 15, "rss_feeds": ["http://export.arxiv.org/rss/cs.PL"], }) - Network accessline 41
"rss_feeds": ["http://export.arxiv.org/rss/cs.PL"], - Network accessline 47
req = urllib.request.Request(url, headers={ - Network accessline 49
"Accept-Encoding": "gzip", **(headers or {})}) try: with urllib.request.urlopen(req, timeout=timeout) as r: - Network accessline 50
try: with urllib.request.urlopen(req, timeout=timeout) as r: raw = r.read() - Network accessline 51
with urllib.request.urlopen(req, timeout=timeout) as r:
skills/auto-paper-collecter/scripts/fetch.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 18
A_NS = {"a": "http://www.w3.org/2005/Atom"} - Network accessline 31
def src_arxiv(query, n): url = "http://export.arxiv.org/api/query?" + C.qs({ - Network accessline 32
url = "http://export.arxiv.org/api/query?" + C.qs({ - Network accessline 63
def src_crossref(query, n): data = C.http_json("https://api.crossref.org/works?" + C.qs({ - Network accessline 64
data = C.http_json("https://api.crossref.org/works?" + C.qs({ - Network accessline 65
"query": query, "sort": "published", "order": "desc", "rows": n, "select": "DOI,title,author,abstract,URL,container-title,published"}), headers={"User-Agent": "auto-paper-collecter-skill/1.0 (https://github.com/)"}) - Network accessline 66
"select": "DOI,title,author,abstract,URL,container-title,published"}), headers={"User-Agent": "auto-paper-collecter-skill/1.0 (https://github.com/)"}) out = [] - Network accessline 67
headers={"User-Agent": "auto-paper-collecter-skill/1.0 (https://github.com/)"}) - Access to secretsline 97
[Credential-related source omitted] - Network accessline 98
if key: headers["x-api-key"] = key data = C.http_json("https://api.semanticscholar.org/graph/v1/paper/search?" + C.qs({ - Network accessline 99
headers["x-api-key"] = key data = C.http_json("https://api.semanticscholar.org/graph/v1/paper/search?" + C.qs({ "query": query, "limit": n, "fieldsOfStudy": "Computer Science", - Network accessline 100
data = C.http_json("https://api.semanticscholar.org/graph/v1/paper/search?" + C.qs({ - Access to secretsline 129
[Credential-related source omitted] - Network accessline 133
data = C.http_json("https://api.github.com/search/repositories?" + C.qs({ - Network accessline 157
def src_huggingface(query, n): data = C.http_json("https://huggingface.co/api/papers/search?" + C.qs({"q": query})) - Network accessline 158
data = C.http_json("https://huggingface.co/api/papers/search?" + C.qs({"q": query})) - Network accessline 174
"title": " ".join((p.get("title") or "").split()), "abstract": (p.get("summary") or "").strip(), "url": f"https://huggingface.co/papers/{pid}" if pid else "", - Network accessline 175
"abstract": (p.get("summary") or "").strip(), "url": f"https://huggingface.co/papers/{pid}" if pid else "", "authors": [a.get("name", "") if isinstance(a, dict) else str(a) - Network accessline 176
"url": f"https://huggingface.co/papers/{pid}" if pid else "", - Network accessline 185
def src_paperswithcode(query, n): data = C.http_json("https://paperswithcode.com/api/v1/papers/?" + C.qs( - Network accessline 186
data = C.http_json("https://paperswithcode.com/api/v1/papers/?" + C.qs(
skills/auto-paper-collecter/scripts/notify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 24
def _post_json(url, payload, timeout=20): req = urllib.request.Request(url, data=json.dumps(payload).encode("utf-8"), - Network accessline 25
req = urllib.request.Request(url, data=json.dumps(payload).encode("utf-8"), - Network accessline 26
headers={"Content-Type": "application/json"}) with urllib.request.urlopen(req, timeout=timeout) as r: return r.status - Network accessline 27
with urllib.request.urlopen(req, timeout=timeout) as r: - Network accessline 31
def _post_form(url, data, timeout=20): req = urllib.request.Request(url, data=urllib.parse.urlencode(data).encode("utf-8")) - Network accessline 32
req = urllib.request.Request(url, data=urllib.parse.urlencode(data).encode("utf-8")) - Network accessline 33
with urllib.request.urlopen(req, timeout=timeout) as r: - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 70
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Network accessline 84
if tok and chat: try: _post_json(f"https://api.telegram.org/bot{tok}/sendMessage", - Network accessline 85
try: _post_json(f"https://api.telegram.org/bot{tok}/sendMessage", {"chat_id": chat, "text": text, "disable_web_page_preview": True}) - Network accessline 86
_post_json(f"https://api.telegram.org/bot{tok}/sendMessage", - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 98
[Credential-related source omitted] - Network accessline 105
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Network accessline 106
try: _post_form(f"https://sctapi.ftqq.com/{os.environ['SERVERCHAN_KEY']}.send", {"title": f"文献雷达 · {C.today()}", "desp": text}) - Network accessline 107
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted]
skills/auto-paper-collecter/scripts/render.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/auto-paper-collecter/state/config.json
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 9 facts
- Contacts export.arxiv.org, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/common.py:41High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/fetch.py:18High confidence
- Contacts export.arxiv.org, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/fetch.py:32High confidence
- Contacts api.crossref.org, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/fetch.py:64High confidence
- Contacts api.semanticscholar.org, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/fetch.py:100High confidence
- Contacts huggingface.co, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/fetch.py:158High confidence
- Contacts paperswithcode.com, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/fetch.py:186High confidence
- Contacts api.telegram.org, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/notify.py:86High confidence
- Contacts sctapi.ftqq.com, which SKILL.md, the README and the plugin manifest do not mentionauto-paper-collecter/scripts/notify.py:107High confidence
Signal confidence: 60 facts
- Network access in prose of the SKILL.mdauto-paper-collecter/SKILL.md:27Low confidence
- Network access in prose of the SKILL.mdauto-paper-collecter/SKILL.md:28Low confidence
- Network access in prose of the SKILL.mdauto-paper-collecter/SKILL.md:29Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueauto-paper-collecter/SKILL.md:35Low confidence
- Executable script in prose of a file that runsauto-paper-collecter/scripts/common.py:1Low confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:39High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:40High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:41High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:47High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:49High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:50High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/common.py:51High confidence
- Executable script in code of a file that runsauto-paper-collecter/scripts/fetch.py:1High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:18High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:31High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:32High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:63High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:64High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:65High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:66High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:67High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/fetch.py:97Low confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:98High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:99High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:100High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/fetch.py:129Low confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:133High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:157High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:158High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:174High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:175High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:176High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:185High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/fetch.py:186High confidence
- Executable script in code of a file that runsauto-paper-collecter/scripts/notify.py:1High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:24High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:25High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:26High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:27High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:31High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:32High confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:33High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:51Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:52Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:53Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:54Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:66Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:70Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueauto-paper-collecter/scripts/notify.py:83Low confidence
- Network access in code of a file that runsauto-paper-collecter/scripts/notify.py:84High confidence
and 10 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/auto-paper-collecter/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/auto-paper-collecter/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/auto-paper-collecter/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/auto-paper-collecter/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.