---
title: "Comments"
description: "Read the replies under your mentions. A comment that names your keyword becomes a mention of its own."
canonical: https://docs.rumoro.dev/guides/comments
markdown: https://docs.rumoro.dev/guides/comments.mdx
---

# Comments

Read the replies under your mentions. A comment that names your keyword becomes a mention of its own.

A mention tells you a post named your product. The useful part is often underneath it: someone asks about pricing, someone else says they switched away, a third person recommends you. Those replies rarely repeat your keyword, so a keyword alone never finds them. Switch comments on for a keyword and Rumoro reads that conversation for you.

## Turn it on

Comments are off by default and set per keyword. `maxPerPost` is how many comments of one thread you receive at most, from 1 to 100 (20 when you leave it out).

```ts tab="TypeScript"
await rumoro.updateKeyword({ path: { id: 'kw_...' }, body: { comments: { enabled: true, maxPerPost: 20 } } });
```

```python tab="Python"
rumoro.keywords.update("kw_...", comments={"enabled": True, "maxPerPost": 20})
```

```bash tab="curl"
curl -X PATCH https://api.rumoro.dev/v1/keywords/kw_... \
  -H "Authorization: Bearer $RUMORO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "comments": { "enabled": true, "maxPerPost": 20 } }'
```

A PATCH that sends only `enabled` or only `maxPerPost` leaves the other one as it was. In the dashboard, the switch is in the keyword's settings. [Duplicating](/guides/keywords#rename-or-duplicate-a-keyword) a keyword copies the setting.

## Which threads are read

From the moment you switch it on, every **new** mention of the keyword that is **scored relevant** gets its thread read. That works on Hacker News, Bluesky, GitHub, Stack Overflow, DEV, YouTube and Reddit. Conversations last longer on some platforms than others, so each one is read several times, counted from when the post was published:

| Platform | Reads after the post |
| --- | --- |
| Hacker News, Bluesky, Reddit | 30 minutes, 2 hours, 6 hours, 1 day |
| Stack Overflow | 1 hour, 6 hours, 1 day, 7 days |
| GitHub, DEV | 2 hours, 1 day, 3 days, 7 days |
| YouTube | 2 hours, 1 day, 3 days, 7 days, 30 days |

A post Rumoro finds late is read once straight away, then at the times still ahead. Each read brings only comments you haven't received yet, newest first.

Threads are not read for:

- mentions from a new keyword's 30-day look-back, so switching comments on never pulls in a month of history at once;
- mentions scored below the relevance threshold;
- a keyword that is paused when the thread is due, by you, the balance, the noise brake or its cap;
- a workspace still on its welcome credit. Comments start with your first top-up.

A thread that nobody can receive any more is not read again.

## Read a thread

`GET /v1/mentions/{id}/comments` lists the comments under the mention's post, newest first, whether or not they name your keyword. Pages hold 50 by default and up to 100 with `limit`; pass `nextCursor` back as `cursor` for older comments.

```ts tab="TypeScript"
const { data: thread } = await rumoro.listMentionComments({ path: { id: 'mm_...' } });
```

```python tab="Python"
thread = rumoro.mentions.comments("mm_...")
```

```bash tab="curl"
curl https://api.rumoro.dev/v1/mentions/mm_.../comments \
  -H "Authorization: Bearer $RUMORO_API_KEY"
```

```json
{
  "data": [
    {
      "id": "men_3f2a9c1e5b7d4a8e9c0b1d2e3f4a5b6c",
      "url": "https://news.ycombinator.com/item?id=41234567",
      "text": "Does it support Threads yet?",
      "publishedAt": "2026-10-15T09:41:00.000Z",
      "author": { "name": "jdoe", "url": "https://news.ycombinator.com/user?id=jdoe", "avatarUrl": null },
      "parentCommentId": null,
      "engagement": null,
      "classification": { "sentiment": "neutral", "intents": ["question"] },
      "mentionId": null
    }
  ],
  "nextCursor": null
}
```

- `id` is the comment itself (`men_...`), the same in every workspace that receives it.
- `parentCommentId` is set when the comment answers another comment in the thread, so you can rebuild the conversation.
- `classification` is a light read of the comment's sentiment and intent tags. It is `null` for a few minutes after the thread arrives.
- `mentionId` is set when the comment names one of your keywords, which makes it a mention too (below).

Two mentions of the same post (two keywords that matched it) list the same thread. In MCP, the tool is `list_mention_comments`; on the command line, `rumoro mentions:comments mm_...`.

## Comments that are mentions

Every mention now says what it is:

- `post.kind` is `post` for a top-level post and `comment` for anything that answers one: a comment read from a thread, a Hacker News comment found by search, an X or Bluesky reply, a Stack Overflow answer.
- `parentMentionId` is the mention of the post or comment it answers, when that is one of your mentions too.
- `stats.comments` counts the comments you received under the post.

A comment in a thread that names the keyword reading it becomes a mention of that keyword, among the newest `maxPerPost` you receive. It is scored and alerted like any post. Another keyword that doesn't have comments on never picks one up from a thread.

Filter the list, the exports, saved views and the MCP search with `kind=post` or `kind=comment`. `isReply` still works.

## What it costs

Each comment you receive costs **$0.008**, on its own line of the bill: `debit_comments` in the [ledger](/billing#the-ledger), and `billableComments` and `commentCents` in the usage breakdown and in each keyword's `stats.cost`.

- A comment of fewer than three words, once links, @handles and emoji are taken out ("lol", "+1", "🔥🔥"), is dropped. It is never delivered or billed.
- A comment is billed once per workspace. One that arrives in a thread and also names your keyword, or that two of your keywords match, is one comment on the bill.
- Matched replies (Hacker News comments, X and Bluesky replies, Stack Overflow answers) are billed on the comments line too, at the same price, whether or not the keyword has comments on. Replies billed before this change stay on the mentions line. If you add up `billableMentions` and `mentionCents`, add `billableComments` and `commentCents` for the whole variable bill.
- `maxPerPost` caps what one mention's thread can cost: at 20, $0.16.
- The keyword's [mention cap](/billing#capping-a-keywords-mentions) counts delivered comments together with mentions. A thread that would cross the cap stops at it, and the keyword pauses until the next month or a higher cap.
- A thread is never delivered past what your balance can pay for.
