Schedule and publish posts to X and Threads from your AI agent

v0.1.0

Schedule posts and threads to Threads and X via PostStash

1· 295· 1 versions· 0 current· 0 all-time· Updated 7h ago· MIT-0
byJulien DA SILVA@juliendsv

Install

openclaw skills install poststash

PostStash Skill

Schedule posts and threads to Threads and X directly from your OpenClaw agent.

Setup

  1. Get an API key from the PostStash dashboard
  2. Set the environment variable:
    POSTSTASH_API_KEY=ps_live_...
    
  3. Install: clawhub install poststash

API key format: ps_live_ followed by 64 hex characters.


Tools

poststash.schedule_to_threads

Schedule a single post to Threads.

Input:

  • text (string, required) — Post content (max 500 characters)
  • scheduled_at (string, optional) — ISO 8601 timestamp; defaults to now
  • status (string, optional) — "Ready" (publishes at scheduled_at) or "Draft" (saves without scheduling); defaults to "Ready"

Output:

  • post_id — UUID of the scheduled post
  • content — Post text
  • schedule — Scheduled timestamp (ISO 8601)
  • status — Post status (Ready, Draft, Published, Failed)
  • platforms — Array of target platforms

poststash.schedule_to_x

Schedule a single post to X (Twitter).

Input: Same as schedule_to_threads.

Output: Same as schedule_to_threads.


poststash.schedule_thread

Schedule a thread (2–20 posts) to Threads or X.

Input:

  • platform (string, required) — "threads" or "x"
  • posts (array, required) — Array of { text: string } objects (2–20 items)
  • scheduled_at (string, optional) — ISO 8601 timestamp; defaults to now
  • status (string, optional) — "Ready" or "Draft"; defaults to "Ready"

Output:

  • thread_id — UUID grouping all thread posts
  • posts — Array of scheduled post objects with id, content, thread_position

poststash.get_post

Fetch a scheduled or published post along with its analytics.

Input:

  • post_id (string, required) — Post UUID from a schedule response

Output:

  • post — Full post object (id, content, platforms, schedule, status, published, sent_at)
  • analytics — Array of per-platform analytics with metrics (views, likes, replies, reposts, quotes)

poststash.list_posts

List posts for your account (scoped to the context of your API key).

Input:

  • status (string, optional) — Filter by "Draft", "Ready", "Published", or "Failed"
  • published (boolean, optional) — true or false
  • limit (number, optional) — Results per page (default: 20, max: 100)
  • offset (number, optional) — Pagination offset (default: 0)

Output:

  • posts — Array of post objects
  • total — Total number of matching posts
  • limit / offset — Pagination info

Example Agent Usage

const result = await agent.invoke({
  tools: ["poststash.schedule_to_threads"],
  input: "Schedule a post about AI to Threads tomorrow at 2pm",
});

const thread = await agent.invoke({
  tools: ["poststash.schedule_thread"],
  input: "Create a 3-part thread on building in public on X, schedule for Friday 10am",
});

Version tags

latestvk97bjmakvjbfjzx123awngdnes82sssq

Runtime requirements

📮 Clawdis
EnvPOSTSTASH_API_KEY