Skip to content
Automation
Skill

/x-presence

Run an unattended X/Twitter presence — watch topics and mentions in real time, draft posts and replies in the user's own voice, publish original posts on a schedule, and hold replies for a one-tap approval. Trigger whenever the user wants to automate their X/Twitter account,

From plugin
twitr-skills
86 skills
Install
$ npx -y skills add lnvestor/twitr-skills --skill x-presence --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/x-presence

Context preview

The summary Claude sees to decide when to auto-load this skill.

Run an unattended X/Twitter presence — watch topics and mentions in real time, draft posts and replies in the user's own voice, publish original posts on a schedule, and hold replies for a one-tap approval. Trigger whenever the user wants to automate their X/Twitter account,

SKILL.md

x-presence.SKILL.md
name: x-presence
description: Run an unattended X/Twitter presence — watch topics and mentions in real time, draft posts and replies in the user's own voice, publish original posts on a schedule, and hold replies for a one-tap approval. Trigger whenever the user wants to automate their X/Twitter account, grow an audience on X, schedule or draft tweets, set up an X routine or cron job, get alerted about topics or mentions on X, or run an X agent in the background — including casual phrasings like "post for me on X" or "keep an eye on Twitter for me". Works in Claude Code routines, Hermes cron, and OpenClaw cron. Paid per call in USDC via twitr.sh through an x402 wallet — no API key, no signup. Do NOT trigger for reading a single tweet or profile (use x-twitter-data), for bulk dataset exports (use x-twitter-research), or for non-X platforms.
license: MIT
compatibility: Requires network access and an x402/MPP payment client (AgentCash MCP recommended). Needs a connected X account for publishing. Scheduling is optional and runs on the user's own account or machine.
metadata:
  author: twitr.sh
  version: "1.0"

X presence — unattended posting, listening, and reply drafting

| Task | Approach | |---|---| | **First-time setup** | Follow **Setup** below in order. Do not skip the profile step — every draft depends on it. | | **Run one cycle now** | Jump to **The cycle**. Safe to run any time; it is idempotent. | | **Schedule it** | See `references/scheduling.md` — verified commands for Claude routines, Hermes, OpenClaw. | | **Approve queued replies** | Read `.twitr/pending.md`, confirm with the user, then post per **step 5**. | | **Change voice or topics** | Edit `.twitr/profile.json`; nothing else needs touching. |

> Every call is paid per request from the user's wallet. **State the cost before any batch, > and confirm before anything over $1.** Reads are free; a reply is $0.036.

What this skill will not do

These are prohibited by X's automation rules, so the tools are simply absent from the loop — not merely discouraged. If the user asks for them, explain why rather than complying:

  • **No automated following or unfollowing.** X bans automated following that is "bulk,

aggressive, or indiscriminate", and applications that claim to get users more followers are prohibited outright. The 400/day figure is a technical cap, not permission.

  • **No automated liking.** "You may not like posts... in an automated manner."
  • **No keyword-triggered auto-replies.** Banned by explicit example.
  • **No near-duplicate posting.** Same text across posts or accounts is spam.

This isn't only compliance. In X's published ranking weights, follows aren't scored at all and a like scores 0.5, while a single report scores −369.0. The banned tactics cost reach. See `references/ranking-signals.md`.

Setup

Run these once, in order. Report the cost of step 4 before running it.

**1. Payment.** Confirm the user has an x402 wallet available — AgentCash MCP is easiest, and in Claude routines its traffic is proxied so no domain allowlisting is needed. If absent, stop and tell them to connect one; nothing here works without it.

**2. Voice profile.** Interview the user, then write `.twitr/profile.json`. Ask about tone, an account whose style they like, and what they never want to say. Keep it local — never send this file anywhere.

{
  "handle": "myhandle",
  "topics": ["x402", "agent payments"],
  "voice": {
    "tone": "direct, dry, technical — no hype, no emoji",
    "styleUsername": "account_whose_voice_they_like",
    "doNotSay": ["game-changer", "🚀"]
  },
  "goal": "be known for practical agent-payment writing",
  "caps": { "repliesPerDay": 10, "postsPerDay": 2 },
  "monitors": {}
}

**3. Connect the X account** — free, wallet-signed, and **you never handle the password**. Mint a link, give it to the user, wait.

POST https://twitr.sh/api/x-accounts/start   {"username"}   → {connect_url, expires_in}
GET  https://twitr.sh/api/x-accounts                        → poll until "linked"

Show the user `connect_url` and say: *open this in your browser and sign in to X there.* They enter their password on twitr.sh, in their own browser; it never passes through you. The link is single-use and expires in 15 minutes — mint a fresh one if it lapses.

> **Never ask the user for their X password, email, or 2FA secret — and never accept one if > they offer it.** If a user pastes a credential into the chat, tell them not to, and send them > the link instead. There is no endpoint on this skill that takes a password.

**4. Create the listeners** — one per topic plus one for mentions. ~$4.20 per monitor per week. **Tell the user the total first.**

POST https://twitr.sh/api/tools/x_monitor
Idempotency-Key: <uuid>
{ "action": "create", "query": "x402", "hours": 168 }
{ "action": "create", "query": "@myhandle", "hours": 168 }

Save each returned `monitor_id` into `profile.json` → `monitors`. Monitors need a recoverable owner wallet, so pay on **Base or Tempo, not Solana**.

The cycle

One pass, then stop. Scheduling is what repeats it — never loop in-session.

**1. Read new events** (free)

GET https://twitr.sh/api/monitors/{id}/events?after={last_event_id}

`after` comes from `.twitr/state.json`. Events are returned oldest-first; the last id you process becomes the new cursor. A `monitor.expired` event means the monitor ended — tell the user it needs extending and stop.

**2. Shortlist** — at most `caps.repliesPerDay`. Priority: direct mentions, then genuine questions in-topic where the user actually knows the answer. Skip anything on `doNotSay` territory, anything political, anything already in `state.json.replied`, and anything older than ~12 hours (late replies read as automated).

**3. Draft** (~$0.001 each — draft freely, keep the best)

POST https://twitr.sh/api/tools/compose
{ "step": "generate", "topic": "<what you're answering + your angle>",
  "goal": "<profile.goal>"
Read more
Ships withtwitr-skills

**Six installable X/Twitter skills for Claude Code, Cursor, OpenClaw and Hermes — paid per call in USDC. No X developer account, no API keys, no OAuth, no signup, no subscription.**

Get the whole plugin
Stats
8
Stars
1
Forks
Maintained
Maintenance
MIT
License
1mo ago
Last commit
1mo ago
Created

Repo: lnvestor/twitr-skills

Other skills on twitr-skills.