Skip to content

Commit b79a0ec

Browse files
committed
docs: rewrite README for clarity and readability
1 parent 0ffec0b commit b79a0ec

1 file changed

Lines changed: 103 additions & 95 deletions

File tree

README.md

Lines changed: 103 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,36 @@
55
[![CI](https://github.com/Axect/arXiv_explorer/actions/workflows/ci.yml/badge.svg)](https://github.com/Axect/arXiv_explorer/actions/workflows/ci.yml)
66
[![GitHub stars](https://img.shields.io/github/stars/Axect/arXiv_explorer)](https://github.com/Axect/arXiv_explorer/stargazers)
77

8-
> Your personal research assistant for arXiv — discover, organize, and annotate papers from the terminal.
8+
> Discover, organize, and annotate arXiv papers from the terminal. Personalized recommendations that learn from you.
99
1010
![arXiv Explorer TUI](tui.png)
1111

12-
## Why arXiv Explorer?
12+
## Highlights
1313

14-
- **Learns from you** — The recommendation engine improves every time you like or dislike a paper. No manual tuning required.
15-
- **No API keys needed** — Fetches papers directly from the public arXiv API. AI features use your locally installed CLI tools.
16-
- **Fully local** — All data lives in a single SQLite file on your machine. No accounts, no cloud sync, no tracking.
17-
- **Terminal-native** — A rich CLI (Python/Typer) and a fast TUI (Rust/Ratatui). Works over SSH.
18-
- **Composable** — Pipe exports to other tools, integrate with arxivterminal or arxiv-doc-builder, or build your own workflow.
14+
- **Learns from you.** Like or dislike papers and the recommendation engine adapts. No manual tuning.
15+
- **No API keys needed.** Papers come straight from the public arXiv API. AI features use your locally installed CLI tools.
16+
- **Fully local.** A single SQLite file on your machine. No accounts, no cloud, no tracking.
17+
- **Terminal-native.** A Python CLI for scripting and a fast Rust TUI for browsing. Works over SSH.
18+
- **Composable.** Export to Markdown/JSON/CSV. Integrates with [arxivterminal](https://github.com/Axect/arxivterminal) and [arxiv-doc-builder](https://github.com/Axect/arxiv-doc-builder).
1919

2020
## Features
2121

22-
- **Personalized Recommendations** — TF-IDF content similarity + category/keyword/recency scoring
23-
- **Reading Lists** — Organize papers into named lists with reading status tracking
24-
- **Paper Notes** — Attach typed notes (general, question, insight, todo) to any paper
25-
- **AI Summaries** — Generate summaries via configurable AI providers (Gemini, Claude, OpenAI, Ollama, or custom)
26-
- **Translation** — Translate paper titles and abstracts via AI
27-
- **Export** — Markdown, JSON, CSV export for papers, lists, and notes
28-
- **TUI** — Full terminal UI (Rust/Ratatui) with tabs, detail panels, and keyboard shortcuts
29-
- **Paper Cache** — Smart daily fetch caching eliminates redundant arXiv API calls
22+
| | |
23+
|---|---|
24+
| **Personalized Recommendations** | TF-IDF content similarity + category / keyword / recency scoring |
25+
| **Reading Lists** | Organize papers into named lists with reading status |
26+
| **Paper Notes** | Attach typed notes (general, question, insight, todo) |
27+
| **AI Summaries & Reviews** | Generate via Gemini, Claude, OpenAI, Ollama, or custom provider |
28+
| **Translation** | Translate titles and abstracts via AI |
29+
| **Export** | Markdown, JSON, CSV for papers, lists, and notes |
30+
| **TUI** | Native Rust terminal UI with tabs, overlays, and keyboard shortcuts |
31+
| **Smart Caching** | Daily fetch cache avoids redundant arXiv API calls |
3032

3133
## Requirements
3234

33-
- Python 3.11+
35+
- [Python 3.11+](https://www.python.org/downloads/)
3436
- [uv](https://docs.astral.sh/uv/) package manager
35-
- Rust toolchain (for TUI`rustup` recommended)
37+
- [Rust toolchain](https://rustup.rs/) (for TUI)
3638

3739
## Installation
3840

@@ -41,23 +43,19 @@ git clone https://github.com/Axect/arXiv_explorer.git
4143
cd arXiv_explorer
4244
uv sync
4345

44-
# Build the TUI (optional but recommended)
46+
# Build the TUI
4547
cd tui-rs && cargo build --release && cd ..
4648
```
4749

48-
### Shell Completion
50+
<details>
51+
<summary>Shell completion (fish / bash / zsh)</summary>
4952

5053
```bash
51-
# fish
52-
axp --install-completion fish
53-
54-
# bash
55-
axp --install-completion bash
56-
57-
# zsh
58-
axp --install-completion zsh
54+
axp --install-completion fish # or bash, zsh
5955
```
6056

57+
</details>
58+
6159
## Quick Start
6260

6361
```bash
@@ -68,129 +66,139 @@ axp prefs add-keyword "deep learning" --weight 4
6866
# 2. Fetch and rank recent papers
6967
axp daily --days 7 --limit 10
7068

71-
# 3. Launch the TUI for the full experience
69+
# 3. Launch the TUI
7270
axp tui
7371
```
7472

7573
See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough.
7674

7775
## TUI
7876

79-
Launch with `axp tui` (requires `cargo build --release` in `tui-rs/`). The TUI is a native Rust binary (Ratatui + Crossterm) that communicates with the Python CLI via subprocess.
77+
Launch with `axp tui`. Built with Rust (Ratatui + Crossterm) for snappy navigation.
8078

81-
| Tab | Key | Description |
82-
|-----|-----|-------------|
83-
| **Daily** | `1` | Browse personalized papers with detail panel |
79+
| Tab | Key | What you can do |
80+
|-----|-----|-----------------|
81+
| **Daily** | `1` | Browse personalized papers with a detail panel |
8482
| **Search** | `2` | Search arXiv interactively |
8583
| **Lists** | `3` | Manage reading lists and track status |
8684
| **Notes** | `4` | Browse and filter paper notes |
87-
| **Prefs** | `5` | Manage categories, keywords, authors, weights, and AI settings |
85+
| **Prefs** | `5` | Edit categories, keywords, authors, weights, and AI config |
8886

89-
**Key bindings**: `Enter` open detail / `l` like / `d` dislike / `s` summarize / `t` translate / `r` review / `b` bookmark / `f` fetch / `j` jobs / `a` add (in Prefs) / `q` quit
87+
### Keyboard shortcuts
88+
89+
| Key | Action | Key | Action |
90+
|-----|--------|-----|--------|
91+
| `Enter` | Open detail | `f` | Fetch papers |
92+
| `l` | Like | `b` | Bookmark |
93+
| `d` | Dislike | `j` | Jobs panel |
94+
| `s` | Summarize | `a` | Add (in Prefs) |
95+
| `t` | Translate | `D` | Reset weights |
96+
| `r` | Review | `q` | Quit |
9097

9198
## CLI Reference
9299

93100
### Paper Discovery
94101

95-
| Command | Description |
96-
|---------|-------------|
97-
| `axp daily [-d DAYS] [-l LIMIT] [-s]` | Fetch recent papers with personalized ranking |
98-
| `axp top [-l LIMIT] [-s]` | View top recommended papers (from liked history) |
99-
| `axp search QUERY [-l LIMIT] [-a]` | Search papers (add `-a` for direct arXiv API) |
102+
```
103+
axp daily [-d DAYS] [-l LIMIT] [-s] Fetch recent papers (personalized)
104+
axp top [-l LIMIT] [-s] Top recommended papers
105+
axp search QUERY [-l LIMIT] [-a] Search (add -a for arXiv API)
106+
```
100107

101108
### Paper Interaction
102109

103-
| Command | Description |
104-
|---------|-------------|
105-
| `axp show [ARXIV_ID] [-s] [-d] [-t]` | View paper details (or recently liked papers) |
106-
| `axp like ARXIV_ID [-n NOTE]` | Mark a paper as interesting |
107-
| `axp dislike ARXIV_ID` | Mark a paper as not interesting |
108-
| `axp translate ARXIV_ID` | Translate a paper's title and abstract |
110+
```
111+
axp show [ARXIV_ID] [-s] [-d] [-t] View paper details
112+
axp like ARXIV_ID [-n NOTE] Mark as interesting
113+
axp dislike ARXIV_ID Mark as not interesting
114+
axp translate ARXIV_ID Translate title and abstract
115+
axp review ARXIV_ID [-f] [-t] Generate AI review
116+
```
109117

110118
### Organization
111119

112-
| Command | Description |
113-
|---------|-------------|
114-
| `axp prefs` | View/manage preferred categories and keywords |
115-
| `axp list` | Manage reading lists (create, add, remove, status) |
116-
| `axp note` | Manage paper notes (add, show, list) |
117-
| `axp export` | Export papers/lists to Markdown, JSON, or CSV |
120+
```
121+
axp prefs View/manage categories and keywords
122+
axp list Manage reading lists
123+
axp note Manage paper notes
124+
axp export Export to Markdown, JSON, or CSV
125+
```
118126

119127
### Configuration
120128

121-
| Command | Description |
122-
|---------|-------------|
123-
| `axp config show` | View current AI provider settings |
124-
| `axp config set-provider PROVIDER` | Change AI provider (gemini, claude, openai, ollama, custom) |
125-
| `axp config set-language LANG` | Change display language (en, ko) |
126-
| `axp config test` | Test current provider connection |
129+
```
130+
axp config show View current AI settings
131+
axp config set-provider PROVIDER Switch provider
132+
axp config set-language LANG Change language (en, ko)
133+
axp config test Test provider connection
134+
```
127135

128136
## AI Providers
129137

130-
AI features (summarization and translation) call external CLI tools via subprocess — no API keys are stored in the application.
138+
AI features call external CLI tools via subprocess. No API keys are stored in the app.
131139

132-
| Provider | CLI command | Invocation | Default model |
133-
|----------|------------|------------|---------------|
134-
| **Gemini** | `gemini` | `gemini -m MODEL -p PROMPT` | (provider default) |
135-
| **Claude** | `claude` | `claude --model MODEL -p PROMPT --output-format text` | (provider default) |
136-
| **Codex** (OpenAI) | `codex` | `codex --model MODEL --prompt PROMPT` | (provider default) |
137-
| **Ollama** | `ollama` | `ollama run MODEL PROMPT` | `llama3.2` |
138-
| **OpenCode** | `opencode` | `opencode run --model MODEL PROMPT` | (provider default) |
139-
| **Custom** | user-defined | template with `{prompt}` and optional `{model}` placeholders | |
140+
| Provider | CLI tool | Notes |
141+
|----------|----------|-------|
142+
| **Gemini** | `gemini` | Default provider |
143+
| **Claude** | `claude` | Uses `--output-format text` |
144+
| **Codex** (OpenAI) | `codex` | |
145+
| **Ollama** | `ollama` | Default model: `llama3.2` |
146+
| **OpenCode** | `opencode` | |
147+
| **Custom** | user-defined | Template with `{prompt}` placeholder |
140148

141149
```bash
142-
axp config set-provider claude # Switch provider
143-
axp config set-model "claude-sonnet-4-5-20250929" # Override model
144-
axp config test # Verify connection
150+
axp config set-provider claude
151+
axp config set-model "claude-sonnet-4-5-20250929"
152+
axp config test
145153
```
146154

147155
## Architecture
148156

149157
```
150-
src/arxiv_explorer/ # Python backend
151-
core/ # Data models, database schema, configuration
152-
services/ # Business logic (recommendation, search, summarization, caching)
153-
cli/ # Typer-based CLI commands
154-
utils/ # Display helpers
155-
156-
tui-rs/ # Rust TUI frontend
157-
src/app.rs # App state, tabs, overlays, jobs
158-
src/events.rs # Key/mouse input handling
159-
src/main.rs # Rendering (Ratatui)
160-
src/categories.rs # arXiv category taxonomy
161-
src/commands/ # Async subprocess calls to Python CLI
162-
src/db/ # Direct SQLite access (read/write)
158+
src/arxiv_explorer/ Python backend
159+
core/ Data models, database schema, config
160+
services/ Recommendation, search, summarization, caching
161+
cli/ Typer-based CLI commands
162+
utils/ Display helpers
163+
164+
tui-rs/ Rust TUI frontend
165+
src/app.rs App state, tabs, overlays, jobs
166+
src/events.rs Key/mouse input handling
167+
src/main.rs Rendering (Ratatui)
168+
src/categories.rs arXiv category taxonomy
169+
src/commands/ Async subprocess calls to Python CLI
170+
src/db/ Direct SQLite access (read/write)
163171
```
164172

165-
**Recommendation** — TF-IDF cosine similarity (50%) + category priority (20%) + keyword matching (10%) + recency bonus (5%).
173+
**Scoring formula** (defaults, configurable in TUI):
174+
Content similarity 60% + Category match 20% + Keyword match 15% + Recency bonus 5%.
166175

167-
## Comparison
176+
## Comparison with arxiv-sanity-lite
168177

169-
Different tools serve different workflows. [arxiv-sanity-lite](https://github.com/karpathy/arxiv-sanity-lite) pioneered TF-IDF-based paper recommendations and remains the gold standard for web-based discovery. arXiv Explorer brings a similar approach to the terminal.
178+
[arxiv-sanity-lite](https://github.com/karpathy/arxiv-sanity-lite) pioneered TF-IDF paper recommendations for the web. arXiv Explorer brings a similar idea to the terminal.
170179

171180
| | arxiv-sanity-lite | arXiv Explorer |
172181
|---|---|---|
173-
| **Interface** | Web UI | CLI + TUI (works over SSH) |
174-
| **Recommendation** | TF-IDF (web) | TF-IDF (local, learns per session) |
175-
| **Setup** | Server deployment | `uv sync` and go |
176-
| **Data storage** | PostgreSQL + S3 | Single SQLite file |
177-
| **AI summaries** | No | Yes (pluggable providers) |
182+
| **Interface** | Web UI | CLI + TUI (SSH-friendly) |
183+
| **Recommendation** | TF-IDF (server) | TF-IDF (local) |
184+
| **Setup** | Server deployment | `uv sync` + `cargo build` |
185+
| **Storage** | PostgreSQL + S3 | Single SQLite file |
186+
| **AI summaries** | No | Yes (pluggable) |
178187
| **Reading lists & notes** | No | Yes |
179188
| **Export** | No | Markdown, JSON, CSV |
180-
| **Best for** | Browsing with a team | Solo terminal workflow |
181189

182190
## Integration
183191

184-
- **[arxivterminal](https://github.com/Axect/arxivterminal)** Reads from its local paper database (read-only)
185-
- **[arxiv-doc-builder](https://github.com/Axect/arxiv-doc-builder)** Converts papers to Markdown via `axp export markdown`
192+
- **[arxivterminal](https://github.com/Axect/arxivterminal)**: Reads from its local paper database (read-only)
193+
- **[arxiv-doc-builder](https://github.com/Axect/arxiv-doc-builder)**: Converts papers to Markdown via `axp export markdown`
186194

187195
## Data Storage
188196

189-
All data is stored locally in SQLite at `~/.config/arxiv-explorer/explorer.db`. No cloud sync.
197+
Everything lives in `~/.config/arxiv-explorer/explorer.db`. Single SQLite file, fully local.
190198

191199
## Contributing
192200

193-
Contributions are welcome! See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for development setup and guidelines.
201+
Contributions welcome! See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for guidelines.
194202

195203
## License
196204

0 commit comments

Comments
 (0)