https://github.com/didrod205/wiki-beef
The pettiest edit wars on Wikipedia, right now. Crawls the live MediaWiki API for the most-reverted articles, scores the beef, decodes what they're fighting about. No API key, 100% public data. Self-updating leaderboard.
https://github.com/didrod205/wiki-beef
cli crawler data edit-war leaderboard mediawiki meme no-api-key typescript wikipedia
Last synced: about 4 hours ago
JSON representation
The pettiest edit wars on Wikipedia, right now. Crawls the live MediaWiki API for the most-reverted articles, scores the beef, decodes what they're fighting about. No API key, 100% public data. Self-updating leaderboard.
- Host: GitHub
- URL: https://github.com/didrod205/wiki-beef
- Owner: didrod205
- License: mit
- Created: 2026-06-22T23:25:11.000Z (12 days ago)
- Default Branch: main
- Last Pushed: 2026-06-30T04:37:07.000Z (5 days ago)
- Last Synced: 2026-06-30T06:21:25.893Z (5 days ago)
- Topics: cli, crawler, data, edit-war, leaderboard, mediawiki, meme, no-api-key, typescript, wikipedia
- Language: TypeScript
- Homepage: https://didrod205.github.io/wiki-beef/
- Size: 161 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# wiki-beef π₯©
**The pettiest edit wars on Wikipedia, right now.** Crawls the live MediaWiki API for the articles being reverted to death, scores the beef, and decodes what people are actually fighting about β borders, birthplaces, βis a hot dog a sandwich.β No API key, 100% public data, nothing uploaded.
### π [**Live leaderboard β**](https://didrod205.github.io/wiki-beef/) Β· auto-updated every few hours
The site crawls Wikipedia straight from your browser (hit **π refresh live** to re-crawl any language edition). Same engine in your terminal:
```bash
npx wiki-beef
```
```
π₯© wiki-beef β edit wars on en.wikipedia Β· last 24h
1. πΊοΈ Nikola Tesla Β· Borders & nationality
ββββββββββββββββ 290 Β· 21 reverts Β· 10 editors Β· 4.2/h Β· last 12m ago
βrv, he was Serbian-American per consensus, see talkβ
2. β½ List of FIFA World Cup top goalscorers Β· Sports
ββββββββββββββββ 151 Β· 10 reverts Β· 8 editors Β· 2.3/h Β· last 1h ago
βUpdated Messi's goals in FIFA world cupβ
3. π₯ Shrek the Third Β· General beef
ββββββββββββββββ 146 Β· 9 reverts Β· 3 editors Β· 36/h Β· last 6h ago
βyou just revert it without explaining whyβ
2,000 reverted edits Β· 1,198 contested pages Β· live from the MediaWiki API, no key.
```
## Why
Wikipedia is a quiet, never-ending war. Most of it happens in the **revert** β one
editor undoes another, then itβs undone back, over a birthplace, a date, a flag, a
pronoun, a comma. `wiki-beef` finds the articles where thatβs happening *right now*,
ranks them by how hot the fight is, sorts the genuine disputes from plain vandalism
cleanup, and surfaces the actual edit summaries β the receipts.
Itβs a **window into public data, not a verdict.** A high score means a lot of
reverts by a lot of editors, fast β not that anyone is wrong. The drama is already
public; this just ranks it.
## How it works
```
MediaWiki recentchanges API βcrawlβ reverted edits βgroupβ contested pages
(mw-reverted tag, no key) βscoreβ reverts Γ editors Γ velocity
βclassifyβ nationality / politics / bio / β¦
ββ ranked leaderboard
```
- **Crawl** (`crawlReverts`) β pulls the edits tagged `mw-reverted` over a time
window from any language edition. Browser-safe (no `node:*`), so it runs in the
CLI, in CI, and live in the web page (MediaWiki allows anonymous CORS).
- **Score** (`scoreBeef`) β `reverts Γ editors Γ velocity`, **boosted** by
real-dispute signals (`per talk`, `POV`, `consensus`, `unsourced`) and
**penalized** for vandalism signals (`rvv`, `blanking`) β so genuine fights
outrank routine cleanup.
- **Classify** (`classify`) β a curated lexicon sorts each fight into borders &
nationality πΊοΈ, politics ποΈ, sports β½, pop culture π¬, bios π€, grammar βοΈ,
vandalism π§Ή, or general beef π₯.
- The **live site** is static: a GitHub Action re-crawls every few hours, commits a
fresh `beefs.json`, and the page renders it β no server, no database.
## Install & usage
```bash
npm i -g wiki-beef # then: wiki-beef
# or zero-install:
npx wiki-beef
```
```bash
wiki-beef # today's top fights on en.wikipedia
wiki-beef --lang de # any edition: de, fr, es, ru, ja, zh, ptβ¦
wiki-beef --hours 6 --top 25 # tighter window, more results
wiki-beef --ns all # include talk/user pages, not just articles
wiki-beef --md > beefs.md # a Markdown table
wiki-beef --json | jq '.beefs[0]' # the full report as JSON
```
`beef` is a shorter alias for the same command.
| Flag | |
| --- | --- |
| `--lang ` | Wikipedia language edition (default `en`) |
| `--hours ` | how far back to look (default 24) |
| `--top ` | how many fights to show (default 15) |
| `--ns <0\|all>` | namespace β articles only (default) or everything |
| `--min-reverts ` | min reverts to count as a beef (default 2) |
| `--json [file]` / `--md [file]` | machine-readable / Markdown output |
## Library
The core is pure and browser-safe β crawl + process anywhere:
```ts
import { getBeefs, crawlReverts, processChanges } from "wiki-beef";
const report = await getBeefs({ lang: "en", hours: 24, top: 20 });
report.beefs[0]; // { title, score, reverts, editors, category, about, quotes, historyUrl, β¦ }
// or split it:
const changes = await crawlReverts({ lang: "fr", hours: 12 });
const beefs = processChanges(changes, { lang: "fr" });
```
## Privacy & etiquette
All data comes from Wikipediaβs **public** [MediaWiki API](https://www.mediawiki.org/wiki/API:Main_page) β recent changes that are visible to anyone. No account, no key, nothing about *you* is sent anywhere. The crawler identifies itself with a descriptive `User-Agent` and a polite request cadence. Be a good citizen: donβt crank `--hours` absurdly high in a tight loop.
It points at *articles*, never at individual editors β usernames are only counted, never ranked or shamed.
## Contributing
The most useful contribution is **a better classifier** β a keyword that catches a
kind of fight the lexicon misses, or a score tweak that better separates real
disputes from cleanup. See [CONTRIBUTING.md](CONTRIBUTING.md).
## License
MIT Β© [didrod205](https://github.com/didrod205)
---
Itβs public Wikipedia drama β no judgment, just the receipts.
## π Sponsor
Find this useful? [**Sponsor on GitHub**](https://github.com/sponsors/didrod205) β it keeps these projects maintained.
[](https://github.com/sponsors/didrod205)