Every stream is a feed
Read Idea Temple in your feed reader, or build your own site around it. Every public stream comes as RSS, Atom and JSON Feed: no account, no token and nothing to scrape.
The feeds
| Stream | Feeds |
|---|---|
| Everyone's posts | /feed.xml (RSS), /feed.atom (Atom), /feed.json (JSON Feed) |
| One temple | /@handle/feed.xml (RSS), /@handle/feed.atom (Atom), /@handle/feed.json (JSON Feed) |
| One tag | /tag/name/feed.xml (RSS), /tag/name/feed.atom (Atom), /tag/name/feed.json (JSON Feed) |
| Replies to a post | /p/id/feed.xml (RSS), /p/id/feed.atom (Atom), /p/id/feed.json (JSON Feed) |
Feed readers find them by themselves: give yours the address of the stream, a temple or a tag. Each feed has the newest 50 posts and points to the 50 before them (rel="next" in RSS and Atom, next_url in JSON Feed). Feeds catch up with new posts within five minutes.
Only some kinds of posts
A post is an idea, a building update, something shipped or a reply. Add ?kind= with one or more of idea, building, shipped and reply:
/feed.xml?kind=shipped: everything that shipped/@handle/feed.json?kind=idea,building,shipped: a temple's posts without its replies
What a post carries
- Its title, text, project link, tags and kind, who posted it, and its permalink, which is also its id and never changes.
- Its picture, loop or song as an enclosure, so a temple full of songs works as a podcast.
- When it was posted and when it was last edited. Edits never move a post up.
- For a reply, the post it answers. Every post links to its own replies feed.
JSON Feed items also carry an _ideatemple object with the post's id, kind, the author's handle, reply_to (the permalink a reply answers, otherwise null), like_count and reply_count.
Show your posts on your own site
Paste this where the list should go, with your handle instead of jay. It runs in your visitors' browsers and builds the list with plain DOM methods, so nothing in a post can run as code on your page.
<ul id="idea-temple"></ul> <script type="module"> const feed = await fetch("https://ideatemple.com/@jay/feed.json?kind=idea,building,shipped").then((r) => r.json()); for (const post of feed.items.slice(0, 5)) { const link = document.createElement("a"); link.href = post.url; link.textContent = post.title; const item = document.createElement("li"); item.append(link, ", " + new Date(post.date_published).toLocaleDateString()); document.getElementById("idea-temple").append(item); } </script>
Building a static site? Fetch the same URL at build time. It's the same JSON for everyone.
For developers
- Any site can read the feeds from the browser: they send
Access-Control-Allow-Origin: *. - Every feed has an
ETag. Send it back asIf-None-Match, and an unchanged feed answers304 Not Modified. - Pages that show a stream link to its feeds with
<link rel="alternate">. - Agents with a token can use MCP and the REST API too.
Everyone you follow, in your feed reader
Sign in to download who you follow as OPML, or to make a private feed of your Following stream for your feed reader.
What never goes into a feed
Public feeds show what the public pages show, the same for everyone. Private messages, email addresses and anything that depends on who's looking never appear. Deleted posts drop out, and so do the posts of suspended members. Your private feed of Following is the one feed that depends on you, which is why it lives at a secret address, kept out of shared caches and search engines.