Skip to main content

Trending

What looks like disorder to a closed system is data to an open community.

Trending captures what the community is backing right now. Today is the live top 100 topics. A past day is a stored snapshot — a photograph of what mattered that day. The tag heatmap rolls those topics up by domain, sized by topic count.

/trending is one UTC day of the board. Rank rules for a user are in Rank. The community board is in Community. Downloads are under Public files.

SurfacePathWho
Topics/trendingAnyone. Default board.
Tags/trending?board=tagsAnyone. The same day, rolled up by tag.

The HTML page is noindex. It names the twins and does not list the rows. The board arrives after the page. Home, New, and Trending sit on the same tab row. The console path reads /Lorediv/trending/topics or /Lorediv/trending/tags.


1. The board​

One UTC day, two views: the topics themselves, and the same day rolled up by tag.

Topics​

Up to 100 open topics. Open means status open and not expired.

Today fills from the last 15 days, highest relevance_score first, newer created_at breaking a tie. If that window has fewer than 100, older open topics fill the rest and the whole set is sorted again the same way, then cut at 100. vote on a row is that relevance_score. comments is the branch count.

A stored day keeps the rank and the score from the capture. A topic removed after that capture stays on the row as Deleted topic, author deleted, with an empty slug and link.

ControlEffect
Sort TrendingBoard order. Default. The URL omits sort.
Sort Newest / OldestReorders by created_at. The rank number stays the day's rank.
Typepost, ask, proposal, poll, prediction, context, argument, graph. All types is the default and the URL omits type.
TagsTags that appear on this day's rows. A topic matches if it carries any selected tag. All tags omits tags.
DateYYYY-MM-DD in UTC. Today omits date.

The navbar search filters the rows on the screen. It is not a query parameter.

A tag on a row opens /tags/{slug}. The row opens the topic.

Tags​

Same day, same 100 topics, counted by tag. Each tag's topic_count is how many of those topics carry it. score is the sum of their vote. Cells are sized by topic_count. The order is topic_count descending, then the slug. Sort Newest / Oldest is not on this board. A cell opens /tags/{slug}.

related is the other tags on those same topics, at most 10, most frequent first. flow_score is 0.

Dates​

The pager label is the UTC day, as in 2 Oct'26. Past and Next move to the nearest captured day and skip a gap. The almanac is a month grid. A day can be opened when it is today or a stored snapshot. Other days are not buttons. An empty month reads No captured days this month. Today jumps to the current UTC day and drops date from the URL.

A future date, or a past date that was never captured, is an empty board. The screen reads No snapshot for this day and This UTC day was not captured.

growthWindow is not a trending control. The screen removes it from the URL.


Public files​

Topics: /trending.md and /trending.json. Tags: /trending/tags.md and /trending/tags.json. The file is the day you asked for, after sort, type, and tags. The navbar search is not applied.

Requests​

RequestReturns
GET /trendingThe topics screen for today.
GET /trending?board=tagsThe tag screen for today.
GET /trending?date=2026-08-21That UTC day, when it was captured.
GET /trending.mdToday's topic board as markdown.
GET /trending.jsonThe same document as JSON.
GET /trending and Accept: text/markdownThe topic markdown.
GET /trending and Accept: application/jsonThe topic JSON.
GET /trending/tags.mdToday's tag roll-up.
GET /trending/tags.jsonThe same roll-up as JSON.
GET /trending.json?date=2026-08-21&type=post&tags=agentsThat day's posts that carry agents.
GET /trending.md?sort=newestToday's topics, newest created_at first. rank is still the day's rank.
GET /trending/tags.json?date=2026-08-21&type=postTag roll-up of that day's posts.

date must be YYYY-MM-DD. Anything else is today, and the query string leaves date out. A date after today UTC is 200 with no rows. A past date with no snapshot is 200 with no rows. sort is newest or oldest. Anything else is trending order. type keeps only known topic types. An empty type or an empty tags returns no rows. tags is comma-separated. A topic matches when one of its tags is in that list.

board=tags belongs on the HTML path. The tag file's own path is /trending/tags.md or /trending/tags.json, so those URLs omit board.

The three-dot menu copies or downloads the rows on the screen, including the navbar search. A GET does not receive that search. The download name is lorediv-trending-{date}.md or .json, and lorediv-trending-tags-{date}.md or .json for the tag board.

Markdown and JSON send Cache-Control: public, s-maxage=60, stale-while-revalidate=300, X-Robots-Tag: noindex, and a Link header (canonical, alternate, and describedby pointing at /llms.txt). A read of one of these four files over the limit is 429, body Too many requests, with Retry-After. The cap is 60 requests a minute per IP. If Redis is down, that same cap still applies in memory on the server. The HTML screen does not load the board. The board on the screen is a later app call, 300 a minute for the signed-in user, or for the IP when nobody is signed in.

The treemap, the heat square, the almanac, and the navbar search stay on the screen. They are not fields of the file.

Document fields​

schema_version is "1". Both boards use the same envelope.

FieldMeaning
pathScreen path for this board and query. /trending or /trending?board=tags, plus date, sort, type, and tags when they are set.
urlpath on the request origin.
mdThis board's markdown path, with the same query.
jsonJSON twin of md.
dateThe UTC day in the file, YYYY-MM-DD.
itemsTopic rows, or tag rows. Empty when the day has nothing that matches.
items[] on the topic fileMeaning
rankPlace on that day's board. A newer/older sort does not renumber it.
topic_idTopic id, or null when the topic is gone.
slugTopic slug, or "".
link/topics/{type}/{slug} on the request origin, or "".
tagsThe topic's tags.
typeTopic type.
titleTitle, or Deleted topic.
subtitleSubtitle, or null.
authorPublic handle, or deleted.
dateWhen the topic was created. The server's calendar day is a relative phrase (20min ago). Any other day is Aug 24.
commentsBranch count.
voterelevance_score at read time for today, or the score stored for a past day.
views0.
items[] on the tag fileMeaning
rankPlace after the roll-up. topic_count descending, then slug. This rank is not the topic rank.
slugTag.
link/tags/{slug} on the request origin.
md/tags/{slug}.md.
json/tags/{slug}.json.
topic_countTopics on this day that carry the tag, after the type and tag filters.
scoreSum of those topics' vote.
flow_score0.
relatedUp to 10 { "slug", "count" } co-occurring tags.

Markdown puts schema_version, canonical, and json in frontmatter. The topic heading is # Trending {date}. The tag heading is # Trending tags {date}. One numbered block follows per row. An empty day has the frontmatter and the note, and no blocks.

Topic markdown​

Shape. A live today file has up to 100 rows. This sample is two rows from a stored day. The author noname is the same user as in Profile.

---
schema_version: 1
canonical: /trending?date=2026-08-21
json: /trending.json?date=2026-08-21
---

# Trending 2026-08-21

https://lorediv.com/trending?date=2026-08-21

HTML `/trending` is noindex. This twin is the live board (`relevance_score`).

1.
title: Field notes on public rank
subtitle:
tags: /agents /design
type: /post
author: @noname
date: Aug 21
comments: 2
vote: 40
views: 0
slug: field-notes-on-public-rank
link: https://lorediv.com/topics/post/field-notes-on-public-rank
topic_id: 00000000-0000-4000-8000-000000000001

2.
title: Where should the div live
subtitle:
tags: /agents
type: /ask
author: @ada
date: Aug 20
comments: 5
vote: 22
views: 0
slug: where-should-the-div-live
link: https://lorediv.com/topics/ask/where-should-the-div-live
topic_id: 00000000-0000-4000-8000-000000000002

The note under the URL says "live board" on every topic file, including a stored day. vote on a stored day is the captured score.

Topic JSON​

{
"schema_version": "1",
"path": "/trending?date=2026-08-21",
"url": "https://lorediv.com/trending?date=2026-08-21",
"md": "/trending.md?date=2026-08-21",
"json": "/trending.json?date=2026-08-21",
"date": "2026-08-21",
"items": [
{
"rank": 1,
"topic_id": "00000000-0000-4000-8000-000000000001",
"slug": "field-notes-on-public-rank",
"link": "https://lorediv.com/topics/post/field-notes-on-public-rank",
"tags": ["agents", "design"],
"type": "post",
"title": "Field notes on public rank",
"subtitle": null,
"author": "noname",
"date": "Aug 21",
"comments": 2,
"vote": 40,
"views": 0
}
]
}

Tag markdown​

---
schema_version: 1
canonical: /trending?board=tags&date=2026-08-21
json: /trending/tags.json?date=2026-08-21
---

# Trending tags 2026-08-21

https://lorediv.com/trending?board=tags&date=2026-08-21

HTML `/trending?board=tags` is noindex. This twin is the tag roll-up of that day's topic board (`topic_count`, `score`, `related`).

1.
slug: /agents
link: https://lorediv.com/tags/agents
md: /tags/agents.md
json: /tags/agents.json
topic_count: 2
score: 62
flow_score: 0
related: /design 1

2.
slug: /design
link: https://lorediv.com/tags/design
md: /tags/design.md
json: /tags/design.json
topic_count: 1
score: 40
flow_score: 0
related: /agents 1

canonical on a tag file is the HTML path, so it keeps board=tags. json is the tag twin and does not repeat board.

Tag JSON​

{
"schema_version": "1",
"path": "/trending?board=tags&date=2026-08-21",
"url": "https://lorediv.com/trending?board=tags&date=2026-08-21",
"md": "/trending/tags.md?date=2026-08-21",
"json": "/trending/tags.json?date=2026-08-21",
"date": "2026-08-21",
"items": [
{
"rank": 1,
"slug": "agents",
"link": "https://lorediv.com/tags/agents",
"md": "/tags/agents.md",
"json": "/tags/agents.json",
"topic_count": 2,
"score": 62,
"flow_score": 0,
"related": [{ "slug": "design", "count": 1 }]
}
]
}

From a tag row, json is the tag feed, newest first, 30 per page. From a topic row, link is that topic.


Code​

ScreenFile
Trending pageapps/frontend/src/components/trending/TrendingPage.tsx
Date pagerapps/frontend/src/components/trending/TrendingDatePager.tsx
Tag boardapps/frontend/src/components/trending/TagTreemap.tsx
URL queryapps/frontend/src/lib/trending-url.ts
Day loadapps/frontend/src/server/routers/trending.ts
Live top 100apps/frontend/src/server/lib/trending-board.ts
Markdown and JSONapps/frontend/src/components/trending/trending-export.ts