Skip to main content

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
19 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

worldnews_cli-0.4.2.tar.gz (90.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

worldnews_cli-0.4.2-py3-none-any.whl (96.2 kB view details)

Uploaded Python 3

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

Hashes for worldnews_cli-0.4.2.tar.gz
Algorithm Hash digest
SHA256 f1bd4d09078691232006335a629d4a6c005559fd4299c7c9ecfb8195b9241782
MD5 281b1d8787603af40a888e2191ef24e9
BLAKE2b-256 d95aca3c055ee251f0036c4eb9d12cc254c63c07893eea984965c80ca075345d

See more details on using hashes here.

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

Hashes for worldnews_cli-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 612b966b2ada10902b09cb83e302059041ba91228fa329d1669db0fdcb80ffc4
MD5 277cd5b8f8dd62efefd2889d3afcd3ab
BLAKE2b-256 291e3fb142b794db49286c4c7ad4953994e0cf670bc4f5c0852b644c8dece8a9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page