World News CLI
Website PyPI Python 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.
Website: nishal21.github.io/News-CLI · Author: nishal.dev · PyPI: worldnews-cli
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
Python / pip not on PATH (Windows)
If you see python is not recognized or pip is not recognized:
py -m pip install worldnews-cli
py -m worldnews
Or reinstall Python from python.org and enable Add python.exe to PATH.
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, Hacker News, 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)
- Animated ASCII boot / fetch splash (WORLD NEWS figlet + gradient)
- 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
Complex scripts (Malayalam, Hindi, Arabic, …)
Cell-grid terminals (including Windows Terminal) often cannot shape Indic scripts the way a browser does. World News keeps the TUI usable with a safe default:
| Mode | How to enable | Behavior |
|---|---|---|
| safe (default) | Settings → App → Scripts, or no flag | No Indic/Arabic glyphs in the TUI (list + reader); press o for browser |
| plain | --plain / --ascii |
Same as safe for hostile scripts |
| native | --native-titles |
Show native script in list/reader (may still overlap on Windows Terminal) |
Fonts / hosts
- Windows: use Windows Terminal, not legacy
cmd.exe. Set the profile font to Nirmala UI or Noto Sans Malayalam. - Termux: install a Malayalam-capable font (e.g. Noto) via your font packages.
- Linux / macOS: UTF-8 locale (
LANG=*.UTF-8) + Noto / Meera / Rachana.
Startup forces UTF-8 I/O and enables Windows virtual terminal processing when possible. Full OpenType shaping still requires a capable terminal + font — for clearest reading press o (open in browser).
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
Website (Astro)
cd docs
npm install
npm run dev
npm run build
License
MIT
Metadata
Release files for worldnews-cli 0.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| worldnews_cli-0.4.4.tar.gz | 109.0 kB | Without provenance | Details for worldnews_cli-0.4.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| worldnews_cli-0.4.4-py3-none-any.whl | Python 3 | none | any | Details for worldnews_cli-0.4.4-py3-none-any.whl |
Total release size: 223.4 kB
Release files / worldnews_cli-0.4.4.tar.gz
| Download URL | worldnews_cli-0.4.4.tar.gz |
|---|---|
| Size | 109.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85cb28b52a062f1f567bb0827eaecf0144dd61a24ecddf5194228202a807b759
|
|
BLAKE2b-256 checksum How to use checksums |
d6d11814e0f1994f2656b10ee33335dda57c4308560c08356f4bcaa174c49607
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / worldnews_cli-0.4.4-py3-none-any.whl
| Download URL | worldnews_cli-0.4.4-py3-none-any.whl |
|---|---|
| Size | 114.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6a7fc577d75d4409724fff1c178766ce9d9fca01cc49f28dad0f24b9a8abf26a
|
|
BLAKE2b-256 checksum How to use checksums |
ae8807d19a5202b3d440cda82c8a995832e0425fd4a31ecc0b7a92f1df433cc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Security for worldnews-cli 0.4.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.