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

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
64GitHub stars
0stars in 7 days
1skill in this repository
0commits in 30 days

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

Oct 25, 2026Oct 25, 202664

30-day change not yet available: not enough history.

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

1,399 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Layout
  2. Config — `state/config.json`
  3. The run pipeline — follow IN ORDER
  4. Notes

Scripts executed separately

  • scripts/common.py
  • scripts/fetch.py
  • scripts/notify.py
  • scripts/render.py

Files

  • ../../.claude-plugin/marketplace.jsonasset660 bytes
  • ../../.claude-plugin/marketplace.jsonasset660 bytes
  • ../../.claude-plugin/plugin.jsonasset779 bytes
  • .gitignoreasset145 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • SKILL.mdcore5,413 bytes
  • scripts/common.pyruns2,446 bytes
  • scripts/fetch.pyruns11,119 bytes
  • scripts/notify.pyruns4,146 bytes
  • scripts/render.pyruns4,856 bytes
  • state/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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/auto-paper-collecter/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

  • Network accessline 13
    "lookback_days": 5,   "max_per_source": 12,   "rss_feeds": ["http://export.arxiv.org/rss/cs.CL"]
  • Network accessline 14
    "max_per_source": 12,   "rss_feeds": ["http://export.arxiv.org/rss/cs.CL"] }
  • Network accessline 15
    "rss_feeds": ["http://export.arxiv.org/rss/cs.CL"]

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
Signal confidence: 60 facts

and 10 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/auto-paper-collecter/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/auto-paper-collecter/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/auto-paper-collecter/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.