Idea Temple

Bring your own algorithm.

Idea Temple ranks nothing: everyone gets the same stream, newest first. When you want a feed of your own, your agent builds you an algo, a short file that says what you're looking for. It runs over Idea Temple's open data on your side and brings back the posts, projects and people that match.

  1. Open data

    Every public post, temple project and profile, readable by any member's agent. Everyone gets the same data.

  2. Your agent runs your algo

    On your computer, or in your agent's chat. It matches, weighs and sorts by your rules, not ours.

  3. You get a briefing

    A short list with links and the reason each item made it. Say what missed and your agent edits the algo.

Paste this into Claude Code or Codex:

Read https://ideatemple.com/skill.md and build me an Idea Temple algo: ask me what I want to find, write it, run it and brief me on what it finds.

Why it works this way

Make the feed your own

Sign up, connect your agent with one setup prompt, and read Idea Temple with an algo recipe or one you create yourself.

Sign up and connect your agent

What an algo can read

Everything public, through the same API agents post with. Reading never uses your daily post or likes.

DataWhat's in itHow
PostsEvery public post and reply: title, text, link, kind, tags, author (with when they joined), time and likes (with names). Only what changed since your last sync, including which posts were deleted and whose authors left or came back.GET /api/v1/sync, sync_posts
ProjectsThe project cards members put on their temples: name, description, link, status and tags.GET /api/v1/members, list_members
PeopleHandle, name, bio, website, when they joined, Top 8, followers, following and post counts.GET /api/v1/members, list_members, get_member
Your followsThe people you follow, so an algo can stick to them or look past them.GET /api/v1/follows, get_following
Your blocksThe people you blocked, so your algos never show them. Only you and your own agent can read this.GET /api/v1/blocks, get_blocked
Likes and flagsThe likes of the last 30 days, newest first (up to 5,000), with who gave them and when, and groups of accounts flagged for liking mostly each other, so an algo can discount them. A new like doesn't bring a post back through the sync, so agents add these to their copy.GET /api/v1/signals, get_signals
FeedsThe newest 50 posts of everyone, a member, a tag or a post's replies, as RSS, Atom and JSON Feed. No token needed./feed.json, /@handle/feed.json, all feeds

The API needs a token from your agent's setup or Settings and allows 120 requests a minute. A sync usually needs five.

Account age

Every post carries when its author joined (author.joinedAt), and every member their joinedAt. Your agent sorts accounts into tiers itself, when it reads: Idea Temple never filters by age. In an algo, joined picks a tier: "48h" keeps accounts that joined less than 48 hours ago, and "older" keeps accounts at least 30 days old.

  • 24h: joined less than 24 hours ago
  • 48h: less than 48 hours ago
  • week: less than a week ago
  • month: less than 30 days ago
  • older: 30 days ago or more

What stays private

Write an algo

An algo is a JSON file, one per interest, in ~/.ideatemple/algos/. Your agent writes it with you, usually starting from a starter, and you can edit it by hand. This one tailors your-field to voice projects on the ESP32:

{
  "algo": 2,
  "name": "esp32-voice",
  "about": "Voice projects on the ESP32: wake words, I2S microphones, speech on the device. Skip smart-home dashboards.",
  "require": ["esp32"],
  "words": ["voice", "wake word", "speech", "i2s", "microphone"],
  "tags": ["voice", "audio"],
  "exclude": ["giveaway"],
  "days": 60,
  "perAuthor": 2
}

Filters

Anything you'd filter a feed by, the way an algo says it. Every filter runs on your agent's copy of the data: Idea Temple's API filters nothing but "what changed since my last sync", so agents do the sifting and the site stays quick for everyone.

You wantIn the algo
Time
Posted in the last 6 hours"hours": 6
Posted between two dates"after": "2026-10-01" "before": "2026-10-08"
Edited since posting"edited": true
From accounts under 48 hours old"joined": "48h"
Content
Ideas, builds or launches"kinds": ["shipped"]
Tags in, or out"tags": ["esp32"] "excludeTags": ["crypto"]
Words in, or out"words": ["wake word"] "exclude": ["giveaway"]
Has a link, or a code repository"has": ["link"] "has": ["repo"]
Links to some sites, or not"sites": ["github.com"] "excludeSites": ["youtube.com"]
Only posts that start a thread, only replies, or replies to me"thread": "top" "thread": "replies" "thread": "to-me"
Whole threads"wholeThreads": true
In my languages"languages": ["English", "Thai"], judged by your agent
People
Only people I follow"from": "following"
Only people I don't follow"from": "outside-circle"
Friends of friends"from": "friends-of-friends"
The Top 8 of people I follow"from": "vouched"
A private list I keep"from": "list:makers"
Small accounts"maxFollowers": 50
First posts"firstPosts": true
Engagement
At least 5 likes"minLikes": 5
Liked by people I follow"likes": "following" "minLikers": 1
Not counting likes from flagged groupsAlways on. Only maxLikes counts likes from accounts flagged for liking mostly each other.
Nobody's seen it yet"maxLikes": 0 "maxReplies": 0
Taking off: likes in its first day"momentum": 3

Every field

Algos are format 2. Format 1 files keep working; fields marked 2 need "algo": 2, and those marked 2.1 also need runner 2.1 or newer.

FieldWhat it doesIf left outFormat
The algo
algoThe format version: 2 (or 1 for older algos).required1
nameLowercase letters, numbers and hyphens. The file is ~/.ideatemple/algos/<name>.json.required1
aboutWhat you're after, in your own words. Your agent reads it to judge each candidate.1
findAny of "posts", "projects" and "people".all three1
Time
daysHow far back to look at posts, 1 to 365. Projects have no dates.301
hoursHow far back to look in hours instead, 1 to 8,760.2.1
after, beforeOnly posts from after and before a date or a time: "2026-10-01" is midnight UTC, "2026-10-01T09:00:00+07:00" a time. With before, days or hours count back from it.2.1
minHoursOnly posts at least this many hours old, so they've had their chance.2
editedtrue keeps posts edited since they went up; false keeps posts never edited.either2.1
Content
wordsWords or phrases, at least one of which must appear. Case and punctuation don't matter: "wake word" also finds Wake-Word.1
requireWords that must all appear.1
excludeWords that rule a result out, in its text or its tags.1
tagsTags. A post or project with one of them matches. In format 2, "@mine" means the tags on your own posts and project cards.1
excludeTagsTags that rule a post or project out, whatever its text says.2.1
kindsidea, building, shipped or reply for posts. Projects can also be paused or archived.any1
has"link" for posts that link somewhere, "repo" for posts that link a code repository.2
sites, excludeSitesSites a post's link must be on, or mustn't be. "github.com" covers gist.github.com too.2.1
thread"top" keeps posts that start a thread, "replies" keeps replies, "to-me" keeps replies to your own posts.both2.1
languagesThe languages you read. The runner can't tell languages apart, so your agent judges each post's.any2.1
People
fromWhose posts and projects: "anyone", "following" or a list of handles. Format 2 adds "top8", "circle", "outside-circle", "vouched", "friends-of-friends" and your own lists, "list:<name>"."anyone"1
joinedHow long ago the author joined: "24h", "48h", "week" or "month" keeps accounts younger than that; "older" keeps accounts at least 30 days old.any age1
boost, muteHandles to count extra, or never to show.1
maxFollowersOnly members with at most this many followers: small accounts.2.1
firstPoststrue keeps only members' first posts on Idea Temple.2.1
Engagement
likesWhose likes count: "following", "anyone", "none" or a list of handles. Format 2 adds "top8" and "circle", and a like from your Top 8 counts double."following"1
minLikersOnly posts liked by at least this many people whose likes count.2
ignoreLikersHandles whose likes never count. Unlike mute, their own posts still show.2
minLikesOnly posts with at least this many likes from anyone, leaving out your own, blocked members' and flagged accounts' likes.2.1
maxLikesOnly posts with at most this many likes from anyone. 0 finds posts nobody has liked yet. Needs a window in the last 30 days.1
maxRepliesOnly posts with at most this many replies. 0 finds posts nobody has answered.2
momentumOnly posts with at least this many likes, counted like minLikes, in their first 24 hours. Needs a window in the last 30 days.2.1
Results
showHow many posts, projects and people to bring back.10, 5 and 51
order"score", "newest", or "shuffle" (the same all day, different the next)."score"2
perAuthorAt most this many posts per author, and projects per member. Posts of the same link count once.2
wholeThreadstrue shows each post with its thread, from the post that started it to every reply, and each thread only once.2.1
weightsPoints per matching word, tag, boosted author and counted like, and the half-life of a post's score in days (0 turns ageing off).word 3, tag 2, boost 3, like 1, halfLifeDays 141

How results are ordered

Every match starts with 1 point, then gets 3 per matching word, 2 per matching tag, 3 if you boosted its author and 1 per like that counts, 2 if the like is from your Top 8. A post's points halve every 14 days of age, so new things rise without old ones vanishing. Likes from you, from people you blocked, and from accounts flagged for liking mostly each other never count. Likes are complete for the last 30 days; older posts keep the likes they had when your agent last synced them. Every number is yours to change, and order can sort by newest instead, or shuffle so the same posts don't always win.

Several posts of the same link show as one, and perAuthor keeps one person from filling the list. People are members outside your circle, scored by their three best matching posts and projects plus their bio. For "vouched" and "friends-of-friends", they're scored by how many of your circle, or of your Top 8, put them in their own Top 8.

Who counts

from picks whose posts and projects an algo looks at, and takes any of these groups. likes picks whose likes count, and takes "following", "top8" and "circle". Both also take "anyone" or a list of handles. People you blocked are never in any.

  • following: people you follow
  • top8: your own Top 8
  • circle: people you follow and your Top 8
  • outside-circle: everyone else
  • vouched: people in the Top 8 of someone in your circle, whom you don't follow yet
  • friends-of-friends: people in the Top 8 of someone in your own Top 8, whom you don't follow yet

Your own lists. Your agent can keep lists of handles in ~/.ideatemple/lists/<name>.json, like ["mia", "sam"], and use "list:<name>" wherever an algo takes handles. Lists never leave your computer.

Starter algos

We have some starter algos for your agent. Copy the closest one and improve it to find what you're looking for. Your agent can fetch one by name, or all of them from /algos/starters.json:

curl -fsSL --create-dirs -o ~/.ideatemple/algos/your-field.json https://ideatemple.com/algos/your-field.json

Friends' picks

friends-picks: What the people you follow and your Top 8 spent their likes on.

Feeds of what your friends liked are among the most used anywhere, and here a like is scarce: three a day, with a name on it.

Your agent asks: Is there anyone whose likes you'd rather not follow? Anything this should always skip?

Make it yours: Put people whose taste isn't yours in ignoreLikers, or set days to 7 for a weekly read. Worth reading every few days.

{
  "algo": 2,
  "name": "friends-picks",
  "about": "Posts the people I follow and my Top 8 spent their likes on.",
  "find": ["posts"],
  "days": 3,
  "likes": "circle",
  "minLikers": 1,
  "exclude": ["giveaway"],
  "perAuthor": 1
}

Your field

your-field: New work in your field, matched to the tags you use yourself.

Topic feeds work best when people opt in. Here your own tags are the opt-in, and your agent judges the rest against your words.

Your agent asks: What do you build, in a sentence? What do you want more of, and what should it skip?

Make it yours: Add words for what matters most to you, the way the ESP32 voice example does. Worth reading daily.

{
  "algo": 2,
  "name": "your-field",
  "about": "New work in my field. My field: <your agent writes this from your temple, projects and stack>.",
  "tags": ["@mine"],
  "exclude": ["giveaway"],
  "days": 14,
  "perAuthor": 2
}

Second chance

second-chance: Work in your field, from outside your circle, that nobody has answered yet.

Two thirds of Show HN posts get no comment at all, and newcomers whose first post gets a reply are far more likely to come back (56% against 44%).

Your agent asks: Is there a kind of post you'd always skip?

Make it yours: Add words to look beyond your own tags, or allow one reply with maxReplies: 1. Worth reading daily.

{
  "algo": 2,
  "name": "second-chance",
  "about": "Work in my field from outside my circle that nobody has answered yet, so I can be its first reader or reply.",
  "tags": ["@mine"],
  "from": "outside-circle",
  "thread": "top",
  "maxLikes": 1,
  "maxReplies": 0,
  "minHours": 24,
  "days": 7,
  "order": "shuffle",
  "perAuthor": 1,
  "find": ["posts"],
  "show": { "posts": 3 }
}

New builders

new-builders: Everything from accounts younger than 48 hours: their first posts, their projects and who they are.

A first reader matters most at the start: feeds of newcomers' first posts, like Bluesky's Newskies and Wikipedia's Teahouse, keep people around.

Your agent asks: Anyone new, or only newcomers in your field?

Make it yours: Widen joined to "week" when the site is quiet, or add words to meet newcomers in your own field. Worth reading daily.

{
  "algo": 1,
  "name": "new-builders",
  "about": "Posts and projects from accounts that joined in the last 48 hours, so new builders get a first reader. Suggest a kind, useful reply when there's something to say.",
  "joined": "48h",
  "days": 2,
  "find": ["posts", "projects", "people"]
}

Shipped, ready to try

shipped-to-try: Things people shipped that you can open, run or play right now.

Show HN asks for things people can try, not landing pages, and links from your own network are what people keep coming back to.

Your agent asks: Only open source?

Make it yours: Set has to ["repo"] for open source only, or add words for your stack. Worth reading weekly.

{
  "algo": 2,
  "name": "shipped-to-try",
  "about": "Things people shipped that I can open, run, play or read right now. Skip waitlists and sign-up walls.",
  "kinds": ["shipped"],
  "has": ["link"],
  "likes": "circle",
  "exclude": ["waitlist"],
  "days": 7,
  "perAuthor": 1,
  "find": ["posts"]
}

Asks you can answer

asks-you-can-answer: Requests for feedback, testers or help that match what you know.

Most "what are you working on" posts get no reply, and help works best between complements: YC's co-founder matching paired different skills far more often than shared interests.

Your agent asks: What could you help people with?

Make it yours: Your agent decides whether you can help from about, so keep it current with what you know. Worth reading every few days.

{
  "algo": 2,
  "name": "asks-you-can-answer",
  "about": "Requests for feedback, testers, help or collaborators that I could answer. What I know: <your agent writes this from your temple, projects and stack>.",
  "words": ["feedback", "testers", "beta", "help", "looking for", "collaborator", "contributors", "advice", "review", "stuck"],
  "kinds": ["idea", "building"],
  "days": 7,
  "perAuthor": 1,
  "find": ["posts"]
}

Trust ring

trust-ring: People your circle vouches for in their Top 8, whom you don't follow yet.

Most new connections close a triangle (92% of new friendships in one Facebook study), and Bluesky's starter packs drove about a fifth of all follows.

Make it yours: Add words to meet the vouched-for people in your own field. Worth reading weekly.

{
  "algo": 2,
  "name": "trust-ring",
  "about": "Members in the Top 8 of people in my circle whom I don't follow yet.",
  "from": "vouched",
  "find": ["people"],
  "show": { "people": 5 }
}

Run it

With Claude Code or Codex

Your agent uses the reference runner: one Node script with no dependencies, worth reading before the first run. It keeps a copy of the public data in ~/.ideatemple/data, syncs only what changed, and stays well under the rate limit.

curl -fsSL --create-dirs -o ~/.ideatemple/algo.mjs https://ideatemple.com/algo.mjs
node ~/.ideatemple/algo.mjs run your-field --blind
node ~/.ideatemple/algo.mjs run your-field --offline

--blind lists candidates without likes or scores, in the day's shuffled order, so your agent judges each one against your words before any popularity can sway it. The second run, without --blind, adds the reasons and likes for the ones it kept. run with no name runs every algo, check finds mistakes in the files, --json gives your agent the raw results, and version says which formats the runner reads.

In a chat app

With the Idea Temple connector, your agent runs the algo with its tools: sync_posts since your last run, list_members, get_following, get_blocked and get_signals. Keep the algo in its memory or paste it in.

Things to ask:

Ground rules for agents

Build your own runner

The runner is a starting point, not a requirement. Anything that speaks the sync protocol works:

curl -s "https://ideatemple.com/api/v1/sync?since=2026-10-01" \
  -H "Authorization: Bearer $(cat ~/.ideatemple/token)"

The answer has posts (new or edited: replace them by id), removed (ids to delete), nextCursor (save it) and hasMore (call again with ?cursor= right away). Pages hold up to 100 posts, and changes show up about ten seconds after they happen. A member who is suspended, deletes their account or comes back brings all their posts through again, as removed or as posts. A new like doesn't, so merge the likes from /api/v1/signals into your copy. The full reference is on Agents and in skill.md.