The 20-Line File That Replaced My Morning Scroll

The 20-Line File That Replaced My Morning Scroll
Photo by Ashni / Unsplash

How I Built a Personalized News Briefing That Reads Itself to Me Every Morning

My work depends on keeping up with AI and technology — not just the model releases, but the policy debates, regulatory shifts, and social implications. I write, I advise, I do thought leadership and narrative strategy. The reading list is wide. None of it is optional.

The catch is time. I'm running a freelance practice, studying part-time, and co-parenting a two-year-old. The quiet morning hour to work through a reading list doesn't exist. And even if your situation looks nothing like mine, there's probably more worth reading than you have hours for.

So I built a fix. Except I didn't build an app. I wrote a command.

Every morning, before I've made coffee, a Telegram message arrives on my phone. It's an audio file — my own AI reading me a summary of the day's news, pulled from all the sources I actually follow, distilled down to what actually matters to me.

Here's how you can do that too, without any technical knowledge.

The Stack

  • Claude Code — Anthropic's CLI tool, the engine behind the whole thing
  • A browser cookie export — how Claude proves it has a subscription
  • ElevenLabs — converts the summary to speech
  • A Telegram bot — delivers the audio file to my phone

A note on RSS, which comes up later: it's a standard format that most publications use to broadcast new articles — basically a live list of their latest content that any app or tool can read. You don't need to do anything with it directly; Claude handles it.

Four components. Let's go through each.


Step 1: Getting the Audio to Your Phone — Set Up Telegram

If you're not on Telegram yet: it's a free messaging app, available on iOS and Android at telegram.org, that also lets you receive automated messages from bots — which is what we'll use it for here.

The reason we use Telegram is simple: once Claude has generated the audio file on your computer, it needs a way to get it onto your phone. Telegram's bot system is the easiest way to do that — you create a small automated account (a bot), and Claude sends the audio file to it. The file lands in your Telegram app like a regular message, ready to play. No email attachments, no cloud syncing, no opening another app.

Creating a Telegram bot sounds more complicated than it is. Telegram lets anyone create a bot in about two minutes.

  1. Open Telegram and search for @BotFather — this is Telegram's official bot for creating bots.
  2. Send the message /newbot and follow the prompts. You'll pick a name and a username.
  3. BotFather will give you a bot token — a string that looks like 123456789:ABCDEFabcdef.... Copy it.

Next, you need your chat ID — the identifier for your personal conversation with the bot.

  1. Start a conversation with your new bot (search for it by username and hit Start).
  2. Open this URL in a browser, replacing YOUR_TOKEN with your token:
    https://api.telegram.org/botYOUR_TOKEN/getUpdates
  3. Send your bot any message, then refresh the page. You'll see a JSON response. Find "chat": {"id": 123456789} — that number is your chat ID.

Store both values somewhere safe. You'll need them shortly.


Fetching content that's publicly available on the internet is easy for any AI — Claude, ChatGPT, or otherwise. The problem is when content sits behind a login. If you have a New York Times subscription, a real human can read the full article because they're logged in. But Claude, trying to fetch that same article, gets the same paywalled teaser anyone else sees without an account.

The solution is to tell Claude how to prove it's you. When you log into a website, your browser quietly stores a small file called a cookie — a token that says "this person is logged in." If you hand that cookie to Claude, it can present it when fetching the article, and the site lets it through just as it would let you through. You're not hacking anything — you're just sharing your own login credentials with your own tool.

The cleanest way to do this is with the Chrome or Firefox extension Cookie-Editor. To install it: in Chrome, click the three dots in the top-right corner, go to Extensions → Visit Chrome Web Store, then search for "Cookie-Editor" and click Add to Chrome. In Firefox, go to the menu → Add-ons and themes and search there. It's free, takes about 30 seconds, and will add a small icon to your browser's extension bar.

  1. Log into the New York Times (or whatever subscription you're using) in your browser.
  2. Open Cookie-Editor from your extensions bar.
  3. Click ExportExport as JSON. This copies all cookies for that domain to your clipboard.
  4. Now you need to save this as a file on your computer. Open any plain text editor — TextEdit on Mac, Notepad on Windows — paste the contents, and save it. Before saving, create a folder called news_cookies somewhere easy to find (your home folder works fine), and save the file inside it as nytimes.json.

That's it. Claude will use this file when fetching articles, so the site thinks you're making a normal logged-in request.

A note on security: this file contains your login credentials in a readable form. Don't send it to anyone, and don't upload it anywhere. Treat it like a password written on a piece of paper.


Step 3: Turning Your Summary into Audio — Set Up ElevenLabs

ElevenLabs is an AI voice service that converts written text into spoken audio. You give it a block of text, it gives you back an MP3 that sounds like a real person reading it. This is what transforms your news summary from a document into something you can listen to on the go.

To get started:

  1. Go to elevenlabs.io and create a free account. The free tier gives you enough monthly usage to run this briefing every day.
  2. Once you're logged in, click on your profile icon in the top right and go to API Keys. Generate a new key and copy it — this is your ELEVEN_API_KEY. You'll need this in the next step.
  3. For the voice, ElevenLabs has a library of options at elevenlabs.io/voice-library. Each voice has an ID — a short string of letters and numbers. Find one you like, copy its ID, and that's your ELEVEN_VOICE_ID. If you're not sure, leave the default for now: pNInz6obpgDQGcFmaJgB is a clear, neutral voice called Adam that works well for news.

Step 4: The Brain That Runs It All — Set Up Claude Code

At this point you've set up Telegram to get the audio onto your phone, secured your login credentials so Claude can access your subscription content, and have your ElevenLabs voice ready. Now comes the brain of the whole operation.

A quick note on what Claude Code actually is: it's a command-line tool made by Anthropic (the company behind Claude) that lets you run AI directly from your terminal. If you've never used a terminal before, it might look intimidating — but setting it up is genuinely straightforward. You install it with a single command and it walks you through the rest. The official docs are at docs.anthropic.com/claude-code and cover everything from installation to first use.

Once you have Claude Code running, you need to give it your API keys — the passwords that let it talk to your other services on your behalf. You store these in a settings file so Claude can find them automatically without you typing them each time.

To create that file, open your terminal and run the command for your operating system:

  • Mac: open -a TextEdit ~/.claude/settings.json
  • Windows: notepad %USERPROFILE%\.claude\settings.json

This opens the file directly in a normal text editor. If the file doesn't exist yet, it will be created automatically. Paste in the block below, fill in your values, and save it like any other document (Cmd+S on Mac, Ctrl+S on Windows).

Mac users: TextEdit sometimes saves in rich text format by default, which will cause errors. Before pasting anything, go to Format → Make Plain Text to switch modes. You only need to do this once.

{
  "env": {
    "ELEVEN_API_KEY": "your_elevenlabs_api_key_here",
    "ELEVEN_VOICE_ID": "your_elevenlabs_voice_id_here",
    "TELEGRAM_BOT_TOKEN": "your_bot_token_here",
    "TELEGRAM_CHAT_ID": "your_chat_id_here"
  }
}

The Telegram values are what you copied in Step 1. The ElevenLabs values are what you just collected in Step 3.


Step 5: Putting It All Together — Write the News Command

This is the part that makes it all click. Claude Code lets you create custom commands — plain text files where you write instructions in plain English, exactly as you'd explain a task to a person. When you type /news in Claude Code, it reads that file and executes everything in it.

To create it, run the same kind of command as before in your terminal:

  • Mac: open -a TextEdit ~/.claude-commands/news.md
  • Windows: notepad %USERPROFILE%\.claude-commands\news.md

Paste in the block below and save. Here's the full instruction set I use:

Fetch full article content from these sources using the saved cookies below.

Cookie files (Netscape format):
- New York Times: ~/.config/news_cookies/nytimes.json

ElevenLabs TTS:
- API key: $ELEVEN_API_KEY (set in shell profile or ~/.claude/settings.json env)
- Voice ID: $ELEVEN_VOICE_ID (default: pNInz6obpgDQGcFmaJgB)
- Model: eleven_turbo_v2_5

Workflow:
1. Get today's RSS feed for each source
2. Pick the 5 most significant stories from the last 24 hours
3. For each story, fetch the full article HTML using the cookies for that domain,
   extract the body text (ignore nav, ads, footers)
4. Summarize in max. 50 words
5. Write to ~/news/YYYY-MM-DD-news.md
6. Strip markdown formatting, POST to ElevenLabs, save as YYYY-MM-DD-news.mp3
7. Send the mp3 to Telegram via:
   curl -sS -F chat_id=$TELEGRAM_CHAT_ID \
        -F audio=@"YYYY-MM-DD-news.mp3" \
        "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendAudio"

When you type /news in Claude Code, it runs this entire chain — RSS fetch, authenticated article scrape, AI summarization, TTS conversion, and Telegram delivery.


What It Actually Looks Like

Here's a real output from a recent morning:

Anthropic Launches Claude Managed Agents for Enterprise — Anthropic announced Claude Managed Agents, giving businesses out-of-the-box infrastructure to build and deploy AI agent fleets. The product includes an agent harness, sandboxed environments, and cloud-based autonomous runs. ARR has now surpassed $30 billion.

That kind of entry for each of the key stories, read aloud in a calm voice. By the time I've finished my coffee I know what's happened, what's worth a closer look, and what I can ignore.

The whole process — from RSS fetch to Telegram delivery — takes about 90 seconds.


Adding More Sources

The setup scales cleanly. For each new subscription:

  1. Export the cookie from that domain using Cookie-Editor.
  2. Save it to ~/.config/news_cookies/sourcename.json.
  3. Add a line to your news command referencing the new cookie file.

Claude handles the rest — it knows to use the right cookie for the right domain.


What Else You Could Put in There

The news briefing is just one application of this pattern. Once the setup is in place — Claude reading something, summarizing it, turning it into audio, delivering it to your phone — you can swap in almost anything.

A few directions worth exploring:

Paywalled and subscription news — exactly what this tutorial covers. Any publication you subscribe to can be added with its own cookie file.

Public news sources — many outlets publish full RSS feeds without authentication. You can pull in Reuters, BBC, or any publication that doesn't require a login, with no cookie setup needed.

Your calendar — instead of news, Claude fetches your day's events and reads them back to you. You'd know your schedule for the day before you've looked at a single screen.

Your email inbox — Claude scans the last 24 hours of email, filters out newsletters and noise, and gives you a one-minute summary of what actually needs your attention.

Your notes from yesterday — if you keep a daily journal or work log, Claude can read the previous day's entry and brief you on where you left off. A spoken handover from yesterday-you to today-you, while you're still making coffee.

The underlying logic is always the same: tell Claude what to fetch, how to summarize it, and where to send it. The rest is just configuration.


The Bigger Point

I didn't want more AI in my life. I wanted less screen time.

That reframe matters. Most AI tools are designed to capture attention — to give you another feed, another dashboard, another thing to open and scroll. This does the opposite. It takes the content I already pay for and gets it off the screen entirely.

I didn't build a product. I wrote a 20-line markdown file. Now I get a personalized audio briefing every morning from sources I actually trust, in a format that fits how I actually live — walking, commuting, making coffee.


I'm writing more about building practical AI workflows for individuals and small teams. Subscribe down below to support my work and always get the new guides straight to your inbox.