Fetch recent arXiv papers and scaffold them into a structured research wiki
Project description
arxiv-ingest
Fetch recent arXiv papers by keyword and scaffold them into structured research notes.
Works standalone as a CLI, or integrates with Claude Code for LLM-assisted evidence extraction and wiki generation.
Features
- Keyword-based collection — list topics in
config.yaml, no code needed - 3-layer output —
sources/(metadata) ·evidence/(claims) ·wiki/(synthesis) - Safe re-runs — already-filled files are never overwritten
- GitHub Actions template — auto-runs Mon–Fri,
workflow_dispatchfor on-demand runs - Any wiki — point
output_dirat any directory
Quick start
# Install (requires Python 3.11+)
pip install arxiv-ingest
# Or from source:
git clone https://github.com/yamadan96/arxiv-ingest
cd arxiv-ingest
uv sync
# Configure
cp config.yaml.example config.yaml
# Edit config.yaml: set keywords, output_dir, and category mappings
# Fetch papers and generate skeletons
arxiv-ingest run # fetch + generate in one step
# Or step by step:
arxiv-ingest fetch # saves data/fetched.json
arxiv-ingest generate # creates skeleton files in output_dir
Configuration (config.yaml)
output_dir: "../research-wiki" # path to your wiki directory
max_results: 20 # papers per keyword
days_back: 7 # look back N days
keywords:
- "Vision-Language Model transformer"
- "LoRA PEFT fine-tuning language model"
- "LLM reasoning chain-of-thought"
# Only accept papers in these arXiv categories:
allowed_arxiv_categories: [cs.CV, cs.CL, cs.LG, cs.AI, cs.RO, stat.ML]
# Primary category must be in this list (prevents off-topic papers):
require_primary_in: [cs.CV, cs.CL, cs.AI, cs.RO, stat.ML]
# arXiv category → wiki folder name:
category_map:
cs.CV: "Multimodal"
cs.CL: "Post_Training"
cs.AI: "Reasoning"
cs.RO: "Physical_AI"
stat.ML: "Pretraining"
See config.yaml.example for the full reference with all options documented.
Output format
Skeleton files are created at:
output_dir/
├── sources/{Category}/{slug}.md # Metadata (title, authors, abstract, URL)
├── evidence/{Category}/{slug}.md # Claims & benchmarks — fill this in
└── wiki/papers/{Category}/{slug}.md # Synthesis & interpretation — fill this in
sources/ files are written once and never touched again.
evidence/ and wiki/ files are only (re-)created when they still contain the unfilled template placeholder, so your edits are safe across re-runs.
Using with Claude Code
Copy the skill file so /arxiv-ingest is available as a Claude Code command:
cp .claude/commands/arxiv-ingest.md ~/.claude/commands/
# or into your project's .claude/commands/
After running arxiv-ingest run, invoke /arxiv-ingest in Claude Code.
Claude reads each paper's abstract (and PDF when available) and fills in the evidence/ and wiki/ files automatically.
GitHub Actions: daily auto-ingest
Setup
-
Fork or use this repo as a template
-
Create a GitHub Fine-grained PAT with Write access to your wiki repo
-
Add to your repo's Settings → Secrets and variables → Actions:
Kind Name Value Secret GH_PATyour PAT Variable WIKI_REPOyour-name/research-wiki -
Go to Actions → Daily arXiv Ingest → Run workflow to verify
Schedule
- Auto: Mon–Fri UTC 01:00 (JST 10:00) —
cron: '0 1 * * 1-5' - Manual:
workflow_dispatchwith optionaldays_backoverride
Requirements
- Python 3.11+
- uv (recommended) or pip
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arxiv_ingest-0.7.0.tar.gz.
File metadata
- Download URL: arxiv_ingest-0.7.0.tar.gz
- Upload date:
- Size: 57.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5043cb6b495059a09664118ef687569029c8b50849f2c4c41cd19851fb33597
|
|
| MD5 |
6344f04eabac2055e0a63c6e06f7bc63
|
|
| BLAKE2b-256 |
0a072c78480f41e4dea8f80bb5ff23b78670c4c4ab681e3d370804439475734d
|
File details
Details for the file arxiv_ingest-0.7.0-py3-none-any.whl.
File metadata
- Download URL: arxiv_ingest-0.7.0-py3-none-any.whl
- Upload date:
- Size: 66.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b28c84e16b9973e7c734dd074bfb6c828dff020cc8e613731a24e17a4e98192
|
|
| MD5 |
bb741771fcf6d86f27bfa01ed6196c49
|
|
| BLAKE2b-256 |
2d0f5d075ca5a694642422802da409c16de57853bae0ad89f5458c937a933424
|