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.
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
- Select Use automation to open a new conversation with the automation attached.
- Choose a space and describe any changes you want before sending the message.
- 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.