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.9.0.tar.gz (80.3 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.9.0-py3-none-any.whl (91.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: arxiv_ingest-0.9.0.tar.gz
  • Upload date:
  • Size: 80.3 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.9.0.tar.gz
Algorithm Hash digest
SHA256 92f771b7040f553dc695efb199662c77023b21bb2d9ccfce02ee96db16f56f35
MD5 ab756b54c34e8fc783e17b8e66d21ba3
BLAKE2b-256 06ed3d3f1337ec21f4d6222dfb907890e79d2c811822657560424c9e95267e47

See more details on using hashes here.

File details

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

File metadata

  • Download URL: arxiv_ingest-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 91.3 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.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e8a6a2feb3bce28e70f35207171e8359fcadbc5488617a6b6a3da860ae819e6e
MD5 445a1ee0d6f533c7022350518560c06e
BLAKE2b-256 8634fe28e417426b6d6392c63fae3edfdc01e69da0db7f46d2d3197a0f0c50fe

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