Skip to content

Commit d264705

Browse files
committed
Refresh README for v0.7.1 direction
1 parent eb5b823 commit d264705

4 files changed

Lines changed: 320 additions & 161 deletions

File tree

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,32 @@ Note:
66
- Repository history does not contain a public `0.6.0` version bump.
77
- The preview-first and local-inbox transition work from that period was folded into `0.7.0`.
88

9+
## [0.7.1] - 2026-04-03
10+
11+
### Added
12+
- Added the first complete local agent interface for `2-2`:
13+
- local-only HTTP JSON endpoint: `POST /api/agent/search`
14+
- CLI JSON mode: `python app/paper_digest_app.py --agent-search ...`
15+
- separate `AGENT_API_TOKEN` broker token so agents do not need raw provider keys
16+
- Added OPENAI-compatible local/self-hosted backend support for agent-oriented use:
17+
- `ENABLE_OPENAI_COMPAT_FALLBACK`
18+
- `OPENAI_COMPAT_API_BASE`
19+
- `OPENAI_COMPAT_MODEL`
20+
- `OPENAI_COMPAT_API_KEY`
21+
- Added dedicated agent manuals:
22+
- `docs/manuals/MANUAL_AGENT_EN.md`
23+
- `docs/manuals/MANUAL_AGENT_KR.md`
24+
25+
### Changed
26+
- Reorganized the English and Korean README front sections around the current product direction:
27+
- `2-1` human on-demand search
28+
- `2-2` agent-oriented search
29+
- Moved older delivery/automation paths such as email and GitHub Actions lower in the README as optional workflows.
30+
- Settings UI now exposes agent-mode controls and OPENAI-compatible backend settings.
31+
32+
### Docs
33+
- Updated README, Korean README, and manual cross-links to reflect the search-first + agent-tool product framing.
34+
935
## [0.7.0] - 2026-04-02
1036

1137
### Added

README.md

Lines changed: 123 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# Paper Morning
1+
# Paper Morning
22

33
[![Paper Morning Logo](assets/papermorning2.png)](https://raw.githack.com/jeong87/paper-morning/main/docs/preview/index.html)
44

55
**[EN](README.md) | [KR](docs/manuals/README_KR.md)**
66

7-
Paper Morning is a research-context paper search tool for medical/health AI researchers.
8-
It turns a project description into search queries, retrieves papers, ranks them by practical relevance, and explains why they matter. Local inbox and scheduled digest delivery remain available as optional follow-up modes.
7+
Paper Morning is a research-context paper search engine for medical and health AI work.
8+
It turns a project description into search queries, retrieves papers, reranks them by practical relevance, and explains why they matter.
99

10-
- Latest version: **[v0.7.0](VERSION)**
10+
- Latest version: **[v0.7.1](VERSION)**
1111
- License: `GNU AGPLv3` ([LICENSE](LICENSE))
1212
- Privacy policy: [PRIVACY.md](PRIVACY.md)
1313

@@ -29,100 +29,131 @@ Notes:
2929
- No actual email is sent from this page
3030
- Best for first-impression validation before local install
3131

32-
## What It Does
33-
1. Reads your project context and saved search queries.
34-
2. Collects papers from arXiv, PubMed, Semantic Scholar, and optional Google Scholar (SerpAPI).
35-
3. Scores each paper (1-10) with LLM relevance ranking.
36-
4. Lets you inspect results on demand, then optionally save or deliver them later.
37-
38-
## Key Features
39-
- Personalized LLM relevance ranking using your active projects.
40-
- Search intents for recent updates, best-fit papers, and broader discovery.
41-
- Local agent interface with brokered credentials and JSON output.
42-
- Per-project mail cadence (`daily` / `every_3_days` / `weekly`) in Topic Editor.
43-
- Local inbox mode with browser popup scheduling on a running PC.
44-
- Configurable cadence: `daily`, `every_3_days`, `weekly`.
45-
- Duplicate suppression with history tracking (`sent_ids.json`).
46-
- PubMed 429 retry/backoff handling.
47-
- Gemini with automatic fallback (`3.1-pro` -> `3.1-flash` -> `3.0-pro` -> `3.0-flash` -> `2.5-pro` -> `2.5-flash`) and optional Cerebras backup.
48-
- Output language control via `.env`:
49-
- `OUTPUT_LANGUAGE=en|ko|ja|es|...`
50-
51-
## Quick Start
52-
- Beginner (English): [docs/manuals/MANUAL_FIRSTTIME_EN.md](docs/manuals/MANUAL_FIRSTTIME_EN.md)
53-
- Full operations (English): [docs/manuals/MANUAL_EN.md](docs/manuals/MANUAL_EN.md)
54-
- Agent/tool integration (English): [docs/manuals/MANUAL_AGENT_EN.md](docs/manuals/MANUAL_AGENT_EN.md)
55-
- Beginner (Korean): [docs/manuals/MANUAL_FIRSTTIME_KR.md](docs/manuals/MANUAL_FIRSTTIME_KR.md)
56-
- Full operations (Korean): [docs/manuals/MANUAL_KR.md](docs/manuals/MANUAL_KR.md)
57-
- Agent/tool integration (Korean): [docs/manuals/MANUAL_AGENT_KR.md](docs/manuals/MANUAL_AGENT_KR.md)
32+
## Product Direction
33+
Paper Morning is no longer centered on "send me papers every morning."
34+
35+
The core product is now:
36+
- a human-facing on-demand paper search tool
37+
- a local agent-facing paper search tool with structured JSON output
38+
39+
The old digest and email workflows still exist, but they are now optional follow-up features.
40+
41+
## 2-1 Human Search
42+
Use Paper Morning when you want to check for relevant papers on demand.
43+
44+
What it supports:
45+
- `What's New`: recent updates first
46+
- `Best Match`: strongest-fit papers in the selected horizon
47+
- `Discovery`: adjacent but transferable work
48+
- Time horizons from `7d` to `5y`
49+
- Local inbox storage and browser-based result viewing
50+
51+
Best fit for:
52+
- researchers exploring a new direction
53+
- people who want context-fit papers, not just the newest papers
54+
- users who do not want to set up email first
5855

59-
## Recommended First Path (Search-First, Local)
60-
Generate your first personalized search result before email or automation setup.
56+
## 2-2 Agent Search
57+
Paper Morning can also act as a local paper-search tool for research agents.
6158

62-
1. Install dependencies:
59+
What it supports:
60+
- local HTTP JSON endpoint: `POST /api/agent/search`
61+
- CLI JSON mode: `python app/paper_digest_app.py --agent-search ...`
62+
- brokered local auth via `AGENT_API_TOKEN`
63+
- Gemini or a local/self-hosted OPENAI-compatible backend
64+
65+
Security model:
66+
- your agent gets only `AGENT_API_TOKEN`
67+
- Paper Morning keeps `GEMINI_API_KEY` or local backend credentials in `.env` or OS keyring
68+
- the agent never needs to see raw provider keys
69+
70+
Best fit for:
71+
- literature review agents
72+
- planning / scouting agents
73+
- local tool pipelines that need structured paper search output
74+
75+
## How It Works
76+
Shared engine for both human and agent paths:
77+
78+
1. Read research context
79+
2. Generate source-specific search queries
80+
3. Retrieve candidates from arXiv, PubMed, Semantic Scholar, and optional Google Scholar
81+
4. Apply intent-aware horizon filtering
82+
5. Build a shortlist
83+
6. Run listwise LLM reranking across the shortlist
84+
7. Return either:
85+
- HTML result view for humans
86+
- structured JSON for agents
87+
88+
## Start Here
89+
- Live preview first: [Open Live Web Preview](https://raw.githack.com/jeong87/paper-morning/main/docs/preview/index.html)
90+
- Human local usage: [docs/manuals/MANUAL_FIRSTTIME_EN.md](docs/manuals/MANUAL_FIRSTTIME_EN.md)
91+
- Agent/tool usage: [docs/manuals/MANUAL_AGENT_EN.md](docs/manuals/MANUAL_AGENT_EN.md)
92+
- Korean README: [docs/manuals/README_KR.md](docs/manuals/README_KR.md)
93+
94+
## Optional Workflows
95+
These are still supported, but they are no longer the main product story.
96+
97+
### Local install and local UI
98+
If you want to actually use Paper Morning on your machine:
6399

64100
```bash
65101
pip install -r deps/requirements.txt
102+
python app/local_ui_launcher.py
66103
```
67104

68-
2. Run local launcher:
105+
Main local UI:
69106

70-
```bash
71-
python app/local_ui_launcher.py
107+
```text
108+
http://127.0.0.1:5050
72109
```
73110

74-
3. The browser opens automatically. On first run, Setup Wizard opens automatically.
75-
4. Fill project description + Gemini key, then click `Save and Search Now`.
111+
### Local inbox and morning popup
112+
You can keep the app running and let it open the default search result automatically at your scheduled time.
113+
114+
Relevant settings:
115+
- `DELIVERY_MODE=local_inbox`
116+
- `AUTO_OPEN_DIGEST_WINDOW=true`
117+
- `SEARCH_INTENT_DEFAULT`
118+
- `SEARCH_TIME_HORIZON_DEFAULT`
119+
120+
### Email delivery
121+
Email is optional.
76122

77-
This verifies product value first without Gmail or GitHub Actions setup. After setup, the default path is:
78-
- Click one button to search and open the latest result in a browser tab
79-
- Or keep the local UI running and let the scheduled morning popup open automatically
123+
Priority:
124+
1. Local Inbox
125+
2. Gmail OAuth
126+
3. Gmail App Password
80127

81-
## GitHub Actions Mode (Advanced Automation)
82-
Use this only after local search quality is confirmed and you really want automation.
128+
Docs:
129+
- Gmail app password: https://myaccount.google.com/apppasswords
130+
- Full ops manual: [docs/manuals/MANUAL_EN.md](docs/manuals/MANUAL_EN.md)
131+
132+
### GitHub Actions automation
133+
Use this only if you really want unattended automation without relying on a running local PC.
83134

84135
Required workflow files:
85136
- `.github/workflows/paper-morning-digest.yml`
86137
- `.github/workflows/paper-morning-bootstrap-topics.yml`
87138

88-
Required secrets:
89-
- `PM_ENV_FILE` (full `.env` content)
139+
Required secret:
140+
- `PM_ENV_FILE`
90141

91-
Optional secret:
92-
- `PM_TOPICS_JSON` (full `user_topics.json` content)
93-
- `PM_PROJECTS_JSON` (project list only, for bootstrap query generation)
142+
Optional secrets:
143+
- `PM_TOPICS_JSON`
144+
- `PM_PROJECTS_JSON`
94145

95146
Tracked non-secret config:
96-
- `config/projects.yaml` (project descriptions used for bootstrap/default onboarding)
147+
- `config/projects.yaml`
97148

98149
## Important Settings
99-
- `ONBOARDING_MODE`: `preview` (default) or `daily`.
100-
- `SEARCH_INTENT_DEFAULT`: default local search mode (`best_match`, `whats_new`, `discovery`).
101-
- `SEARCH_TIME_HORIZON_DEFAULT`: default local search horizon (`7d`, `30d`, `180d`, `1y`, `3y`, `5y`).
102-
- `SEND_FREQUENCY` / `SEND_ANCHOR_DATE`: cadence policy.
103-
- `LOOKBACK_HOURS`: legacy fallback window for digest-style collection.
104-
- `LLM_MAX_CANDIDATES`: shortlist cap for listwise LLM reranking.
105-
- `OUTPUT_LANGUAGE`: summary language for LLM-generated reason/core/usefulness text.
106-
- `ENABLE_GOOGLE_SCHOLAR` + `GOOGLE_SCHOLAR_API_KEY`: optional SerpAPI source.
107-
108-
## Local Web Console
109-
Main path for onboarding and preview-first setup:
110-
111-
```text
112-
http://127.0.0.1:5050
113-
```
114-
115-
## Agent Mode
116-
Paper Morning can also be used as a local paper-search tool for research agents.
117-
118-
Security model:
119-
- your agent gets `AGENT_API_TOKEN`
120-
- Paper Morning keeps `GEMINI_API_KEY` or local backend credentials in `.env` / keyring
121-
- the agent never needs to see raw provider keys
122-
123-
Interfaces:
124-
- Local HTTP JSON endpoint: `POST /api/agent/search`
125-
- CLI JSON mode: `python app/paper_digest_app.py --agent-search ...`
150+
- `SEARCH_INTENT_DEFAULT`: default local search mode
151+
- `SEARCH_TIME_HORIZON_DEFAULT`: default local search horizon
152+
- `LLM_MAX_CANDIDATES`: shortlist cap for listwise reranking
153+
- `OUTPUT_LANGUAGE`: language for LLM-generated explanation fields
154+
- `AGENT_API_TOKEN`: local broker token for agent mode
155+
- `ENABLE_OPENAI_COMPAT_FALLBACK`: enable LM Studio / vLLM / other OpenAI-style local backend
156+
- `ENABLE_GOOGLE_SCHOLAR` + `GOOGLE_SCHOLAR_API_KEY`: optional SerpAPI source
126157

127158
## Build Distribution Files
128159
### Windows
@@ -142,45 +173,36 @@ This repo includes:
142173
- pages workflow: `.github/workflows/deploy-demo-pages.yml`
143174

144175
To publish demo on your fork:
145-
1. Enable GitHub Pages source as **GitHub Actions**.
146-
2. Run `deploy-demo-pages` workflow (or push to `main`).
147-
148-
Repo settings TODO (outside code):
149-
- Fill GitHub About fields (`description`, `website`, `topics`).
150-
- Publish the first tagged GitHub Release.
176+
1. Enable GitHub Pages source as **GitHub Actions**
177+
2. Run `deploy-demo-pages` workflow or push to `main`
151178

152179
## Template-First Repository Setup
153-
For global onboarding, prefer:
180+
For onboarding, prefer:
154181
- `Use this template` -> create your own repository instance
155182

156-
Fallback (advanced):
157-
- fork workflow if you explicitly need upstream fork linkage.
183+
Fallback:
184+
- fork only if you explicitly need upstream fork linkage
158185

159186
## Actions Cost Note (Private Repos)
160-
- GitHub Free private repos include limited Actions minutes.
161-
- If your workflow runs frequently (for example every 15 minutes), usage can exceed free minutes.
162-
- Local-first preview and local scheduling are recommended for cost-safe onboarding.
187+
- GitHub Free private repos include limited Actions minutes
188+
- frequent automation can exceed the free tier quickly
189+
- local-first search and local scheduling remain the cheaper default path
163190

164191
## Troubleshooting (Quick)
165-
- `Search query is empty`: generate and save topics/queries in Topic Editor.
166-
- `PubMed 429`: retries are automatic, but adding `NCBI_API_KEY` is recommended.
167-
- `Gemini model 404 / quota`: the live preview now retries multiple Gemini fallbacks automatically before surfacing an error.
168-
- No email received: check sender/recipient addresses, spam folder, and auth config.
169-
170-
## Delivery Priority
171-
1. Local Inbox (default, no email credentials required)
172-
2. Gmail OAuth (optional advanced mode)
173-
3. Gmail App Password (optional fallback)
174-
175-
Gmail app password docs:
176-
- https://myaccount.google.com/apppasswords
192+
- `Search query is empty`: generate and save topics/queries in Topic Editor
193+
- `PubMed 429`: retries are automatic, but adding `NCBI_API_KEY` is recommended
194+
- `Gemini model 404 / quota`: the preview and runtime try multiple Gemini fallbacks before failing
195+
- Agent `403 Forbidden`: check `AGENT_API_TOKEN` and confirm the request is coming from the local machine
196+
- No email received: check sender/recipient addresses, spam folder, and auth config
177197

178198
## Documentation
179199
- Beginner (English): [docs/manuals/MANUAL_FIRSTTIME_EN.md](docs/manuals/MANUAL_FIRSTTIME_EN.md)
180200
- Full operations (English): [docs/manuals/MANUAL_EN.md](docs/manuals/MANUAL_EN.md)
201+
- Agent/tool integration (English): [docs/manuals/MANUAL_AGENT_EN.md](docs/manuals/MANUAL_AGENT_EN.md)
181202
- Beginner (Korean): [docs/manuals/MANUAL_FIRSTTIME_KR.md](docs/manuals/MANUAL_FIRSTTIME_KR.md)
182203
- Full operations (Korean): [docs/manuals/MANUAL_KR.md](docs/manuals/MANUAL_KR.md)
183-
- Korean README (legacy): [docs/manuals/README_KR.md](docs/manuals/README_KR.md)
204+
- Agent/tool integration (Korean): [docs/manuals/MANUAL_AGENT_KR.md](docs/manuals/MANUAL_AGENT_KR.md)
205+
- Korean README: [docs/manuals/README_KR.md](docs/manuals/README_KR.md)
184206

185207
## Contact
186208
- nineclas@gmail.com

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.7.0
1+
0.7.1

0 commit comments

Comments
 (0)