XRepl AI - Tweet Generator

Generate, schedule, and publish tweets in your voice using AI. Browse viral content, manage preferences, and track billing.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 119 · 0 current installs · 0 all-time installs
byJohn Moon@jmoon90
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (AI tweet generation, scheduling, publishing) align with the declared requirements: a single XREPLY_TOKEN credential and a node/npm-based CLI (mcporter/npx). Nothing requested appears unrelated to publishing or account management.
Instruction Scope
SKILL.md contains only mcporter/npx invocations of the @xreplyai/mcp tool and parameters for post generation/management. It does not instruct reading arbitrary local files or unrelated environment variables. Note: invoking 'npx @xreplyai/mcp' will fetch and execute code from the npm package at runtime — expected for this design but a runtime risk to consider.
Install Mechanism
Install spec uses a node package (mcporter) which is appropriate for a node-based CLI. This is a moderate-risk install pattern (npm package execution). There are no direct downloads from unknown hosts or archive extracts in the manifest.
Credentials
Only one env var is required (XREPLY_TOKEN), which is the expected primary credential for a service that drafts/publishes tweets. The number and type of credentials requested are proportionate to the stated functionality.
Persistence & Privilege
always:false and no special system config paths requested. The skill does not request permanent global presence or modify other skills. Autonomous invocation is enabled by default (normal for skills) but not combined with other troubling access.
Scan Findings in Context
[no_regex_findings] expected: The scanner found no regex hits; this is expected because the skill is instruction-only (SKILL.md) and includes no code files for static analysis. Lack of findings does not eliminate runtime risks from npm/packages invoked by npx.
Assessment
This skill is internally consistent for generating and publishing tweets: it needs XREPLY_TOKEN (which can let the service post on your behalf) and uses npm tooling (mcporter / npx @xreplyai/mcp). Before installing: (1) confirm you trust xreplyai.com and the @xreplyai/mcp npm package source (review its repository if possible), (2) understand the XREPLY_TOKEN scope — prefer least-privilege or a test account if available, (3) be aware that npx can fetch and execute remote code at runtime, and (4) avoid using a token that also grants broad non-Twitter account access (billing/admin) unless you intend that. If you need higher assurance, request the upstream package source or an audit of @xreplyai/mcp before enabling the skill.

Like a lobster shell, security has layers — review code before you run it.

Current versionv0.1.0
Download zip
latestvk976dxv394b3x9047mwc4cf5zs82qcw2

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

Clawdis
Any binmcporter, npx
EnvXREPLY_TOKEN
Primary envXREPLY_TOKEN

Install

Install mcporter (node)
Bins: mcporter
npm i -g mcporter

SKILL.md

XReply — AI Tweet Generator

Generate, schedule, and publish tweets in your voice using AI. Browse viral content for inspiration, manage your post queue, and track billing and quota.

Authentication

All tools require an XREPLY_TOKEN environment variable — a JWT token from XreplyAI Settings. This is automatically injected by OpenClaw when set in your skill config.

MCP Server

The XReply MCP server is published as @xreplyai/mcp on npm. You invoke tools via mcporter:

mcporter call 'npx @xreplyai/mcp' <tool_name> [param:value ...]

To discover all available tools and their parameters:

mcporter list 'npx @xreplyai/mcp' --all-parameters

Tools

Discovery

xreply_viral_library

Browse high-performing tweets (100+ likes) for inspiration. Filter by niche, keyword, and time range. Requires Pro or BYOK subscription.

mcporter call 'npx @xreplyai/mcp' xreply_viral_library
mcporter call 'npx @xreplyai/mcp' xreply_viral_library niche:ai sort:top_engaged
mcporter call 'npx @xreplyai/mcp' xreply_viral_library niche:saas query:pricing time_range:7d
mcporter call 'npx @xreplyai/mcp' xreply_viral_library niche:startups sort:recent page:2

Parameters:

  • niche (optional): ai | saas | marketing | productivity | startups | growth
  • sort (optional): top_engaged (default) | recent
  • query (optional): keyword search within tweet text
  • time_range (optional): 7d | 30d
  • page (optional): page number, 20 results per page (default: 1)

Generation

xreply_posts_generate

Generate a single AI post in the user's voice and auto-save it as a draft. Returns the generated body and saved post ID. Counts as 1 against the daily quota (5/day free, 100/day pro).

mcporter call 'npx @xreplyai/mcp' xreply_posts_generate
mcporter call 'npx @xreplyai/mcp' xreply_posts_generate topic:"my SaaS hit 1000 users"
mcporter call 'npx @xreplyai/mcp' xreply_posts_generate topic:"lessons from year 1" angle:story_arc
mcporter call 'npx @xreplyai/mcp' xreply_posts_generate angle:one_liner

Parameters:

  • topic (optional): topic or prompt for the post (max 280 chars)
  • angle (optional): one_liner | list | question | story_arc | paragraph | my_voice

xreply_posts_generate_batch

Generate multiple AI posts at once. Each post counts as 1 against the daily quota — check billing first if quota is a concern. A batch of 9 will exhaust a free account.

mcporter call 'npx @xreplyai/mcp' xreply_posts_generate_batch category:personalized count:5
mcporter call 'npx @xreplyai/mcp' xreply_posts_generate_batch category:trending count:3
mcporter call 'npx @xreplyai/mcp' xreply_posts_generate_batch category:viral count:9

Parameters:

  • category (required): personalized | trending | viral
  • count (required): number of posts to generate (1–9, must not exceed remaining daily quota)

Post Management

xreply_posts_list

List all posts in the queue — drafts, scheduled, and recent posts. Returns post IDs, body text, status, and scheduled times.

mcporter call 'npx @xreplyai/mcp' xreply_posts_list

No parameters.

xreply_posts_create

Save a post draft. The post is not published until you call xreply_posts_publish.

mcporter call 'npx @xreplyai/mcp' xreply_posts_create body:"Your tweet text here"
mcporter call 'npx @xreplyai/mcp' xreply_posts_create body:"Tweet text" auto_rt_hours:24

Parameters:

  • body (required): post body text (max 280 chars)
  • auto_rt_hours (optional): hours after publishing to auto-retweet (e.g. 24)

xreply_posts_edit

Edit a post's body, scheduled time, or auto-retweet setting. Cannot edit posts that are processing or already published.

mcporter call 'npx @xreplyai/mcp' xreply_posts_edit id:123 body:"Updated tweet text"
mcporter call 'npx @xreplyai/mcp' xreply_posts_edit id:123 'scheduled_at:2026-03-15T09:00:00Z'
mcporter call 'npx @xreplyai/mcp' xreply_posts_edit id:123 body:"New text" auto_rt_hours:48

Parameters:

  • id (required): post ID (integer)
  • body (optional): new body text (max 280 chars)
  • scheduled_at (optional): ISO 8601 datetime string — omit to leave unchanged; to unschedule, omit the field and the post reverts to draft
  • auto_rt_hours (optional): hours after publishing to auto-retweet — omit to leave unchanged

xreply_posts_delete

Delete a post. Cannot delete posts that are processing or already published.

mcporter call 'npx @xreplyai/mcp' xreply_posts_delete id:123

Parameters:

  • id (required): post ID (integer)

Publishing

xreply_posts_publish

Publish or schedule a post to X/Twitter. Requires X account to be connected. Scheduling horizon depends on the subscription plan.

mcporter call 'npx @xreplyai/mcp' xreply_posts_publish id:123
mcporter call 'npx @xreplyai/mcp' xreply_posts_publish id:123 'scheduled_at:2026-03-15T09:00:00Z'

Parameters:

  • id (required): post ID (integer)
  • scheduled_at (optional): ISO 8601 datetime to schedule; omit to publish immediately

Context

xreply_billing_status

Get subscription tier (free/byok/pro), quota usage, daily limits, and subscription details.

mcporter call 'npx @xreplyai/mcp' xreply_billing_status

No parameters.

xreply_voice_status

Get voice profile status — whether it has been analyzed, tweet count, AI provider configured, and writing style summary.

mcporter call 'npx @xreplyai/mcp' xreply_voice_status

No parameters.

xreply_preferences_get

Get current post generation preferences — tone, emoji usage, and default structure.

mcporter call 'npx @xreplyai/mcp' xreply_preferences_get

No parameters.

xreply_preferences_set

Update post generation preferences. Provide only the fields you want to change.

mcporter call 'npx @xreplyai/mcp' xreply_preferences_set tone:witty
mcporter call 'npx @xreplyai/mcp' xreply_preferences_set tone:professional include_emoji:false
mcporter call 'npx @xreplyai/mcp' xreply_preferences_set structure:story_arc

Parameters:

  • tone (optional): auto | casual | professional | witty | empathetic
  • include_emoji (optional): true | false
  • structure (optional): one_liner | paragraph | question | list | story_arc

xreply_rules_list

List custom writing rules applied during generation — e.g. "never use hashtags", "always end with a question". Requires Pro or BYOK subscription.

mcporter call 'npx @xreplyai/mcp' xreply_rules_list

No parameters.


Workflow Examples

Generate and schedule a post

1. mcporter call 'npx @xreplyai/mcp' xreply_posts_generate topic:"ship fast, learn faster" angle:story_arc
   → returns { body: "...", post: { id: 42, ... } }
2. mcporter call 'npx @xreplyai/mcp' xreply_posts_publish id:42 'scheduled_at:2026-03-12T09:00:00Z'

Browse viral content for inspiration, then generate

1. mcporter call 'npx @xreplyai/mcp' xreply_viral_library niche:saas sort:top_engaged
   → review viral tweet formats
2. mcporter call 'npx @xreplyai/mcp' xreply_posts_generate topic:"inspired by those formats" angle:list

Plan posts for the week

1. mcporter call 'npx @xreplyai/mcp' xreply_billing_status
   → check remaining quota before a large batch
2. mcporter call 'npx @xreplyai/mcp' xreply_posts_generate_batch category:personalized count:7
   → generates 7 drafts
3. mcporter call 'npx @xreplyai/mcp' xreply_posts_list
   → review the queue
4. mcporter call 'npx @xreplyai/mcp' xreply_posts_edit id:101 'scheduled_at:2026-03-11T09:00:00Z'
   mcporter call 'npx @xreplyai/mcp' xreply_posts_edit id:102 'scheduled_at:2026-03-12T09:00:00Z'
   → schedule each post

Edit and publish an existing draft

1. mcporter call 'npx @xreplyai/mcp' xreply_posts_list
   → find the draft ID
2. mcporter call 'npx @xreplyai/mcp' xreply_posts_edit id:55 body:"Revised tweet text"
3. mcporter call 'npx @xreplyai/mcp' xreply_posts_publish id:55

Error Handling

Token expired: If tools return a 401 error, the XREPLY_TOKEN has expired (tokens last 30 days). Ask the user to get a fresh token from XreplyAI Settings and update it in their OpenClaw config.

Quota exhausted: If generation returns a quota error (e.g. "Daily generation quota exhausted"), call xreply_billing_status to check limits and inform the user. Quota resets at midnight.

Quota insufficient for batch: If xreply_posts_generate_batch returns quota_insufficient: true, reduce count to the available value shown in the response, or ask the user to confirm.

Schedule out of range: If scheduling returns a validation error, the requested time exceeds the plan's scheduling horizon. Call xreply_billing_status to check max_schedule_days and suggest an earlier time.

Cannot edit/delete: Posts with status processing or posted cannot be edited or deleted. Call xreply_posts_list to check the current status.

Viral library requires Pro: If xreply_viral_library or xreply_rules_list returns a 403, inform the user these features require a Pro or BYOK subscription.

Files

2 total
Select a file
Select a file to preview.

Comments

Loading comments…