reweb
The retweet for the web.
What is this?
Reweb lets you publicly share the things you read online. When you reweb a page, it gets added to your personal RSS feed. Anyone can subscribe to your feed in their favourite reader and see what you are reading.
The reweb network also tracks how many people have rewebbed something, so popular content surfaces naturally through trending lists and counters.
How it works
Your identity is your website. You register with your site URL (e.g. yoursite.com),
prove you own it by placing a verification tag on your site, and receive an API key.
Then you reweb things using the Chrome extension or the API directly.
Your rewebs are served as a standard RSS 2.0 feed with optional social metadata (who else rewebbed it, how many people) embedded via RSS namespace extensions. Any feed reader works. Reweb-aware clients can show the social layer too.
Get started
Get the Chrome extensionExample feed
This is what a reweb feed looks like. Standard RSS, with extra metadata that feed readers simply ignore.
<item>
<title>On Building for the Open Web</title>
<link>https://example.com/open-web</link>
<description>A must-read on web standards</description>
<reweb:count>12</reweb:count>
<reweb:rewebbedBy>
<reweb:user href="https://alice.github.io">alice.github.io</reweb:user>
<reweb:user href="https://bob.neocities.org">bob.neocities.org</reweb:user>
</reweb:rewebbedBy>
</item>For developers: the reweb namespace
Reweb feeds are standard RSS 2.0 with a custom XML namespace that embeds social metadata. Any RSS reader can consume a reweb feed normally. If you want to build a reweb-aware reader or client, here is everything you need.
Namespace declaration
The root <rss> element declares the namespace:
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:reweb="https://reweb.rewildtheweb.org/ns">
Elements
| Element | Parent | Description |
|---|---|---|
<reweb:count> |
<item> |
Integer. Total number of users across the network who have rewebbed this URL. |
<reweb:rewebbedBy> |
<item> |
Container for <reweb:user> elements. May be absent if no other users have rewebbed the URL. Limited to a subset of recent users; use the API for the full list. |
<reweb:user> |
<reweb:rewebbedBy> |
A user who rewebbed this URL. The href attribute is the user's site URL (e.g. https://alice.github.io). The text content is the hostname (e.g. alice.github.io). |
Standard RSS elements used
| Element | Description |
|---|---|
<title> |
The page title of the rewebbed URL. |
<link> |
The canonical (normalized) URL that was rewebbed. |
<description> |
The user's optional note about why they rewebbed it. May be absent. |
<guid> |
Format: reweb:{site_url}:{canonical_url}. Unique per user per URL. |
<pubDate> |
When the user rewebbed the URL (RFC 2822 format). |
JSON API
For richer integrations, a public JSON API is also available:
| Endpoint | Description |
|---|---|
GET /api/url/info?url=... |
Returns { count, rewebbed_by: [{ site_url, at }] } for any URL. |
GET /api/trending |
Returns the top rewebbed URLs this week. |
GET /feed/{site_url} |
The RSS 2.0 feed for a given user (e.g. /feed/alice.github.io). |
Parsing example
Extracting reweb data from a feed in JavaScript:
const res = await fetch("https://reweb.rewildtheweb.org/feed/alice.github.io");
const xml = new DOMParser().parseFromString(await res.text(), "text/xml");
const ns = "https://reweb.rewildtheweb.org/ns";
for (const item of xml.querySelectorAll("item")) {
const title = item.querySelector("title")?.textContent;
const link = item.querySelector("link")?.textContent;
const note = item.querySelector("description")?.textContent;
const count = item.getElementsByTagNameNS(ns, "count")[0]?.textContent;
const users = [...item.getElementsByTagNameNS(ns, "user")]
.map(u => ({ href: u.getAttribute("href"), name: u.textContent }));
console.log({ title, link, note, count: Number(count), users });
}