Skip to main content

Fetch recent arXiv papers and scaffold them into a structured research wiki

Project description

arxiv-ingest

Tests PyPI version Python 3.11+

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 outputsources/ (metadata) · evidence/ (claims) · wiki/ (synthesis)
  • Safe re-runs — already-filled files are never overwritten
  • GitHub Actions template — auto-runs Mon–Fri, workflow_dispatch for on-demand runs
  • Any wiki — point output_dir at 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

  1. Fork or use this repo as a template

  2. Create a GitHub Fine-grained PAT with Write access to your wiki repo

  3. Add to your repo's Settings → Secrets and variables → Actions:

    Kind Name Value
    Secret GH_PAT your PAT
    Variable WIKI_REPO your-name/research-wiki
  4. 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_dispatch with optional days_back override

Requirements

  • Python 3.11+
  • uv (recommended) or pip

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arxiv_ingest-0.11.0.tar.gz (82.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arxiv_ingest-0.11.0-py3-none-any.whl (94.7 kB view details)

Uploaded Python 3

File details

Details for the file arxiv_ingest-0.11.0.tar.gz.

File metadata

  • Download URL: arxiv_ingest-0.11.0.tar.gz
  • Upload date:
  • Size: 82.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arxiv_ingest-0.11.0.tar.gz
Algorithm Hash digest
SHA256 be11bffbf8998059d0cef2626a7dcad498a3a5ee128147b57d80b7e7764fea01
MD5 b6e998c8324b9ae3c4f0c4976e892e6c
BLAKE2b-256 f5df920e73b0fa065221258d09a7550ccb87cfbc32e30a95ca5c49ef6b6cbc77

See more details on using hashes here.

File details

Details for the file arxiv_ingest-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: arxiv_ingest-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 94.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arxiv_ingest-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5090e658d32d7ca1adab185e3fe9fe0e3cb8edaf88b5c46d78d46e855d4eae27
MD5 28657fc877097574a6342058c1bea9d2
BLAKE2b-256 bb14dcab466b87be3f1c28c8c4692e18e14fa298437044c295424d0ff797d329

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page