Why: First-time users had to interpret status tags and internal scoring thresholds before they could generate a useful report. What: Replace automatic detail thresholds with one Fewer/Recommended/More dropdown while preserving existing custom policies. Turn onboarding into an accessible four-step guide that links to existing forms, waits for the first completed report, collapses after success, and restores itself when configuration becomes invalid. Align Dashboard recovery copy, documentation, styles, and tests, and lower the lint warning budget to the new baseline. Validation: - npm test (789 tests) - npm run typecheck - npm run lint (0 errors, 134 warnings) - npm run test:release-tools - npm run check:boundaries - npm run check:release-version -- 0.3.1 - npm run build - npm run smoke:build - git diff --check - installed and hash-matched release assets in plugin_test |
||
|---|---|---|
| .github/workflows | ||
| apps/cli | ||
| docs | ||
| extensions/vscode-arxiv-daily | ||
| output/imagegen | ||
| packages | ||
| plugin | ||
| scripts | ||
| tmp/imagegen | ||
| .env.example | ||
| .gitignore | ||
| .python-version | ||
| arxiv_daily.py | ||
| eslint.config.mjs | ||
| LICENSE | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| THIRD_PARTY_NOTICES.md | ||
| tsconfig.base.json | ||
| versions.json | ||
arXiv Daily
Turn daily arXiv feeds into a manageable, searchable reading list — right inside Obsidian.
Every day, hundreds of new papers appear on arXiv. arXiv Daily helps you stay on top of the ones that matter: it fetches papers from your chosen categories, uses an LLM to filter and summarize by your research topics, and writes structured Markdown reports into your vault — all on a configurable schedule.
The result is a compact daily reading list you can skim, star, and act on, without leaving Obsidian.
Why arXiv Daily?
- Save time: let the LLM filter hundreds of papers down to the handful relevant to your topics, with structured daily summaries (core problem, method, result, relevance, limitations).
- Stay organized: daily reports, standalone deep dives, paper notes, and PDFs all live as plain Markdown in your vault — searchable, linkable, and future-proof.
- Review across days: the Dashboard gives you a calendar view, local relevance-ranked search, topic/date/status filters, and sorting to revisit papers across dates.
- Works with your workflow: star important papers, open arXiv or PDF links, and create or automatically select detailed notes for papers worth a deeper look. When a paper is ready for your formal library, import it into Zotero as usual.
- Set and forget: configure once — categories, topics, LLM provider, schedule — and the plugin runs daily. Missed days are caught up automatically.
Quick Start
- Install and enable the plugin.
- Open Settings → arXiv Daily and follow the four-step guide.
- Connect AI with an API key, base URL, and model.
- Choose paper sources by selecting one or more arXiv categories.
- Describe your research interests with at least one complete topic.
- Generate your first report from the guide. It remains visible until a report completes; afterward Settings shows a compact completion summary and the latest report date. If configuration later becomes invalid, the full guide returns.
The guide links to the existing Settings forms rather than duplicating provider or topic inputs. For a detailed walkthrough, see Getting Started.
Dashboard
The Dashboard is the main entry point after setup.
- Starred / All tabs: star the papers that matter; unstarred papers stay neutral.
- Calendar: dates with reports are marked; today is highlighted; click any date to open its report.
- Search & filters: local relevance-ranked search covers arXiv ID, title, authors, topics, categories, and structured summary fields, with English technical-token and Chinese bigram tokenization. Exact modern arXiv IDs (including URL/version forms) are prioritized.
- Sort: a non-empty search defaults to relevance; choosing starred, published date, topic, or title keeps that explicit sort as the primary order.
- Similar Papers: local weighted lexical matching over non-ignored Paper Index entries, using persisted abstracts plus structured summaries recovered from daily reports. Multi-concept and multi-field overlap is favored, while weak and author-only matches are suppressed; results show match reasons, metadata, available resources, and actions for detail, daily report, arXiv, or PDF. Querying uses no network, LLM, embedding, or database.
- Paper actions: from each row, open or create a paper note, open the daily report, open the arXiv page, open or download a PDF.
- Batch operations: run today, run pending lookback dates, or run a specific date. Cancel active tasks cooperatively cancels automatic or manual daily runs, manual detail summaries, and PDF downloads; Get Models is excluded. An Obsidian
requestUrlcall that was already issued may finish before cancellation takes effect, while later work is stopped.
Daily Reports
Each daily report is a Markdown file. Selected papers include:
- Authors and arXiv link
- Source sections used for summarization
- Core problem, key method, main result
- Why it is relevant to your topics
- Limitations or boundaries
- Watch/highlight checkboxes
Highlighting a paper in the daily report maps to a Dashboard star.
Daily reports and generated detail notes end with a folded Generation metrics callout. It reports total pipeline elapsed time when available, LLM elapsed time, logical calls, HTTP attempts, and only token usage reported by the provider. Missing usage is shown as unavailable or incomplete rather than zero; retries make usage incomplete when failed-attempt usage is unavailable. No cost estimate is calculated.
Existing Markdown remains usable; adding this callout does not require rewriting older reports.
Automatic deep dives
The structured entries in daily/YYYY-MM-DD.md are the complete daily discovery output. A file in papers/<arxiv_id>.md is different: it is a standalone, full-text deep dive for one paper, not the paper's daily summary.
Automatic deep-dive selection now runs as a separate scoring step after full text has been fetched. Only papers assigned to a topic whose Detail report toggle is enabled, with usable full text and no existing paper file, are eligible. When eligible candidates exist, they are scored together in exactly one additional LLM call; otherwise there is no selector call.
The Automatic detail notes setting offers Fewer, Recommended, and More. Recommended is the default. Topic toggles control eligibility independently of this setting. Existing custom policies remain active until another option is selected; advanced custom thresholds remain available through persisted or CLI configuration.
If selector scoring fails or returns an invalid result, selection is conservative: no new automatic deep dives are created, while daily summarization continues and the daily run can still succeed. Summarize by arXiv ID is a separate manual workflow and is unaffected by this policy.
Output Layout
Files are organized under arxiv-daily/ in your vault:
arxiv-daily/
daily/
2026-06-13.md
papers/
2606.12345.md
pdfs/
2606.12345.pdf
.index/
papers.json
run-state.json
daily/YYYY-MM-DD.md— daily discovery report grouped by topic, with a structured summary for every selected paperpapers/<arxiv_id>.md— standalone deep dives and manually created paper notes; these are separate from daily summariespdfs/<arxiv_id>.pdf— downloaded PDFs.index/papers.json— local Paper Index used by the Dashboard, search, and Similar Papers.index/run-state.json— scheduler run state
Paper Index schema 3 persists abstracts alongside the existing metadata and structured summary fields. It reads schema 1 and 2 indexes directly; older entries gain abstracts lazily when a later daily run sees them, with no network migration or bulk rewrite required.
Installation
arXiv Daily is desktop-only.
Community Plugins
- Open Settings → Community plugins → Browse.
- Search for arXiv Daily.
- Install and enable it.
BRAT (Beta)
- Install BRAT.
- Open BRAT settings → Add Beta plugin.
- Enter:
tdccccc/arxiv-daily
Manual Install
Download manifest.json, main.js, and styles.css from the latest release. In your vault, create the hidden plugin directory if needed and place all three files directly in it:
<your-vault>/.obsidian/plugins/arxiv-daily/
manifest.json
main.js
styles.css
Do not leave the files inside a nested release or repository folder. Restart Obsidian, then enable arXiv Daily under Settings → Community plugins.
Commands
| Action | Where |
|---|---|
| Open Dashboard | Ribbon icon or command palette |
| Run today | Dashboard toolbar |
| Run pending lookback dates | Dashboard toolbar |
| Run a specific date | Dashboard More menu or command palette |
| Summarize by arXiv ID | Dashboard More menu or command palette |
| Cancel active tasks | Dashboard More menu or command palette |
| Find similar papers | Paper-row Find similar papers action |
| Open a daily report | Dashboard calendar |
| Star a paper | Dashboard star button or daily report highlight checkbox |
Network & Privacy
- Connects to
arxiv.organdexport.arxiv.orgto fetch listings, abstracts, and PDFs. - Connects to your configured LLM provider. Sent content includes paper titles, abstracts, and selected text snippets needed for filtering and summarization.
- A saved API key is displayed only as Configured in Settings; use explicit Replace or Clear actions to change it. The key remains plaintext in
<your-vault>/.obsidian/plugins/arxiv-daily/data.jsonfor compatibility—Obsidian Sync or another vault backup may copy that file. There is no keyring or encryption claim. Restrict access to the vault and its backups, and use Clear to remove the saved key. Logs, diagnostics, and presented errors are redacted. - Fetched arXiv HTML/source content is cached in
<your-vault>/.obsidian/plugins/arxiv-daily/.cache/for the configured retention period (seven days by default). Delete that directory while the plugin is disabled to clear it; it will be recreated as needed. - The CLI reads its key from
ARXIV_DAILY_API_KEYor a user-supplied config file and caches fetched content in.arxiv-daily/cache/relative to the working directory unless--cache-dirorARXIV_DAILY_CACHE_DIRoverrides it. Protect or delete those local files according to your environment. - No client-side telemetry. Generated reports, paper notes, PDFs, indexes, and run state are written under
arxiv-daily/in the vault by default; configured output paths may change that location.
CLI Usage
The Node CLI is available for cron or server workflows and requires Node.js 20.11.0 or newer.
npm ci
npm run build
ARXIV_DAILY_API_KEY=sk-... npm run cli -- run-pending --vault-root /path/to/vault
The canonical executable is apps/cli/dist/arxiv-daily-cli.cjs. The build also
refreshes plugin/arxiv-daily-cli.cjs and keeps arxiv_daily.py as a deprecated
compatibility shim.
With a config file:
npm run cli -- run --date 2026-06-13 --config arxiv-daily.config.json --vault-root /path/to/vault
npm run cli -- summarize --id 2606.12345 --config arxiv-daily.config.json --vault-root /path/to/vault
Development
npm ci
npm run check:boundaries
npm run lint
npm run typecheck
npm test
npm run build
npm run lint runs eslint-plugin-obsidianmd's recommended flat config against
production Obsidian plugin TypeScript plus the root manifest.json and
LICENSE. Tests, generated bundles, and non-plugin workspaces are intentionally
out of scope. This public ESLint plugin approximates Obsidian's source scanner;
it does not reproduce the complete hosted review, including its CSS and release
asset checks.
For a release, synchronize every workspace package, internal dependency spec, Obsidian manifest/version map, and lockfile before validating the release:
npm run sync:release-version -- 0.3.1
npm run check:release-version -- 0.3.1
Review the generated diff before committing. The sync command only updates version metadata; it does not publish, commit, tag, or push.
This repository is one npm workspace. packages/core is the only business
core, packages/node-runtime contains Node adapters, apps/cli is the one-shot
CLI, and plugin contains only the Obsidian host and UI. There is intentionally
no protocol or daemon layer.
License
MIT. Bundled dependency notices are in THIRD_PARTY_NOTICES.md.