X comment replies agent

A few posts a day in our market get a reply worth reading. A person taps Reply.

A new X account has no audience. On X the way in is replies: one useful reply under a post people in your market already read is seen by more of them than anything the account posts on its own. Finding that post every day, reading the thread, and writing something that is not a pitch takes an hour nobody has, so it does not happen.

Running on our own company since Oct 13, 2026 · X · Risk: Medium. Everything on this page is public; there is nothing to sign in for.

Goes inThe last 48 hours of X, read through the API: two search queries per lane, founders asking how to show up in AI answers and practitioners discussing AI search
Comes outTwo to five replies, emailed as one-tap links that open X’s reply box with the text in it, and one ledger row per reply, which this log is built from
Human stepEvery run: someone opens each link, reads the reply and taps Reply, or skips it. The agent never posts
Runs onA machine you control, once a day at a random minute of a morning window, with no browser in the loop

Tasks and outputs

What it takes on

Find the posts

Searches each lane through the X API, filters by rule (age, reply count, author, promotion words, the ledger), and offers the candidates with a score.

Two to five posts

Write the replies

Reads each thread, writes one to three sentences per post that answer its point and add one thing, and runs the checklist on each.

One reply each, no link

Record and deliver

Writes a ledger row per reply and emails the links in one message. The next run marks each row sent or skipped.

Ledger rows + one email

Who it is for: Founders and small teams who want their X account to be part of a conversation in their market, one reply a day, without automating the one thing X suspends accounts for: posting the reply.

How we use it: We run it on our own new X account from October 2026: every morning, at a random minute, it writes two to five replies, each under a different post, in the two conversations we care about, founders asking how to show up in ChatGPT and Perplexity, and practitioners discussing AI search. The first two weeks are nurture only, with no product and no link in any reply. The ledger behind the run log records every reply it wrote, whether a person posted it or not.

Workflows/x-comment/voice.mdRules the reply is written to

What a reply looks like

01One to three sentences, 240 characters or fewer. The first sentence answers something specific in the post, in its own words.

02Exactly one addition: a number we measured, an observation that runs against the obvious, or a question. Not already in the thread.

03The thread’s register: length, lowercase or not, punctuation, slang. A thread of one-liners gets a one-liner.

04No link, ever. No product and no brand until 2026-10-26; after that one clause at most, in a user’s voice, promote mode only.

05None of the banned words, no em or en dash, no list, at most one emoji. No corrections, no arguments, no reply under a competitor’s ad.

06A reply that fails the checklist twice is not prefilled; the run picks another post or stops for the day.

Read from the voice guideTwo to five a day, drawn at random

The rules the agent’s output is written to, from the file named above. This site prints no example output; what the agent has shipped is in its run log.

Workflow

How a run goes, step by step

Pick a step to see what goes in, what comes out, and where a person is involved.

Step 1 of 6

Reconcile the ledger

Once a day, at a random minute inside a three-hour morning window, the wrapper starts and reads the replying account’s last 20 posts through the API. A row whose target one of them replies to becomes sent, with the reply’s link and impressions; one still unmatched 48 hours after it was written becomes skipped; a sent row gets one more impressions read once it is two days old.

Goes in

The ledger and the account’s own posts

Comes out

Settled rows

Where a person steps in

Nobody. If the account’s handle is not configured yet, the run stops and says so.

Step 2 of 6

Search two lanes

Two queries per lane, never the same two as the previous run, each a search of the last 48 hours for English posts that are not retweets or replies. The filter drops posts with no replies or more than 100, our own accounts, authors replied to in the last seven days, targets already in the ledger, and promotion words. What is left is printed with a score for recency, replies and the author’s reach.

Goes in

Workflows/x-comment/queries.md and accounts.md

Comes out

A list of candidate posts, or none

Where a person steps in

When nothing passes, the run stops. Three empty days in a week are the signal for a person to change the queries.

Step 3 of 6

Pick the posts and read each thread

The day’s target is drawn at random between two and five. The agent picks up to that many posts the way a person would, one per author: a founder asking a real question, or a practitioner making a point a measured number can add to; never a vendor’s ad or a thread that is already an argument. Each post and every reply under it are read through the API, for what was already said and for the thread’s register.

Goes in

The candidates

Comes out

Two to five posts and their threads

Where a person steps in

Nobody in this step. A day with fewer posts worth a reply gets fewer replies.

Step 4 of 6

Write each reply and check it

One to three sentences per post to the voice guide: answer the specific point, add one thing, match the thread, no link, no brand before 2026-10-26, none of the banned words, no number reused across the run. The checklist is run on each before anything is recorded; a reply that fails twice is dropped, never forced.

Goes in

The threads and Workflows/x-comment/voice.md

Comes out

One draft per post

Where a person steps in

Nobody; the checklist is the gate.

Step 5 of 6

Record, then deliver

A ledger row per reply is written first, dated now. Then the replies go out in one email, each as X’s own share link with the post and the text in it: opened on a phone or a computer, it shows the reply box under the right post with the reply already typed. No script touches a browser; nothing is posted by the agent.

Goes in

The drafts and the post URLs

Comes out

Ledger rows and one email with a link per reply

Where a person steps in

When the email cannot be sent, the links are in the run’s log on the machine. The rows are already written either way.

Step 6 of 6

A person posts; the ledger is pushed

The person opens each link, reads the reply and taps Reply, or skips it; the run does not wait. It commits and pushes the ledger, with no deploy, and writes a one-line note to its log. The next run’s reconcile records what happened, and the next deploy of the site shows it here.

Goes in

The email

Comes out

Posted replies, or not

Where a person steps in

Every run: the tap is a person’s. That is the design, not a gap.

Before you start

What you’ll need to bring

Company material

The numbers you can put in a reply: your own measured findings, in files the agent can read. A reply with a real number in it is the one thing nobody else in the thread has.

Source material

Two lanes of search queries for the conversations you want to be part of, and optionally a list of accounts whose posts to search directly.

Platform account

An X developer account with pay-per-use credits, for reading, and a separate replying account, signed in on the phone or browser the link is opened in and authorized once for its own reads.

Run environment

A machine that is on in the morning: Node.js for the scripts, an agent runner that follows a written workflow for the writing step, a scheduler, and an email sender. We use Claude Code under Windows Task Scheduler. No browser is needed.

Run log

Recent runs, as they happened

The full log is public and read-only. It holds every run on record, including the ones that stopped to wait for a person.

View the full run log

Guides and files

Set it up yourself

The setup guide, and the files the agent is built from. You run it in your own environment, with your own accounts.

Open · no account neededA Claude Code workflow (markdown instructions), a voice guide, four Node scripts (the API search and reconcile, the ledger, the emailed reply link, and the OAuth signing they share with the X posting agent) and the wrapper the scheduler runs. An optional fifth script types the reply into a dedicated Chrome for someone at the machine. Not packaged for public download yet — the setup guide below describes what they do; the managed tier runs it for you today.
Setup guide
  1. 01

    Runtime

    • Node.js 20 or later, with the two dependencies installed in the scripts’ folder: the email client, and the browser driver only for the optional prefill. The API scripts have none.
    • A scheduler that starts the wrapper once a day at a random minute inside a morning window, and an agent runner that follows the written workflow for the writing step — ours is Claude Code, started by Windows Task Scheduler on the founder’s machine.
  2. 02

    Browser setup

    • None for the daily run: the reply travels as a link, and the person posts from whatever X app or browser they open it in.
    • Optionally, a Chrome profile used for nothing but this, with remote debugging on, for the prefill script when someone is at the machine. Never the everyday browser.
  3. 03

    Account setup

    • An X developer account with pay-per-use credits and OAuth 1.0a keys, for reading: the search, a thread, the account’s own posts. We read with the developer account and reply from a separate account.
    • The replying account, signed in on the phone or browser where the link is opened: the link posts from whichever account is active there. Its API credentials come from a one-time PIN authorization of the same app and are used only to read its own posts when reconciling.
    • An email sender verified in SES, and an inbox the link goes to; ours are the ones the site’s lead form already uses.
  4. 04

    Configuration

    • The query file: two lanes of search terms, the daily range (two to five replies, drawn at random each morning; never more than five), the lookback window (48 hours), the replying account’s handle, the handles never to reply to, and the address the replies are emailed to.
    • An optional list of accounts whose posts are searched directly, empty for the first week and grown from what the searches turn up.
    • The voice guide: length, the one-addition rule, the banned words, the no-link rule and the date before which no brand is named.
  5. 05

    First run

    • Run the search once and read what comes back; if nothing in it is a post you would reply to by hand, change the queries before anything else.
    • Run the whole thing once by hand: read the email, open the link on your phone, check that the reply box holds the text under the right post, and that Reply is yours to tap.
    • Post it, then run again the next day and check that the reconcile marked the row sent with the reply’s link.
Files · 9

x-comment.md

Workflow · Markdown. The steps: reconcile, quota, search, pick, read, write, record, deliver, report.

Workflow

voice.md

Voice guide · Markdown. Length, the one-addition rule, the banned words, the no-link and no-brand rules, the checklist.

Voice guide

queries.md

Configuration · Markdown. Two lanes of queries, the daily range, the lookback window, the replying account, the handles never to reply to, the email address.

Configuration

search.mjs

Script · Node. The reads: the two-lane search with its filter, a thread, and the reconcile that settles the ledger.

Script

notify.mjs

Script · Node. Builds X’s share link for each row written in the run and emails them with the drafts and the targets.

Script

ledger.mjs

Script · Node. Appends a row per reply, with the format module it shares with the website, which builds this log from the file.

Script

run-x-comment.ps1

Scheduler · PowerShell. The daily run: reconcile, the day’s target, the writing session, the email, one commit of the ledger.

Scheduler

prefill-reply.mjs

Script · Node. Optional: types the reply into a dedicated Chrome for someone at the machine. Never clicks Reply.

Script

reply-log.md

Ledger · Markdown. One row per written reply: date, lane, target, author, draft, status, reply link, impressions. The file this log is built from.

Ledger

Not packaged for public download yet. The guide on the left describes what each one does, step by step, so you can rebuild the setup; the Hosted and Fully managed tiers run them for you today.

Rather have us run it?

Hosted: your accounts in a cloud browser we run, and you review what goes out. Fully managed: we set the strategy and run the agents.

Good to know

Where it stops and asks for you

  • The replying account is not configured. The reconcile stops before any search: the handle goes into the query file and the account is authorized once.
  • Today’s target is already met. The run stops before searching; a search costs money and could not be used.
  • Nothing passed the filter, or fewer posts than the target were worth a reply. The run sends what it has, which may be nothing, and says so. It does not widen the window or lower the bar.
  • The email cannot be sent. The run stops after writing the row; the link is in the run’s log on the machine. Nothing is retried.
  • The link opens the wrong account. The link posts from whichever X account is signed in where it is opened. Switch accounts before tapping Reply; nothing is sent until then.
  • The reply was emailed but nobody posted it. Forty-eight hours later the reconcile marks the row skipped. That is a record, not an error.

Risk notice

What to watch for

  • X’s developer and automation rules are the whole shape of this agent: reads through the paid API, the reply delivered as X’s own share link, the tap a person’s. Do not add the tap. The replying account should not share a phone number with the developer account.
  • A new account’s replies sit low in a thread and may be read as marketing even without a link. The first two weeks name no product; the day’s count is drawn between two and five and never exceeds five, with one reply per author per week; nothing is retried.
  • Reads cost money: about half a dollar a run at 2026 prices, from the developer account’s balance. Set a monthly limit in the developer console.

FAQ

Questions about this agent

Why a link instead of posting for me?

X allows automated replies through its API only when the post’s author summoned the account, requires written approval for AI-generated replies, and lists browser automation as grounds for permanent suspension. The share link is what every “Post on X” button on the web uses; opening it and tapping Reply is a person posting.

The link opened the wrong account.

The link posts from whichever X account is signed in where it is opened. Switch to the replying account before tapping Reply; nothing is sent until the tap.

The search found nothing worth replying to.

The run emails a one-line note and stops; it never widens the window or lowers the bar on its own. Three such days in a week are the signal to change the queries, which is a person’s decision.

How does the log know whether the reply was posted?

It does not, on the day. The next run reads the account’s recent posts through the API and matches each one that replies to a ledger target; a row still unmatched 48 hours after the email is marked skipped.