METERPLANE · WEB · MAC · MCP

Meterplane

Europe's top five football leagues, in English and Chinese, as it breaks.

Meterplane reads the English football press as it publishes, fetches each story in full, tags it by club, topic and format, and translates it into Chinese. Live match data, podcasts and videos sit next to the news. It is a website, a macOS menu bar app and an MCP server, all fed by one pipeline I built and run myself.

meterplane.com
The meterplane.com front page: the lead story and this week's Premier League fixtures
5
Leagues
40
News feeds
123
Podcasts
41
YouTube channels
WHAT IT DOES

One football desk, three ways to read it

The same pipeline feeds the website, the Mac app and the MCP server, so a story, a score or a podcast point shows up everywhere at once.

Translated as it publishes

40 English-language feeds, from BBC Sport, Sky Sports and the Guardian to outlets that follow La Liga, Serie A, the Bundesliga and Ligue 1. Each story is fetched in full and translated with a shared glossary, so a player keeps one Chinese name everywhere.

Matchday, live

Live score and xG, a win-probability model that moves with the match, the live table and season projections. After full time: key moments, what the podcasts said, and a face-off page with both clubs' own posts side by side.

Podcasts you can read

123 football podcasts in one player that keeps playing as you move between pages. New episodes are transcribed, and what the hosts argue, and who said it, shows up next to the news.

Ask, with sources

Ask a question on any page, or press ⌥⇧Space in any Mac app. Answers cite the stories they draw on. Articles end with how each outlet covered the story, and hovering a name opens a card about that person.

Lives in the menu bar

The menu bar shows today's count and turns into the live score when a club you follow plays, with a notification for every goal. Widgets, Shortcuts, Spotlight and a three-minute audio brief for your clubs. Signed, notarized, and it updates itself.

Inside your AI tools

meterplane.com/mcp gives Claude, ChatGPT and Cursor ten tools: search the news, read articles and stories, look up players, clubs, tables, fixtures and matches, or ask a question and get an answer with sources.

SCREENS

What it looks like

Captured from meterplane.com in October 2026. Every page exists in English and in Chinese.

Aston Villa 2–1 Manchester City match page with expected goals bars and a win-probability chart
Match page: score, xG and the win probability across all 90 minutes.
A talkSPORT Daily Football episode page with play, share and save controls and related clubs
Podcast episode: one player that keeps playing as you browse.
The Meterplane MCP page with the server address and setup steps for Claude, ChatGPT and Cursor
MCP: connect Claude, ChatGPT or Cursor with one address.
The Chinese edition of the meterplane.com front page
The Chinese edition of the same front page, translated as stories publish.
ENGINEERING NOTES

Small problems that took real work

Most of Meterplane is plumbing. These are three pieces of it I'm glad I got right.

01

Transcripts that survive ad stitching

Podcast hosts stitch different ads into each download. One episode fetched from mainland China carried five 31-second slots our copy didn't have, so its timestamps drifted by up to two minutes. The episode page reads small windows of the listener's own file, hashes MP3 frames and matches them against a 24 KB fingerprint, so the highlighted line stays on the words being spoken.

02

One name per player

Chinese media often spell the same player more than one way. A glossary kept on the server pins one name per person, following Chinese media convention. Translation and the Mac app both read from it, so a player keeps the same name in every headline.

03

Share cards that lead back

Every article, match, player, club and episode has a share card, rendered by a headless browser in either language, light or dark, with a QR code back to the page. When search engines started fetching about 340 previews an hour, link previews moved from 2.2 MB PNGs to 80 KB JPEGs.

STACK

What it runs on

One server, one database file, and a native Mac app. Boring where it can be.

Pipeline

Python · FastAPI · SQLite

One FastAPI service and about 40 systemd timers for feeds, full text, translation, transcripts, social posts and media. SQLite holds it all, and Caddy serves the site.

AI layer

Relay · DeepSeek · MiniMax

Model calls go through Relay, my own AI gateway: DeepSeek first, MiniMax as the fallback, and MiniMax speech-to-text for podcasts, with every call metered.

Media

ffmpeg · yt-dlp · Playwright

Episodes are cut at silences into eight-minute parts for transcription. Club videos become 720-wide H.264 files plus six-second loops. Share cards are screenshots taken in a Playwright container.

Mac app

Swift · WidgetKit · App Intents

A native menu bar app with widgets, Shortcuts and Spotlight. Releases are universal, notarized DMGs, and the updater checks the checksum, notarization and Team ID before it installs anything.