Pull, don't scroll. RSS aggregator with LLM-powered summarization.
Project description
NoScroll - Pull, don't scroll
Language: English | 中文
What is NoScroll
NoScroll is a Python CLI that pulls information from RSS feeds, web pages, and Hacker News, then uses an LLM to summarize and rank the most useful items.
It is designed for a pull-based reading workflow: define sources once, run on schedule, read only the high-signal digest.
Installation
pipx install noscroll
If you need web source crawling support, install with crawler extras:
pipx install "noscroll[crawler]"
Minimal Sandbox Permissions
NoScroll needs outbound network access to fetch RSS feeds and Hacker News data.
Codex (~/.codex/config.toml or project .codex/config.toml)
# workspace-write has no network by default.
# Enable network access for NoScroll fetching.
sandbox_mode = "workspace-write" # read-only | workspace-write | danger-full-access
[sandbox_workspace_write]
network_access = true
Claude Code (project .claude/settings.json or ~/.claude/settings.json)
{
"permissions": {
"allow": ["Bash(noscroll *)"]
},
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": [
"hn.algolia.com",
"<YOUR_RSS_DOMAIN_1>",
"<YOUR_RSS_DOMAIN_2>"
]
}
}
}
OpenClaw (~/.openclaw/openclaw.json)
{
"tools": {
"allow": ["exec", "read"]
}
}
Skills Installation
Install the built-in noscroll skill to your target host:
# Claude Code (project scope)
noscroll skills install noscroll --host claude --scope project
# Codex (project scope)
noscroll skills install noscroll --host codex --scope project
# Claude Code (user scope)
noscroll skills install noscroll --host claude --scope user
# Codex (user scope)
noscroll skills install noscroll --host codex --scope user
# OpenClaw (workspace scope)
noscroll skills install noscroll --host openclaw --scope workspace --workdir /path/to/workspace
# OpenClaw (shared scope)
noscroll skills install noscroll --host openclaw --scope shared
Ask Command
Use natural language directly:
noscroll --env-file .env ask "Collect content from the past five days, one file per day"
This will generate daily digest files in outputs/.
Example generated text:
## AI (3)
1) Off Grid: Running text/image/vision models offline on mobile | Value: 4/5 | Type: Practice
- Conclusion: This open-source project demonstrates on-device multimodal inference on smartphones, with strong privacy and offline usability.
- Why it matters: On-device AI can reduce privacy risk and cloud inference cost, and is a good fit for offline-first products.
- Evidence links: https://github.com/alichherawalla/off-grid-mobile
## Other News (2)
4) uBlock rule: hide YouTube Shorts with one click | Value: 4/5 | Domain: Tech
## Life & Health (2)
6) AI avatars for rural healthcare support | Value: 3/5 | Domain: Health
Configuration
You can provide a config file in these places:
- CLI argument:
--config /path/to/config.toml - Environment variable:
NOSCROLL_CONFIG=/path/to/config.toml - Default path:
~/.noscroll/config.toml
Example config.toml:
[llm]
api_url = "https://api.openai.com/v1"
api_key = "your-api-key"
model = "gpt-4o-mini"
[paths]
subscriptions = "subscriptions/subscriptions.toml"
output_dir = "outputs"
[runtime]
debug = false
# subscriptions_mode = "auto" # auto|merge|external-only|builtin-only
For ad-hoc runs you can also override this from the CLI:
noscroll run --subscriptions /path/to/subscriptions.toml --subscriptions-mode merge
Experimental local CLI debate ranking
The default summarizer is unchanged. To use a local two-agent debate for the final ranking/summarization step, opt in explicitly:
noscroll run --ranker debate
This mode calls local non-interactive CLIs directly. It does not require or invoke
the global cli-debate skill.
Requirements:
claudeandcodexmust be installed and authenticated locally.--format jsonbypasses debate and returns raw fetched items.- Debate transcripts are not written by default. Use
--debug,--debate-archive, or--debate-archive-dirto keep prompts, candidates, and model outputs under~/.noscroll/cache/debate/. - Debate subprocesses run from your home directory with a reduced environment by
default. Set
NOSCROLL_DEBATE_INHERIT_ENV=1only if your local CLI auth requires the full parent environment.
Useful overrides:
noscroll run --ranker debate --debate-fallback default
noscroll run --ranker debate --debate-timeout 240
noscroll run --ranker debate --debate-archive
noscroll run --ranker debate \
--debate-claude-cmd "claude -p --permission-mode plan --no-session-persistence" \
--debate-codex-cmd "codex exec --sandbox read-only --skip-git-repo-check -"
Create a starter config:
noscroll init
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file noscroll-0.1.13.tar.gz.
File metadata
- Download URL: noscroll-0.1.13.tar.gz
- Upload date:
- Size: 99.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16900d8251ecd53645b4b876c12faee05a4cdddd33510334a002da1650bba232
|
|
| MD5 |
9f1bd9b138fa05cbfc46c441ea7c7572
|
|
| BLAKE2b-256 |
2f1a59fdea2ea22342502196e933f3fde39d6ed7ebc5133eef41cfd7cdec7055
|
File details
Details for the file noscroll-0.1.13-py3-none-any.whl.
File metadata
- Download URL: noscroll-0.1.13-py3-none-any.whl
- Upload date:
- Size: 80.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba49e20a02d5016537daa4ae7d3eb2f86d2ff49bd9c642015fe76fd5681cbec8
|
|
| MD5 |
06a48cbbd217ed86213bce030437cf34
|
|
| BLAKE2b-256 |
66b8da669e2fb13af403577fce7ef1022aecabe3eee66afdb376481be474262f
|