Full-screen Textual TUI news reader with RSS, themes, AI summarize, and TTS
Project description
World News CLI
PyPI version Python versions License: MIT
Full-screen terminal news reader built with Textual. Sidebar, headlines, article pane, themes, AI summarize/explain, and text-to-speech that can highlight the sentence being read.
Requires Python 3.9+.
Install
Fastest path for most people:
pip install worldnews-cli
Isolated tool install (recommended on shared machines):
pipx install worldnews-cli
# or
uv tool install worldnews-cli
Optional extras for offline/gTTS playback helpers:
pip install "worldnews-cli[voice]"
From a local clone (developers):
pip install -e .
# or
pip install -r requirements.txt
Run
worldnews
# short alias:
news
If the console script is not on your PATH:
python -m worldnews
# Windows launcher often works as:
py -m worldnews
Useful flags:
worldnews --category tech
worldnews --chat
worldnews --summary
worldnews --offline
worldnews --add-feed "My Blog" "https://example.com/feed.xml"
worldnews --version
Keys
| Key | Action |
|---|---|
j / k or arrows |
Move in the list |
Enter |
Open article (on a phone-width terminal: full-screen reader) |
Esc / q |
Back to list, or quit |
a / e |
AI summarize / explain |
t |
Speak article (press again to stop) |
/ |
Filter headlines |
Ctrl+P |
Command palette |
s |
Settings (App, AI, Voice) |
[ / ] |
Previous / next feed |
1–9 |
Jump to a numbered category |
b |
Bookmark |
o |
Open in browser |
? |
Help |
On narrow terminals (about under 84 columns), the app switches to a phone layout: Enter opens the reader full width, Esc/Back returns to the list, and a Back button appears in the action row.
What you get
- Categories such as General, Tech, AI, Sports, Anime, plus All, Bookmarks, Offline, and My Feeds
- Custom sites via palette
add-feed(website or RSS; feed discovery when possible) - Infinite scroll on headline lists (50 at a time)
- Themes: Newsroom (default), Phosphor, Broadsheet, Nord, GitHub Dark, High Contrast
- AI summarize / explain / chat (default free provider needs no key; many others supported)
- Speak (
t) with free Edge TTS by default; optional Fish Audio, Gemini, Groq, and paid live providers - Paste a voice id or library URL in Settings → Voice when you use a provider API key
Config lives under ~/.config/worldnews/ (older ~/.news-cli-*.json files are still read).
AI
Default free path: OpenCode Zen (big-pickle), no API key.
Also wired: Hack Club AI, Ollama, LM Studio, Groq, Gemini, OpenRouter, and others.
In the app: s → AI tab (or palette → ai-provider). Pick a provider/model, paste a key if required, Save key, Apply AI.
Hack Club keys: ai.hackclub.com
Voice / TTS
| Provider | Cost | Key |
|---|---|---|
| Edge TTS | Free | None (default) |
| Fish Audio | Free tier | fish.audio (s2.1-pro-free, news/narrator voices) |
| Gemini TTS / Live | Free tier | Google AI Studio |
| Groq Orpheus | Free tier | Groq |
| Deepgram Aura-2 / Live | Free credit | Deepgram |
| OpenAI / Realtime | Paid | OpenAI |
| ElevenLabs / Live | Free/paid | ElevenLabs |
| Cartesia / Live | Paid | Cartesia |
| gTTS | Free | None |
Flow: s → Voice → provider → model → voice (or paste id/URL) → API key if needed → Apply voice → t.
You can also set FISH_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY, and similar env vars.
Provider docs: Fish · Gemini speech · Groq TTS
Phone and small terminals
This is a terminal UI. On Android, Termux is the usual host:
pkg update && pkg install python libxml2 libxslt libjpeg-turbo
pip install worldnews-cli
# optional
pip install "worldnews-cli[voice]"
pkg install termux-api ffmpeg
python -m worldnews
Other options: JuiceSSH/ConnectBot into a machine that already has worldnews, or a-Shell/iSH on iOS with Python + pip.
Width behavior (approximate):
| Columns | Layout |
|---|---|
| 100+ | Sidebar + list + reader |
| 84–99 | List first; Enter opens reader |
| under 84 | Single column; Enter = reader, Esc = list |
| under 56 | Compact rows and short keyhints |
Links open with termux-open-url when Termux API is installed.
Development
git clone <your-repo-url>
cd news-cli
pip install -e ".[dev,voice]"
python -m worldnews
License
MIT
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 worldnews_cli-0.4.2.tar.gz.
File metadata
- Download URL: worldnews_cli-0.4.2.tar.gz
- Upload date:
- Size: 90.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1bd4d09078691232006335a629d4a6c005559fd4299c7c9ecfb8195b9241782
|
|
| MD5 |
281b1d8787603af40a888e2191ef24e9
|
|
| BLAKE2b-256 |
d95aca3c055ee251f0036c4eb9d12cc254c63c07893eea984965c80ca075345d
|
File details
Details for the file worldnews_cli-0.4.2-py3-none-any.whl.
File metadata
- Download URL: worldnews_cli-0.4.2-py3-none-any.whl
- Upload date:
- Size: 96.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
612b966b2ada10902b09cb83e302059041ba91228fa329d1669db0fdcb80ffc4
|
|
| MD5 |
277cd5b8f8dd62efefd2889d3afcd3ab
|
|
| BLAKE2b-256 |
291e3fb142b794db49286c4c7ad4953994e0cf670bc4f5c0852b644c8dece8a9
|