Automation · Sales and Marketing

Reddit threads worth a comment, ranked by what AI engines cite

Each weekday, see which Reddit threads ChatGPT, Google AI Mode and Claude cite for your questions, then get up to 3 fresh threads with ready-to-paste, genuinely helpful comment drafts in Slack.

Created by Sam Claassen from type.com

What it does

  • Targets the subreddits AI engines actually cite for your buying questions.
  • Drafts helpful, disclosed comments that rarely mention your product.
  • Respects a blocklist and learnings from past removals before suggesting anything.
  • Tracks whether threads your team commented in become AI citations.
  • Read-only on Reddit: nothing is posted without a person or a separate step.

Before you start

  • Promptwatch with an API key, connected as a Custom API.
  • Slack connected through the Type Slack app.
  • Two Type documents for the Reddit memory and log (starter structure included).
  • Optional: an Apify Custom API connection as a Reddit search fallback.

See an example

Example output from a sample run. Unless the example says otherwise, company names and figures are sample data.

Example Slack post (illustrative, not real data)

Reddit AEO — Wednesday, Nov 4 · 2 targets · engines cited Reddit 31× this week, mostly r/SaaS Up next (drafts to post, max 3): r/startups · "What do you use to keep onboarding docs up to date?" · reddit.com/r/startups/comments/… · 14/22/5h

We stopped writing onboarding docs by hand. Every time a process changes, the person who changed it records a 2-minute walkthrough and we turn that into the doc. Old docs get a "last verified" date so people know what to trust. r/SaaS · "Best way to share AI prompts across a 30-person team?" · reddit.com/r/SaaS/comments/… · 9/17/11h A shared library beat Slack threads for us: one owner per prompt, a short "when to use it" line, and a monthly cleanup. Disclosure, I work on example.com, which does this, but a shared doc with the same rules gets you most of the way. Why • Top cited thread this week: r/SaaS "tools for team AI workflows" · 6 cites · Google AI Mode • 1 commented thread now cited: r/startups "automating weekly reporting"

How to use Reddit threads worth a comment, ranked by what AI engines cite

  1. Select Use automation to open a new conversation with the automation attached.
  2. Choose a space and describe any changes you want before sending the message.
  3. Work with the agent to connect your integrations and review the automation before turning it on.
Browse the automation instructions
---
name: "Reddit Engagement and AI Citation Tracking"
description: "Every weekday morning, find which Reddit threads AI engines cite for your tracked questions, pick up to 3 fresh Reddit threads worth a helpful comment, draft each comment, and post the shortlist to Slack. Read-only on Reddit: it never posts."
connection_needs:
  - "Promptwatch (Custom API, base URL https://server.promptwatch.com/api/v2, X-API-Key header): read grouped citations and answers. Read-only."
  - "Reddit research tools in Type (search posts and comments). Optional fallback: an Apify Custom API connection for a Reddit search actor."
  - "Slack (the Type Slack app): post one message to a channel."
  - "Type documents: read a Reddit memory document (blocklist, learnings, activity), read and edit a Reddit log document, and optionally read the AEO master document's Alert log."
inputs:
  - "site_domain: your company's domain, used in disclosures and in what counts as your product"
  - "brand_name_rule: optional rule for how your brand is written"
  - "commenter_name: the person whose Reddit account and voice the drafts are written for; never @-mentioned in the channel"
  - "voice_skill: optional handle of a writing-voice skill for that person"
  - "promptwatch_connection: the Promptwatch Custom API connection"
  - "apify_connection: optional Apify Custom API connection used only if Reddit research tools are unavailable"
  - "slack_connection: the Slack connection"
  - "slack_channel_id: the Slack channel for the daily shortlist"
  - "slack_channel_name: that channel's name"
  - "reddit_memory_document: Type document with the Blocked table, Learnings and Activity log"
  - "reddit_log_document: Type document with the Posting plan, Commented threads, Cited Reddit threads (weekly) and Run log"
  - "aeo_master_document: optional Type document whose Alert log names the question that most recently lost a citation"
  - "subreddits: the subreddits you engage in, for example r/SaaS, r/startups"
  - "search_queries: 2-3 Reddit search queries that find posts asking for tools or describing your problem space"
  - "problems_solved: the buyer problems your product solves, used to rank threads"
  - "report_timezone: time zone for the schedule and the 24-hour window (source default: America/Los_Angeles, weekdays 08:00)"
---

# Reddit Engagement and AI Citation Tracking

## Purpose

AI assistants often cite Reddit threads when they answer buying questions. This automation connects the two halves of a Reddit program:

- **Part A (citations):** reads Promptwatch's grouped citations for the last 7 days, keeps the Reddit URLs, and works out which subreddits and threads engines cite for your tracked questions, and whether any thread your team commented in is now cited.
- **Part B (targets):** finds fresh Reddit threads from the last 24 hours worth a genuinely helpful comment, weighted toward the subreddits engines cite, and drafts a ready-to-paste comment for up to 3 of them.
- **Part C (log):** records the day's targets and the citation findings in a Reddit log document.

It posts the shortlist to one Slack channel. **It is strictly read-only on Reddit: it never posts, comments, votes or DMs.** Posting is a separate step: a person pastes the drafts, or a separate posting automation reads today's Run log line (the handoff contract below). This template does not include a posting automation.

## Setup

Settle every binding before creating the automation. None inherits a value from the original workspace.

| Binding | Meaning and how to supply it |
| --- | --- |
| `{{input:site_domain}}` | Your company's domain; drafts that name your product disclose "I work on {{input:site_domain}}". |
| `{{input:brand_name_rule}}` | Optional naming rule for your brand; drop the sentence if none. |
| `{{input:commenter_name}}` | The person whose Reddit account and voice the drafts are for. Drafts never claim experiences this person hasn't had. Never @-mentioned in the channel. |
| `{{input:voice_skill}}` | Optional writing-voice skill (handle) for that person. Without one, write short, plain, first-person comments. When supplied, also pass it in `skillReferences`. |
| `{{input:promptwatch_connection}}` | A Custom API connection with base URL `https://server.promptwatch.com/api/v2` and your Promptwatch API key as the `X-API-Key` header. Save it in `integrationAccounts`. |
| `{{input:apify_connection}}` | Optional Apify Custom API connection (base `https://api.apify.com`), used only when Type's Reddit research tools are unavailable. Omit the fallback if none. |
| `{{input:slack_connection}}`, `{{input:slack_channel_id}}`, `{{input:slack_channel_name}}` | Where the shortlist is posted. Invite the Type app to the channel. |
| `{{input:reddit_memory_document}}` | Type document holding the blocklist, durable learnings and the activity log of every post and comment. Starter structure below. |
| `{{input:reddit_log_document}}` | Type document this automation updates each run. Starter structure below. |
| `{{input:aeo_master_document}}` | Optional. If you also run the AI search lost-citation alert, its `## Alert log` supplies one extra search query each day. Omit that query if not. |
| `{{input:subreddits}}` | Your subreddit lane. Part A's cited subreddits are searched first. |
| `{{input:search_queries}}` | 2–3 query passes, for example a "recommend / best tool / anyone using" query for your category and a problem-description query. |
| `{{input:problems_solved}}` | Short list of the problems your product solves; threads describing them rank second. |
| `{{input:report_timezone}}` | Schedule and window time zone. The source runs Monday to Friday at 08:00 America/Los_Angeles. |

Create the automation with `create_task`: the instructions under Reference implementation, `scheduleConfig: { mode: "specific_time", time: "08:00", days: ["mon","tue","wed","thu","fri"], timezone: {{input:report_timezone}} }`, and `integrationAccounts` for Promptwatch, Slack and (if used) Apify. It is agent-only (`agentModeReason`: choosing threads worth a comment and drafting helpful replies is judgment; the citation matching runs in the agent's sandbox). Create it paused and enable it after review.

### Starter document structure

**Reddit memory document** (`{{input:reddit_memory_document}}`):

```markdown
## Blocked

| date | subreddit | scope | thread / post URL | what happened | source automation |
| --- | --- | --- | --- | --- | --- |

## Learnings

Short, durable rules distilled from blocks and from what performed well. Newest first.

## Activity log

Every post and comment made from the account. Status: `live` · `removed` · `filtered` · `blocked-at-submit` · `locked`.

| date | type | subreddit | URL | brand named? | status | last checked |
| --- | --- | --- | --- | --- | --- | --- |
```

Scope values in Blocked: `thread`, `sub-wide (all)` or `sub-wide (comments)`.

**Reddit log document** (`{{input:reddit_log_document}}`):

```markdown
## Posting plan

| date | subreddit | post | status |
| --- | --- | --- | --- |

## Commented threads

| date | permalink | subreddit | brand named? | cited by engines? | last checked |
| --- | --- | --- | --- | --- | --- |

## Cited Reddit threads (weekly)

| # | subreddit | thread | cites | engines | cited for |
| --- | --- | --- | --- | --- | --- |

## Run log

- <YYYY-MM-DD> (<Day>) · <n> targets, brand named in <n> drafts · r/<sub> "<title>" <full permalink> · …
```

**Handoff contract for posting (not included):** the day's targets are written as one Run log line with full permalinks. Whoever posts (a person, or a separate posting automation you run) reads that line, posts from `{{input:commenter_name}}`'s account, adds a row to "## Commented threads", and logs the post or comment in the memory document's Activity log.

## Triggers and execution

Instruction (agent-only) automation, scheduled Monday to Friday at 08:00 in `{{input:report_timezone}}`. No model or run settings are configured in the source (agent defaults). No code stage. Promptwatch pages are saved to files and matched in the agent's sandbox.

## Workflow

1. **Read guardrails.** Read the memory document's "Blocked" table and "Learnings". Never suggest a subreddit blocked `sub-wide (all)` or `sub-wide (comments)`, a blocked thread, a thread already in the Activity log, or anything that breaks a Learnings rule.
2. **Posting plan.** If the log document's "## Posting plan" has a dated row for today, put it at the top of the message with a drafted post. There is no posting calendar otherwise.
3. **Part A: citations (last 7 days).** `GET /citations/grouped` with `startDate`, `endDate`, `size=100` (paginate, `page` ≥ 1) and `domains=reddit.com`; keep rows whose `url.domain.domainName` is reddit.com. For each cited Reddit URL record subreddit, thread title, citation count, models and which monitor or question cited it (match `GET /responses` for the same 7 days, `from`/`until` as ISO date-times). Summarize the cited subreddits, the top 5 cited threads, and whether any thread in "Commented threads" is now cited.
4. **Part B: fresh targets (last 24 hours).** Search with Type's Reddit research tools (posts), falling back to the Apify actor only if they are unavailable; never scrape reddit.com directly. If both fail, say so in one line and skip Part B. Search Part A's cited subreddits first, then `{{input:subreddits}}`, minus anything blocked. Run 2–3 query passes from `{{input:search_queries}}` (dedupe by permalink), plus one query built from the question that most recently lost a citation in the AEO master document's Alert log when that document is supplied. Skip crypto, NSFW, memes, vendor self-promotion, news megathreads, "I will not promote" threads for any product mention, and anything a commercial-adjacent reply would violate. Rank: (1) OP explicitly asks for tool recommendations, (2) OP describes a problem from `{{input:problems_solved}}`, (3) live category discussion in a subreddit engines cite. Pick the best 3; fewer on a quiet day, say so, never pad.
5. **Draft comments.** For each pick: subreddit, title, permalink, score, comments, age, and a ready-to-paste comment under about 100 words, genuinely helpful first. At most 1 in 10 comments names your product, only when OP explicitly asks for tools, with the disclosure "I work on {{input:site_domain}}". Never claim experiences `{{input:commenter_name}}` hasn't had.
6. **Part C: update the log document.** Append one Run log line with each full permalink; refresh "## Cited Reddit threads (weekly)" with Part A's full top list; for every row in "## Commented threads" update "cited by engines?" and "last checked". No other edits.
7. **Post to Slack** with `slack_post_message` (`channel_id`, `text`): mrkdwn, maximum 12 lines plus up to 3 quote blocks with the drafts. Confirm the post was made before finishing.

## State and failure behavior

- No stored state outside the two documents. The memory document's Activity log and the log document's Run log prevent repeat targets; the Blocked table and Learnings are guardrails.
- Part B is skipped with one line when no Reddit search source works; Part A and the log update still run.
- Quiet days produce fewer than 3 targets, stated plainly, never padded.
- The automation never writes to Reddit or to the memory document. It makes one Slack post and scoped edits to the log document only.
- No retries, checkpoints or rollbacks are configured; a manual re-run on the same day appends a second Run log line.

## Integration data and capabilities

| Integration | Data and capabilities used | Relevant semantics |
| --- | --- | --- |
| Promptwatch (Custom API) | `GET /citations/grouped` (`startDate`, `endDate`, `page`, `size`, `domains`); `GET /responses` (`from`, `until`, `page`, `size`). Fields: `url.domain.domainName`, cited URL, citation count, models, monitor, prompt. | Base URL already ends in `/api/v2`; adding it again returns 404. Grouped citations needs `page` ≥ 1 and `size` ≤ 100; filter with `domains=reddit.com` (a `domain` param is ignored), which returns every Reddit row in one page. `from`/`until` must be ISO date-times, not plain dates. A week of responses can exceed 1,000; read `pagination.totalPages` from page 1, fetch every page with file output, and match in the sandbox. |
| Reddit research tools (Type) | Search posts and comments by query and subreddit. | Large searches overflow tool output and the overflow file is lost: use `maxResults` 5 with at most 4–5 subreddits per call. |
| Apify (optional Custom API) | `POST /v2/acts/clearpath~reddit-search-scraper/run-sync-get-dataset-items` with `query`, `maxResults` 25, `contentType` "posts", `sort` "new", `timeFilter` "day", `subreddits`. | Fallback only. Read the connection's usage guidance first if Type provides one. |
| Slack | `slack_post_message` (`channel_id`, `text`). | One post per run. |
| Type documents | `read_workspace_artifact` for both documents (and the AEO master document's Alert log, with search mode when large); `apply_markdown_artifact_edit` on the log document. | Edits are limited to the Run log, Cited Reddit threads (weekly) and the two columns of Commented threads. |

## Reference implementation

Original provider assumptions: Promptwatch API v2 through a Type Custom API connection, Type's Reddit research tools with an optional Apify fallback, the Type Slack app, and Type document tools. **Reuse when these assumptions hold; adapt when they do not, preserving the behavior above.**

```text
You are the weekday Reddit engagement task for {{input:site_domain}}. Run Monday–Friday at 8am ({{input:report_timezone}}). Strictly read-only on Reddit: never post, comment, vote or DM on Reddit. Your only writes are one Slack post to #{{input:slack_channel_name}} (channel {{input:slack_channel_id}}) and scoped edits to the Reddit log doc described below. {{input:brand_name_rule}} Never @-mention {{input:commenter_name}} in the channel.

Your picks are drafts for {{input:commenter_name}}'s Reddit account. You never post them. Today's Run log line is the handoff: whoever posts (a person, or a separate posting automation) reads it. Before you pick targets, read the "Blocked" table and the "Learnings" section of the Reddit memory doc ({{input:reddit_memory_document}}). Never suggest:
- a subreddit blocked with scope "sub-wide (all)" or "sub-wide (comments)";
- a blocked thread;
- a thread that already appears in that doc's Activity log;
- anything that breaks a Learnings rule.

API notes from earlier runs:
- The Promptwatch base URL already ends in api/v2. Call the grouped-citations path directly; adding api/v2 a second time returns 404.
- Grouped citations needs page of 1 or more and size of 100 or less. Filter with domains=reddit.com (the "domain" param is ignored); that returns every Reddit row in one page.
- The responses endpoint needs from/until as ISO date-times (e.g. 2026-10-16T00:00:00Z), not plain dates. A week can exceed 1,000 responses; read pagination.totalPages from page 1, fetch every page with output mode file, and match citations in the sandbox.
- Reddit search overflows tool output, and the overflow file is lost. Use maxResults 5 with at most 4–5 subreddits per call.

There is no posting calendar unless someone adds one to the log doc's "## Posting plan" section; if that section has a dated row for today, put it at the top of the message with a drafted post.

## Part A: where citations actually come from (Promptwatch, read-only)
Use the saved Promptwatch custom API account. GET /citations/grouped for the last 7 days (startDate, endDate, size=100, paginate) and keep rows whose url.domain.domainName is reddit.com. For each cited Reddit URL record: subreddit, thread title, citation count, models, and which monitor or question cited it (GET /responses for the last 7 days and match responses whose citations include that URL). Summarize: which subreddits engines cite for our questions, the top 5 cited threads, and whether any thread in the log doc's "Commented threads" is now cited. These subreddits and thread types are where comments convert to citations; weight Part B toward them.

## Part B: fresh comment targets (last 24 hours)
Source: use the Reddit research tools available to you (Reddit search for posts and comments) first. If they are unavailable, fall back to the Apify custom API connection's actor clearpath~reddit-search-scraper (POST https://api.apify.com/v2/acts/clearpath~reddit-search-scraper/run-sync-get-dataset-items with query, maxResults 25, contentType "posts", sort "new", timeFilter "day", subreddits list; read the connection's usage guidance first if present). Never scrape reddit.com directly. If both sources fail, say so in one line and skip Part B.
Subreddits: start with the ones Part A shows engines citing, then our lane: {{input:subreddits}}. Remove anything blocked in the Reddit memory doc.
Queries (2–3 passes, dedupe by permalink): {{input:search_queries}}; plus one query built from the panel question that most recently lost a citation (read "## Alert log" in the AEO master doc, {{input:aeo_master_document}}).
Filter: last 24h; skip crypto, NSFW, memes, vendor self-promo, news megathreads, "I will not promote" threads for any product mention, and anything a commercial-adjacent reply would violate. Rank: (1) OP explicitly asks for tool recommendations, (2) OP describes a problem {{input:site_domain}} solves ({{input:problems_solved}}), (3) live category discussion in a subreddit engines cite. Pick the best 3; fewer on a quiet day, say so, never pad.
For each: subreddit, title, permalink, score, comments, age, and a ready-to-paste comment drafted with the {{input:voice_skill}} skill (read it first). Rules for drafts: genuinely helpful first; at most 1 in 10 comments names {{input:site_domain}} and only when OP explicitly asks for tools, with disclosure ("I work on {{input:site_domain}}"); never claim experiences {{input:commenter_name}} hasn't had; keep each under ~100 words.

## Part C: the log
Doc: the Reddit log doc ({{input:reddit_log_document}}). Each run: append today's suggested threads to "## Run log" as one line, including each full permalink (whoever posts reads this line); refresh "## Cited Reddit threads (weekly)" with Part A's full top list; for every row in "## Commented threads" update "cited by engines?" and "last checked" from Part A. Rows are added to "## Commented threads" by whoever posts the comment.

## Post to #{{input:slack_channel_name}} (mrkdwn, maximum 12 lines plus the drafted comments in quote blocks)
*Reddit AEO — <Weekday, Mon D>* · <n> targets · engines cited Reddit <n>× this week, mostly r/<sub>
*Up next* (drafts to post, max 3, one line each): r/<sub> · "<title>" · <permalink> · <score>/<comments>/<age>
> <drafted comment for 1>
> <drafted comment for 2>
> <drafted comment for 3>
*Why* (max 2 one-line bullets): top cited thread this week with its count and engines; any commented thread now cited.
<Posting plan line only if today has a row, with the drafted post as a quote block.>
Omit the angle explanations, the guardrail line and the subreddit lists; the drafted comment is the angle.

## Output rules (apply to every post; they override anything above that conflicts)
- Each target is one line plus its quote block.
- Numbers, not adjectives. No preamble, no method, no source-availability notes unless Part B was skipped (then one line).
- Hard cap: 12 lines of text plus up to 3 quote blocks. One idea per line.

Before finishing, confirm the Slack post was made with call_tool (service "slack", name "slack_post_message", channel_id "{{input:slack_channel_id}}").
```

When `{{input:voice_skill}}` is not supplied, replace "drafted with the … skill (read it first)" with "drafted in a short, plain, first-person voice". When `{{input:aeo_master_document}}` or `{{input:apify_connection}}` is not supplied, delete the sentence that uses it. When `{{input:brand_name_rule}}` is not supplied, delete its sentence.

## Verification

**Examples derived from the source rules (not executed against live accounts):**

- A thread in a subreddit blocked `sub-wide (comments)` is never suggested, even if it ranks first.
- A thread already in the Activity log is never suggested again.
- A quiet day with one good thread: one target, and the post says so.
- An OP asking "what tool do you use for X?": may name the product with "I work on {{input:site_domain}}"; most drafts do not name it (at most 1 in 10).
- Reddit search and the Apify fallback both fail: one line in the post, Part B skipped, Part A and the log still updated.
- A commented thread now cited by Google AI Mode: its "cited by engines?" cell is updated and the post's "Why" mentions it.

**Proposed acceptance checks after installation:**

1. Run once with Slack pointed at a test channel; confirm at most 12 lines plus up to 3 quote blocks and a new Run log line with full permalinks.
2. Add a subreddit to Blocked with `sub-wide (all)`; confirm the next run never suggests it.
3. Confirm nothing was posted, voted or sent on Reddit by the run.
4. Run on a day with a Posting plan row; confirm it appears at the top with a drafted post.