jpskill.com
💬 コミュニケーション コミュニティ

xreply

AIを活用して、XやLinkedInに合わせた投稿の生成、予約、公開を行い、人気のコンテンツを閲覧しながら、設定の管理や請求状況の確認ができるSkill。

📜 元の英語説明(参考)

Generate, schedule, and publish posts to X and LinkedIn in your voice using AI. Browse viral content, manage preferences, and track billing.

🇯🇵 日本人クリエイター向け解説

一言でいうと

AIを活用して、XやLinkedInに合わせた投稿の生成、予約、公開を行い、人気のコンテンツを閲覧しながら、設定の管理や請求状況の確認ができるSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o xreply.zip https://jpskill.com/download/5602.zip && unzip -o xreply.zip && rm xreply.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/5602.zip -OutFile "$d\xreply.zip"; Expand-Archive "$d\xreply.zip" -DestinationPath $d -Force; ri "$d\xreply.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して xreply.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → xreply フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] xreply

XReply — AI投稿ジェネレーター

AIを使って、あなたの声でXやLinkedInに投稿を生成、スケジュール設定、公開できます。バイラルコンテンツを閲覧してインスピレーションを得たり、投稿キューを管理したり、請求とクォータを追跡したりできます。

認証

すべてのツールには、XreplyAI SettingsからのJWTトークンであるXREPLY_TOKEN環境変数が必要です。これは、スキル設定で設定するとOpenClawによって自動的に挿入されます。

MCPサーバー

XReply MCPサーバーは、npmで@xreplyai/mcpとして公開されています。mcporterを介してツールを呼び出します。

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

利用可能なすべてのツールとそのパラメータを検出するには:

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

ツール

発見

xreply_viral_library

インスピレーションを得るために、パフォーマンスの高いツイート(100以上の「いいね」)を閲覧します。ニッチ、キーワード、期間でフィルタリングできます。ProまたはBYOKサブスクリプションが必要です。

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

パラメータ:

  • niche (オプション): ai | saas | marketing | productivity | startups | growth
  • sort (オプション): top_engaged (デフォルト) | recent
  • query (オプション): ツイートテキスト内のキーワード検索
  • time_range (オプション): 7d | 30d
  • page (オプション): ページ番号、1ページあたり20件の結果 (デフォルト: 1)

生成

xreply_posts_generate

ユーザーの声で単一のAI投稿を生成し、下書きとして自動保存します。出力の長さとスタイルを制御するためにplatformを指定します。Xの投稿は280文字に制限され、LinkedInの投稿は最大3000文字です。生成された本文と保存された投稿IDを返します。1日あたりのクォータに対して1としてカウントされます(無料アカウントは5/日、Proアカウントは100/日)。

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

パラメータ:

  • topic (オプション): 投稿のトピックまたはプロンプト (最大280文字)
  • angle (オプション): one_liner | list | question | story_arc | paragraph | my_voice
  • platform (オプション): x (デフォルト) | linkedin — 出力の長さとスタイルを制御します

xreply_posts_generate_batch

複数のAI投稿を一度に生成します。各投稿は1日あたりのクォータに対して1としてカウントされます。クォータが気になる場合は、まず請求を確認してください。9件のバッチで無料アカウントのクォータを使い果たします。

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

パラメータ:

  • category (必須): personalized | trending | viral
  • count (必須): 生成する投稿の数 (1~9、残りの1日あたりのクォータを超えてはなりません)

投稿管理

xreply_posts_list

キュー内のすべての投稿(下書き、スケジュール済み、最近の投稿)を一覧表示します。投稿ID、本文テキスト、ステータス、スケジュールされた時間、およびプラットフォームごとのコンテンツを返します。

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_list

パラメータはありません。

xreply_posts_create

投稿の下書きを保存します。シンプルなX専用の投稿にはbodyを使用します。LinkedInの投稿や複数のプラットフォームに異なるコンテンツを投稿する場合はpost_contentsを使用します。投稿はxreply_posts_publishを呼び出すまで公開されません。

X専用投稿 (シンプル):

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

自動リツイート付きX投稿:

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"twitter","body":"Tweet text","metadata":{"auto_rt_hours":24}}]'

LinkedIn投稿:

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"linkedin","body":"Your long LinkedIn post here..."}]'

異なるテキストでXとLinkedInにクロスポスト:

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投稿 (最初に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投稿 (最初に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:..."}}]'

パラメータ:

  • body (オプション): X投稿の本文テキスト (最大280文字)。LinkedInまたはクロスポストにはpost_contentsを使用します。
  • post_contents (オプション): プラットフォームごとのコンテンツオブジェクトの配列。bodyよりも優先されます。
    • platform (必須): twitter | linkedin
    • body (必須、LinkedInビデオを除く): 投稿本文 (Xの場合は最大280文字、LinkedInの場合は最大3000文字)。content_typevideoの場合はオプションです。
    • content_type (オプション): text (デフォルト) | single_image | multi_image | video
    • metadata (オプション): X画像の場合: { media_id: "..." } または { media_ids: ["..."] }。LinkedIn画像の場合: { asset_urn: "..." } または { asset_urns: ["..."] }。LinkedInビデオの場合: { asset_urn: "..." } (xreply_video_uploadから取得)。自動リツイートの場合: { auto_rt_hours: 24 }。Xコミュニティの場合: { community_id: "12345" } (xreply_list_twitter_communを使用

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

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_path:/path/to/photo.jpg platform:twitter
→ returns { platform: "twitter", media_id: "1234567890" }

Upload an image for LinkedIn:

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_media_upload image_path:/path/to/photo.png platform:linkedin
→ returns { platform: "linkedin", asset_urn: "urn:li:digitalmediaAsset:..." }

Parameters:

  • image_path (required): absolute or relative path to the image file on disk
  • platform (required): twitter | linkedin
  • content_type (optional): image/jpeg | image/png | image/gif | image/webp — inferred from extension if omitted

Use the returned identifier in post_contents[].metadata:

  • X single image: metadata: { media_id: "..." }
  • X multiple images: metadata: { media_ids: ["...", "..."] }
  • LinkedIn single image: metadata: { asset_urn: "urn:li:..." }
  • LinkedIn multiple images: metadata: { asset_urns: ["urn:li:...", "urn:li:..."] }

xreply_video_upload

Upload an MP4 video file from disk to LinkedIn and get back an asset URN to attach to a post. Uses your primary connected LinkedIn account. Call this before xreply_posts_create or xreply_posts_edit to attach a video. Supports MP4 only, up to 100 MB.

Note: Only LinkedIn is supported — X video upload requires OAuth 1.0a which is not currently supported. Requires filesystem access — works in Claude Code, Cursor, and mcporter CLI. Not available in Claude.ai; use the Posts dashboard at app.xreplyai.com/dashboard/posts to attach videos directly.

Upload a video for LinkedIn:

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_video_upload video_path:/path/to/video.mp4
→ returns { platform: "linkedin", asset_urn: "urn:li:video:ABC123" }

Parameters:

  • video_path (required): absolute or relative path to the MP4 file on disk (max 100 MB)

Use the returned asset_urn in post_contents[].metadata with content_type: "video":

  • LinkedIn video: content_type: "video", metadata: { asset_urn: "urn:li:video:..." } (body is optional)

Publishing

xreply_posts_publish

Publish or schedule a post. Requires account_id or account_ids — if neither is provided and no accounts were attached when the post was created, returns NO_ACCOUNT_SPECIFIED. If scheduled_at is provided (ISO 8601), the post will be queued for that time (scheduling horizon depends on your plan). If omitted, the post is published immediately. Each platform (X, LinkedIn) requires the corresponding social account to be connected.

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:123 account_id:1
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:123 account_id:1 'scheduled_at:2026-03-15T09:00:00Z'
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:123 'account_ids:[1,2]'

Parameters:

  • id (required): post ID (integer)
  • account_id (required if no accounts attached): social account ID to publish from
  • account_ids (optional): array of social account IDs — takes precedence over account_id
  • 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@0.3.11' 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@0.3.11' xreply_voice_status

No parameters.

xreply_preferences_get

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

mcporter call 'npx @xreplyai/mcp@0.3.11' 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@0.3.11' xreply_preferences_set tone:witty
mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_preferences_set tone:professional include_emoji:false
mcporter call 'npx @xreplyai/mcp@0.3.11' 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_list_social_accounts

List all connected social accounts (X/Twitter, LinkedIn) with their IDs, platform, username, and primary status. Use this to find account_id values needed for xreply_posts_create and xreply_posts_publish — especially for newly connected accounts that have no posts yet.

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_list_social_accounts

Returns: social_accounts[] — each with id, platform, uid (platform-native user ID), username, email, primary, connected_at.

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@0.3.11' xreply_rules_list

No parameters.

xreply_list_twitter_communities

List the X communities the user has previously posted to, ordered by most recently used. Returns community IDs and names to use as community_id in post_contents metadata.

mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_list_twitter_communities

No parameters.


Workflow Examples

Generate and schedule an X post

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

Generate and schedule a LinkedIn post

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate platform:linkedin topic:"leadership lessons from year 1" angle:story_arc
   → returns { body: "...", post: { id: 43, ... } }
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:43 account_id:2 'scheduled_at:2026-03-12T09:00:00Z'

Cross-post to X and LinkedIn with different text

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate topic:"motivation" platform:x
   → { body: "Short tweet...", post: { id: 44 } }
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate topic:"motivation" platform:linkedin
   → { body: "Long LinkedIn article...", post: { id: 45 } }

   Or create as a single post with both platforms:
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"x","body":"Short tweet..."},{"platform":"linkedin","body":"Long LinkedIn article..."}]'
4. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:46 'account_ids:[1,2]' 'scheduled_at:2026-03-13T09:00:00Z'

Browse viral content for inspiration, then generate

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

Plan posts for the week

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_billing_status
   → check remaining quota before a large batch
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_generate_batch category:personalized count:7
   → generates 7 drafts
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_list
   → review the queue
4. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_edit id:101 'scheduled_at:2026-03-11T09:00:00Z'
   mcporter call 'npx @xreplyai/mcp@0.3.11' 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@0.3.11' xreply_posts_list
   → find the draft ID
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_edit id:55 body:"Revised tweet text"
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:55 account_id:1

Post an X image

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_media_upload image_path:/Users/me/photo.jpg platform:twitter
   → { media_id: "1234567890" }
2. 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"}}]'
   → { post: { id: 77, ... } }
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:77 account_id:1

Post to an X community

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_list_twitter_communities
   → returns [{ community_id: "12345", name: "AI Builders", last_used_at: "..." }, ...]
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"twitter","body":"Exciting update for the community!","metadata":{"community_id":"12345"}}]'
   → { post: { id: 88, ... } }
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:88 account_id:1

Post a LinkedIn image

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_media_upload image_path:/Users/me/banner.png platform:linkedin
   → { asset_urn: "urn:li:digitalmediaAsset:ABC123" }
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"linkedin","body":"Excited to share this!","content_type":"single_image","metadata":{"asset_urn":"urn:li:digitalmediaAsset:ABC123"}}]'
   → { post: { id: 78, ... } }
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:78 account_id:2

Post a LinkedIn video

1. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_video_upload video_path:/Users/me/demo.mp4
   → { platform: "linkedin", asset_urn: "urn:li:video:ABC123" }
2. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_create post_contents:'[{"platform":"linkedin","body":"Watch this demo!","content_type":"video","metadata":{"asset_urn":"urn:li:video:ABC123"}}]'
   → { post: { id: 79, ... } }
3. mcporter call 'npx @xreplyai/mcp@0.3.11' xreply_posts_publish id:79 account_id:2

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.

No account specified: If publish returns NO_ACCOUNT_SPECIFIED, you must pass account_id or account_ids. Call xreply_list_social_accounts to discover available account IDs (works even for newly connected accounts with no posts yet), then retry with the correct ID.

LinkedIn account not connected: If publishing to LinkedIn returns a 422, the user has not connected their LinkedIn account. Direct them to XreplyAI Settings to connect it.

Media upload — file not found: If xreply_media_upload cannot read the file, check that the path is correct and accessible. Use an absolute path to avoid ambiguity.

Media upload — file too large: Maximum image size is 5 MB. Compress or resize the image before retrying.

Media upload — unsupported format: Only JPEG, PNG, GIF, and WebP are supported. Convert the image to a supported format.

Media upload — no X account connected: If the Twitter upload returns NO_TWITTER_ACCOUNT, the user must connect their X account in XreplyAI Settings first.

Claude.ai users: xreply_media_upload and xreply_video_upload require filesystem access and are not available in Claude.ai (which has no disk access). Use the Posts dashboard at app.xreplyai.com/dashboard/posts to attach images or videos via the compose or edit form.

Video upload — unsupported format: Only MP4 is supported for video. Convert the video to MP4 before retrying.

Video upload — file too large: Maximum video size is 100 MB. Compress the video before retrying.

Video upload — no LinkedIn account connected: If xreply_video_upload returns NO_LINKEDIN_ACCOUNT, the user must connect their LinkedIn account in XreplyAI Settings first.

Video upload — X not supported: X video upload requires OAuth 1.0a which is not currently supported. For X videos, use the Posts dashboard at app.xreplyai.com/dashboard/posts.