Phrase automations
A phrase automation posts every new X post containing a phrase, from an author who clears the follower and check-mark gates.
Trigger
Every 10 seconds, the bot searches X’s Latest feed for the phrase (GET /2/search?q=…&feed=latest), sent as an exact-phrase match — the phrase quoted — and, only when the check-mark gate is Blue check, X’s own filter:blue_verified operator added to the query.
Every result is re-checked locally regardless of what the search already filtered: the phrase must appear exactly, case-insensitive, in order; and the author must clear both the minimum-follower gate and the check-mark gate. Reposts are dropped — the original post is its own row — but replies are matched: a reply is a post.
Up to 5 new posts announce per poll. If more than 5 turn up between polls, the newest 5 send — oldest of those first — and the rest wait for the next poll. The bot remembers the last 300 announced post ids.
Setup
Setup, in order
- Open Dashboard → Beta → Automations with the bot selected.
- Click Add and pick Phrase Filter in the Which automation? picker.
- Enter the phrase in phrase to scan for — up to 120 characters; quote characters are stripped as you type.
- Set the author gates: min followers (0 = everyone) and the check-mark dropdown (Any account, Any check mark, Blue check, Gold check, Gray check).
- Pick the destination group from Posts in group… — only groups already authorized for the bot are listed.
- Optional: add rules on the same form — the Rules section here describes facts about the post’s author.
- Optional: write the message, upload or link an image, set the link label and position, add buttons.
- Click Create.
- Optional, from the saved automation’s card: open the Topics icon to route its messages into a forum topic, or the Recap icon to add a scheduled recap.
Settings
| Setting | Accepts | Default |
|---|---|---|
| Phrase | Text, whitespace-collapsed, 1–120 characters, no " character | Required — no default |
Minimum followers (minFollowers) | Whole number, 0 to 1,000,000,000 | 0 — everyone qualifies |
Check mark (verified) | any / verified / blue / gold / gray — shown as Any account, Any check mark, Blue check, Gold check, Gray check | any |
| Destination group | One of the bot’s currently authorized groups | Required — no default |
Message (textHtml) | Telegram-HTML text | Empty — falls back to the house default (see Output card) |
Image (imageUrl) | An uploaded image: jpg, jpeg, png or webp, 5MB max | Empty — uses the matching post’s own photo when it has one |
Link label (linkLabel) | Text; empty renders the bare post URL instead of a link | View post on X |
Link position (linkPosition) | top or bottom | bottom |
Show quoted post (showTweet) | On or off | On |
| Buttons | Up to 12; label text truncated at 64 characters; URL must be http(s):// | None |
Button layout (buttonLayout) | stacked or inline | stacked |
| Rules | Up to 8, gate the send — set on this same form, before saving | None (once any exist, every rule must hold unless a tolerance is set) |
| Recap | A schedule that summarizes the entry’s hits at set times — configured from the saved card, not this form | Off |
Topics (topics) | Routes the entry’s messages into a forum topic instead of General — configured from the saved card, not this form | Unset — General |
Output card
The bot sends the message as a photo caption when an image is available — the automation’s own image, or the matching post’s own photo — or as a plain text message when there is no image at all. A phrase automation never delivers as a Telegram rich card; that layout is follow-tracker only.
The message has up to three parts, joined by blank lines: the link line (top or bottom, per the link-position setting), the message text (or the house default below when left empty), and — unless the quoted-post setting is off — the post’s own text as an expandable quote, cut to 600 characters as a text message or 400 as a photo caption.
House default message (message left empty)
| Input | Output |
|---|---|
| textHtml | 🔎 <b>@handle posted</b> <i>the phrase</i> |