Newsmoji. Why read when you don't have to?

qarl1 pts0 comments

GitHub - qarl/newsmoji: The hottest news story, retold entirely in emoji, as a newspaper front page. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

qarl

newsmoji

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>17 Commits<br>17 Commits

.gitignore

.gitignore

LICENSE

LICENSE

NotoEmoji-mono.woff

NotoEmoji-mono.woff

README.md

README.md

newsmoji.py

newsmoji.py

screenshot.png

screenshot.png

View all files

Repository files navigation

newsmoji

The single hottest news story, retold entirely in emoji , laid out like a<br>newspaper front page. The future of being informed.

Read today's edition, live →

Why

Let's be adults about this: nobody reads anymore. You skimmed a headline,<br>glanced at the thumbnail, and felt informed. That instinct is correct -<br>newsmoji simply finishes the thought.

Emoji is the first genuinely universal language: every device on Earth<br>ships the same glyphs, no translation required, none of the usual trouble<br>with grammar. Humanity spent five thousand years migrating away from<br>hieroglyphics, and with the benefit of hindsight the Egyptians were simply<br>early. newsmoji closes the loop and returns the news to pictures, where it<br>belongs.

Consider it a head start. When the official Duolingo emoji course finally<br>ships there will be a stampede - so get fluent now, while reading 📰🌍🔥 is<br>still a rare and marketable skill, and you'll be the only person in the<br>meeting who knows what is going on in the world.

What it does

newsmoji.py runs one cycle, end to end:

Fetches a basket of major-outlet RSS feeds into a pooled story list.

Picks - Anthropic call #1 (Claude Sonnet) chooses the single hottest<br>story, skipping ones it covered in the last few editions, and renders the<br>headline as a short emoji glyph.

Reads the chosen story's full article body, so that you do not have to.

Translates - Anthropic call #2 (Claude Sonnet) retells the whole story<br>as a tight emoji narrative: a hard 70-140 emoji, the modern attention<br>span, generously rounded up.

Renders a self-contained index.html: a portrait-broadsheet<br>newspaper - emoji masthead, lead emoji, the emoji story in newsprint<br>columns - auto-sized to fit the screen with no scrolling (scrolling is a<br>form of reading), and set to reload itself every 10 minutes. The page is<br>100% emoji: not one word of text anywhere, rendered black-on-newsprint in<br>a tasteful monochrome emoji font.

Run it on a schedule (say a */10 cron) and you have a news page that keeps<br>itself current, indefinitely, with no further need for words.

Running it

export ANTHROPIC_API_KEY=sk-ant-... # a pay-as-you-go console key<br>python3 newsmoji.py

Pure Python standard library - no pip, no venv. One cycle makes two<br>Anthropic API calls (pick + translate) plus one article-page fetch. The API<br>key can instead live in newsmoji.env (a KEY=VALUE file) in the state<br>directory.

Output & state

Everything lives in the state directory - ~/newsmoji/ by default,<br>override with NEWSMOJI_STATE_DIR:

File<br>What

index.html<br>the rendered page - this is the output

newsmoji.log<br>verbose per-cycle log, self-trimming at 5 MB

history.json<br>recently-covered stories, so the next pick won't repeat

feeds.txt<br>optional - one RSS URL per line, replaces the default basket

The page loads NotoEmoji-mono.woff (bundled in this repo) for its<br>monochrome look - serve that file alongside index.html.

Robustness

The page never breaks. On any failure - a feed down, an API call failing, a<br>bad render - the cycle aborts and the last good index.html is left<br>untouched. Worst case the page is a little stale, never broken or blank. The<br>public must be informed.

Configuration

Variable<br>Default<br>Purpose

ANTHROPIC_API_KEY<br>(or from newsmoji.env)<br>Anthropic API key

NEWSMOJI_STATE_DIR<br>~/newsmoji<br>state + output directory

License

GPLv3 - see LICENSE. Free as in speech, itself a legacy text<br>format.

The bundled NotoEmoji-mono.woff is Google's Noto Emoji , used under the<br>SIL Open Font License 1.1.

About

The hottest news story, retold...

newsmoji emoji page story news search

Related Articles