# Secrets of the LessWrong RSS Feed

[LessWrong's RSS feed](https://www.lesswrong.com/feed.xml) includes all recently published articles by default, but it has a bunch of undocumented features available with query params.

Warning: The [only officially supported options](https://www.lesswrong.com/posts/dzF8vSdDtmWjCBBDr/secrets-of-the-lesswrong-rss-feed?commentId=8iGJ9thpNg6kuokcu) are `view=frontpage`, `view=curated`, and `karmaThreshold`. Other options may break in the future.

*   You can request only posts above a certain karma (`karmaThreshold`), only with certain authors (`userId`), frontpage only (`view=frontpage`), curated-only (`view=curated`), and several other views.
    *   Just the frontpage: [https://www.lesswrong.com/feed.xml?view=frontpage](https://www.lesswrong.com/feed.xml?view=frontpage)
    *   My posts: [https://www.lesswrong.com/feed.xml?userId=piR3ZKGHEp6vqTo87](https://www.lesswrong.com/feed.xml?userId=piR3ZKGHEp6vqTo87)[^bf8hzmu50s]
*   Comments have RSS feeds (`type=comment`, `view=postCommentsNew`, `postId`, `parentCommentId` if you want only replies to a specific comment)
    *   Comments on this post: [https://www.lesswrong.com/feed.xml?type=comments&view=postCommentsNew&postId=dzF8vSdDtmWjCBBDr](https://www.lesswrong.com/feed.xml?type=comments&view=postCommentsNew&postId=dzF8vSdDtmWjCBBDr)[^lcvv09zhsla]
*   Quick takes / shortform have an RSS feed (`view=shortform`, `view=topShortForm` or `view=shortformFrontpage`)
    *   Quick takes front page: [https://www.lesswrong.com/feed.xml?type=comments&view=shortformFrontpage](https://www.lesswrong.com/feed.xml?type=comments&view=shortformFrontpage)
    *   My shortform: [https://www.lesswrong.com/feed.xml?type=comments&view=shortform&userId=6jLdWqegNefgaabhr](https://www.lesswrong.com/feed.xml?type=comments&view=shortform&userId=6jLdWqegNefgaabhr)

There's also [a full GraphQL API](https://gist.github.com/weidai11/7dbb2ca58b0d2dc7f36c90928cfb5150) if you have needs beyond this, but the RSS feed is nice if you want it to work in a normal feed reader.

LessWrong RSS Feed Builder
--------------------------

Since there's a lot of options, I also built [a tool to generate LessWrong RSS feed URLs](https://brendanlong.github.io/lesswrong-rss-builder/).

![](https://39669.cdn.cke-cs.com/rQvD3VnunXZu34m86e5f/images/4014eed794d8c22e9885358f2b72ee5091e49098c615bdf9.png)

Full Documentation
------------------

Note: This was generated by Claude after reading the [source code for feed.xml](https://github.com/ForumMagnum/ForumMagnum/blob/master/app/feed.xml/route.ts) and [related utility code](https://github.com/ForumMagnum/ForumMagnum/blob/master/packages/lesswrong/server/rss.ts). Again, only `view=frontpage`, `view=curated`, and `karmaThreshold` are officially supported.

**Query Parameters**
--------------------

| Parameter | Type | Description |
| --- | --- | --- |
| `type` | string | Set to `comments` for comment feeds, otherwise returns posts |
| `view` | string | Feed type/view (see views below). Defaults to `rss` |
| `karmaThreshold` | number | Minimum karma for posts to appear (see threshold logic below) |
| `filterSettings` | JSON | Advanced filtering (JSON-encoded object) |
| `postId` | string | Filter comments to a specific post |
| `tagId` | string | For `tagRelevance` post view or tag comment views |
| `userId` | string | Filter by author user ID |
| `parentCommentId` | string | For `commentReplies` view - replies to a specific comment |
| `parentAnswerId` | string | For `repliesToAnswer` view - replies to a specific answer |
| `topLevelCommentId` | string | For `repliesToCommentThread` view - full thread under a comment |
| `forumEventId` | string | For `forumEventComments` view |
| `sortBy` | string | Sort mode for views that support it (see per-view notes) |

**Post Feed Views**
-------------------

| View | Description | Sort Order |
| --- | --- | --- |
| `rss` (default) | All newest posts | `postedAt` descending |
| `frontpageRss` | Frontpage posts only | `frontpageDate` descending |
| `curatedRss` | Curated posts only | `curatedDate` descending |
| `communityRss` | Non-frontpage posts with karma > 2 | `postedAt` descending |
| `metaRss` | Meta posts only | `postedAt` descending |
| `tagRelevance` | Posts by tag (requires `tagId` param) | Tag relevance score |

Note: View names can use either camelCase (`frontpageRss`) or kebab-case (`frontpage-rss`).

**Comment Feed Views**
----------------------

All comment views require `type=comments`. The limit is hardcoded to 50 results.

### **General**

| View | Description | Sort |
| --- | --- | --- |
| `rss` (default) | Recent comments with positive score (alias for `recentComments`) | `postedAt` desc |
| `recentComments` | Recent comments with positive score | `postedAt` desc |
| `allRecentComments` | All recent comments including neutral/negative score | `postedAt` desc |
| `commentReplies` | Replies to a specific comment (requires `parentCommentId`) | `postedAt` desc |
| `moderatorComments` | Comments posted with a moderator hat | `postedAt` desc |

### **Per-Post (require** `**postId**`**)**

These views exclude answers and answer-replies (filter `answer: false`, `parentAnswerId: null`).

| View | Description | Sort |
| --- | --- | --- |
| `postCommentsNew` | Comments on a post, newest first | `postedAt` desc |
| `postCommentsOld` | Comments on a post, oldest first | `postedAt` asc |
| `postCommentsTop` | Comments on a post, highest karma first | `baseScore` desc |
| `postCommentsBest` | Comments on a post, best first | `baseScore` desc |
| `postCommentsMagic` | Comments on a post, magic/Wilson sort | `score` desc |
| `postCommentsRecentReplies` | Comments on a post, by recent subthread activity | `lastSubthreadActivity` desc |
| `postsItemComments` | Recent non-deleted comments on a post | `postedAt` desc |
| `questionAnswers` | Answers to a question post (supports `sortBy`) | `baseScore` desc |
| `answersAndReplies` | Answers and their replies (supports `sortBy`) | `baseScore` desc |
| `debateResponses` | Debate responses on a post | `postedAt` asc |
| `recentDebateResponses` | Recent debate responses on a post | `postedAt` desc |

### **Per-User**

| View | Description | Sort |
| --- | --- | --- |
| `profileComments` | Comments by a user (supports `sortBy`) | `postedAt` desc |
| `profileRecentComments` | (Deprecated) Recent comments by a user | `postedAt` desc |

### **Shortform / Quick Takes**

| View | Description | Sort |
| --- | --- | --- |
| `shortform` | Top-level shortform comments | `lastSubthreadActivity` desc |
| `topShortform` | Top shortform by score (supports `before`/`after`) | `baseScore` desc |
| `shortformFrontpage` | Frontpage shortform (recent, filtered by quality) | `score` desc |

### **Per-Tag (require** `**tagId**`**)**

| View | Description | Sort |
| --- | --- | --- |
| `tagDiscussionComments` | Discussion comments on a tag | default |
| `tagSubforumComments` | Subforum comments for a tag (supports `sortBy`) | `lastSubthreadActivity` desc |

`**sortBy**` **Values**
-----------------------

Views that support the `sortBy` parameter accept these values:

| Value | Sort Order |
| --- | --- |
| `top` | `baseScore` descending |
| `new` / `newest` | `postedAt` descending |
| `old` / `oldest` | `postedAt` ascending |
| `magic` | `score` descending |
| `recentComments` | `lastSubthreadActivity` descending |

**Karma Threshold Logic**
-------------------------

The `karmaThreshold` parameter determines when posts appear in the feed based on when they reached certain karma levels. Posts have timestamps for when they exceeded various karma thresholds.

Input values are rounded to the nearest supported threshold:

| Input Range | Actual Threshold | Date Field Used |
| --- | --- | --- |
| < 16 (or not set) | 2   | `scoreExceeded2Date` |
| 16-36 | 30  | `scoreExceeded30Date` |
| 37-59 | 45  | `scoreExceeded45Date` |
| 60-99 | 75  | `scoreExceeded75Date` |
| 100-161 | 125 | `scoreExceeded125Date` |
| >= 162 | 200 | `scoreExceeded200Date` |

The feed item's date is the *later* of:

1.  The karma threshold date (when post reached the threshold)
2.  The view-specific date (e.g., `frontpageDate` for frontpage feed)

This allows higher-threshold feeds to show older posts that recently became popular.

[^bf8hzmu50s]: I don't know where to get userIds from the UI, so I used the GraphQL API:$ curl -s -X POST https://www.lesswrong.com/graphql \
  -H 'Content-Type: application/json' \
  -d '{"query": "query { user(input: { selector: { slug: \"brendan-long\" } }) { result { _id } } }"}'
{"data":{"user":{"result":{"_id":"piR3ZKGHEp6vqTo87"}}}} 

[^lcvv09zhsla]: You can find postIds in the post URL, i.e. the postId for https://www.lesswrong.com/posts/ioZxrP7BhS5ArK59w/did-claude-3-opus-align-itself-via-gradient-hacking is ioZxrP7BhS5ArK59w.