xreply
Generate, schedule, and publish posts to X and LinkedIn in your voice using AI. Browse viral content, manage preferences, and track billing.
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install github:LeoYeAI~openclaw-master-skills~xreplyaicURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/github%3ALeoYeAI~openclaw-master-skills~xreplyai/file -o xreplyai.md# XReply — AI Post Generator
Generate, schedule, and publish posts to X and LinkedIn 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@0.3.11' <tool_name> [param:value ...]
```
To discover all available tools and their parameters:
```
mcporter list 'npx @xreplyai/mcp@0.3.11' --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@0.3.11' xreply_viral_library
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_viral_library niche:ai sort:top_engaged
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_viral_library niche:saas query:pricing time_range:7d
mcporter call 'npx @xreplyai/mcp@0.3.11' 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. Specify `platform` to control output length and style — X posts are capped at 280 chars, LinkedIn posts up to 3000 chars. 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@0.3.11' xreply_posts_generate
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate topic:"my SaaS hit 1000 users"
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate topic:"lessons from year 1" angle:story_arc
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate platform:linkedin topic:"leadership lessons"
mcporter call 'npx @xreplyai/mcp@0.3.11' 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`
- `platform` (optional): `x` (default) | `linkedin` — controls output length and style
#### 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@0.3.11' xreply_posts_generate_batch category:personalized count:5
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate_batch category:trending count:3
mcporter call 'npx @xreplyai/mcp@0.3.11' 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, scheduled times, and per-platform content.
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_list
```
No parameters.
#### xreply_posts_create
Save a post draft. Use `body` for a simple X-only post. Use `post_contents` for LinkedIn posts or when posting different content to multiple platforms. The post is not published until you call `xreply_posts_publish`.
**X-only post (simple):**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create body:"Your tweet text here"
```
**X post with auto-retweet:**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"twitter","body":"Tweet text","metadata":{"auto_rt_hours":24}}]'
```
**LinkedIn post:**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"linkedin","body":"Your long LinkedIn post here..."}]'
```
**Cross-post to X and LinkedIn with different text:**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"twitter","body":"Short tweet"},{"platform":"linkedin","body":"Expanded LinkedIn version..."}]'
```
**X post with image (upload first with xreply_media_upload):**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"twitter","body":"Check this out","content_type":"single_image","metadata":{"media_id":"1234567890"}}]'
```
**LinkedIn post with image (upload first with xreply_media_upload):**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"linkedin","body":"Caption here","content_type":"single_image","metadata":{"asset_urn":"urn:li:digitalmediaAsset:..."}}]'
```
Parameters:
- `body` (optional): X post body text (max 280 chars). Use `post_contents` for LinkedIn or cross-posting.
- `post_contents` (optional): array of per-platform content objects. Takes precedence over `body`.
- `platform` (required): `twitter` | `linkedin`
- `body` (required, except for LinkedIn video): post body (max 280 for X, max 3000 for LinkedIn). Optional when `content_type` is `video`.
- `content_type` (optional): `text` (default) | `single_image` | `multi_image` | `video`
- `metadata` (optional): For X images: `{ media_id: "..." }` or `{ media_ids: ["..."] }`. For LinkedIn images: `{ asset_urn: "..." }` or `{ asset_urns: ["..."] }`. For LinkedIn video: `{ asset_urn: "..." }` (from `xreply_video_upload`). For auto-retweet: `{ auto_rt_hours: 24 }`. For X communities: `{ community_id: "12345" }` (use `xreply_list_twitter_communities` to get IDs).
- `account_id` / `account_ids` (optional): social account(s) to post from
#### xreply_posts_edit
Edit a post's content, scheduled time, or auto-retweet setting. Use `body` to update X-only text, or `post_contents` to update per-platform content. Cannot edit posts that are processing or already published.
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_edit id:123 body:"Updated tweet text"
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_edit id:123 'scheduled_at:2026-03-15T09:00:00Z'
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_edit id:123 post_contents:'[{"platform":"linkedin","body":"Updated LinkedIn text"}]'
```
Parameters:
- `id` (required): post ID (integer)
- `body` (optional): new X body text (max 280 chars)
- `post_contents` (optional): per-platform content to update — replaces content for submitted platforms only. `metadata.auto_rt_hours` sets X auto-retweet hours; pass `null` to disable. `metadata.community_id` sets the X community to post into (use `xreply_list_twitter_communities` to get IDs).
- `scheduled_at` (optional): ISO 8601 datetime string — omit to leave unchanged; pass `null` to unschedule
#### xreply_posts_delete
Delete a post. Cannot delete posts that are processing or already published.
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_delete id:123
```
Parameters:
- `id` (required): post ID (integer)
---
### Media Upload
#### xreply_media_upload
Upload an image file from disk and get back a media identifier to attach to a post. Call this before `xreply_posts_create` or `xreply_posts_edit` to attach images. Supports JPEG, PNG, GIF, and WebP up to 5 MB.
**Note:** Requires filesystem access — works in Claude Code, Cursor, and mcporter CLI. Not available in Claude.ai (no filesystem); in that case use the Posts dashboard at app.xreplyai.com/dashboard/posts to attach images directly.
**Upload an image for X:**
```
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_media_upload image_pa