arxivkb
by @camopel
Local arXiv paper manager with semantic search. Crawls arXiv categories, downloads PDFs, chunks content, and indexes with FAISS + Ollama embeddings. No cloud...
clawhub install arxivkbπ About This Skill
name: arxivkb description: "Local arXiv paper manager with semantic search. Crawls arXiv categories, downloads PDFs, chunks content, and indexes with FAISS + Ollama embeddings. No cloud API keys required β everything runs locally." metadata: {"openclaw":{"requires":{"bins":["python3","ollama"]}}}
ArXivKB β Science Knowledge Base
Why This Skill?
π 100% local β crawls arXiv's free API, embeds with Ollama (nomic-embed-text), indexes in FAISS + SQLite. No cloud cost.
π Semantic search on paper content β FAISS indexes PDF chunks (not just abstracts), so you find papers by what they contain.
π arXiv category-based β tracks official arXiv categories (155 available, 8 groups). No free-text queries.
π§Ή Auto-cleanup β configurable expiry deletes old papers, PDFs, and chunks.
Install
python3 scripts/install.py
Works on macOS and Linux. Installs Python deps (faiss-cpu, pdfplumber, tiktoken, arxiv, numpy), pulls nomic-embed-text via Ollama, creates data directories and DB.
Prerequisites
ollama serve)Quick Start
# 1. Add arXiv categories to track
akb categories add cs.AI cs.CV cs.LG2. Browse all available categories
akb categories browse3. Ingest recent papers (last 7 days)
akb ingest4. Check stats
akb stats
Categories
akb categories list # Show enabled categories
akb categories browse # Browse all 155 arXiv categories
akb categories browse robotics # Filter by keyword
akb categories add cs.AI cs.RO # Enable categories
akb categories delete cs.AI # Disable a category
Categories are official arXiv codes (e.g. cs.AI, eess.IV, q-fin.ST). The full taxonomy is built in.
Ingestion
akb ingest # Crawl, download PDFs, chunk, embed
akb ingest --days 14 # Look back 14 days
akb ingest --dry-run # Preview only
akb ingest --no-pdf # Index abstracts only (faster)
Pipeline: arXiv API β PDF download β text extraction (pdfplumber) β chunking (tiktoken, 500 tokens, 50 overlap) β embedding (Ollama nomic-embed-text) β FAISS + SQLite.
Paper Details
akb paper 2401.12345 # Show title, abstract, categories, PDF status
Statistics
akb stats # Papers, chunks, categories, DB size
Expiry & Cleanup
akb expire # Delete papers older than 90 days (default)
akb expire --days 30 # Override: delete papers older than 30 days
akb expire --days 30 -y # Skip confirmation
Configuration
No config file needed. Defaults:
| Setting | Default | Override |
|---------|---------|----------|
| Data directory | ~/workspace/arxivkb | ARXIVKB_DATA_DIR env or --data-dir |
| Ollama endpoint | http://localhost:11434 | β (hardcoded) |
| Embedding model | nomic-embed-text (768d) | β (hardcoded) |
| Chunk size | 500 tokens, 50 overlap | β |
| Expiry | 90 days | --days flag |
Data Layout
~/workspace/arxivkb/
βββ arxivkb.db # SQLite: papers, chunks, translations, categories
βββ pdfs/ # Downloaded PDF files ({arxiv_id}.pdf)
βββ faiss/
βββ arxivkb.faiss # FAISS IndexFlatIP (chunk embeddings)
DB Schema
π¬ Chat Commands (OpenClaw Agent)
When this skill is installed, the agent recognizes /akb as a shortcut:
| Command | Action |
|---------|--------|
| /akb list | Show enabled categories |
| /akb add cs.AI cs.RO | Enable categories for crawling |
| /akb remove cs.AI | Disable a category |
| /akb browse | Browse all 155 arXiv categories |
| /akb browse robotics | Filter categories by keyword |
| /akb stats | Show paper/chunk/category counts |
| /akb help | Show available commands |
The agent runs these via the akb CLI internally.
π± PrivateApp Dashboard
A companion PWA dashboard is available. Provides:
Architecture
scripts/
βββ cli.py # CLI β categories, ingest, paper, stats, expire
βββ db.py # SQLite schema + CRUD
βββ arxiv_crawler.py # arXiv API search + PDF download
βββ arxiv_taxonomy.py # Full arXiv category taxonomy (155 categories)
βββ pdf_processor.py # PDF text extraction + tiktoken chunking
βββ embed.py # Ollama nomic-embed-text (768d, normalized)
βββ faiss_index.py # FAISS IndexFlatIP manager
βββ search.py # Semantic search: query β FAISS β group by paper
βββ install.py # One-command installer
π‘ Examples
# 1. Add arXiv categories to track
akb categories add cs.AI cs.CV cs.LG2. Browse all available categories
akb categories browse3. Ingest recent papers (last 7 days)
akb ingest4. Check stats
akb stats
βοΈ Configuration
No config file needed. Defaults:
| Setting | Default | Override |
|---------|---------|----------|
| Data directory | ~/workspace/arxivkb | ARXIVKB_DATA_DIR env or --data-dir |
| Ollama endpoint | http://localhost:11434 | β (hardcoded) |
| Embedding model | nomic-embed-text (768d) | β (hardcoded) |
| Chunk size | 500 tokens, 50 overlap | β |
| Expiry | 90 days | --days flag |