PostStash Skill
Schedule posts and threads to Threads and X directly from your OpenClaw agent.
Setup
- Get an API key from the PostStash dashboard
- Set the environment variable:
POSTSTASH_API_KEY=ps_live_... - 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 nowstatus(string, optional) —"Ready"(publishes at scheduled_at) or"Draft"(saves without scheduling); defaults to"Ready"
Output:
post_id— UUID of the scheduled postcontent— Post textschedule— 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 nowstatus(string, optional) —"Ready"or"Draft"; defaults to"Ready"
Output:
thread_id— UUID grouping all thread postsposts— Array of scheduled post objects withid,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 withmetrics(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) —trueorfalselimit(number, optional) — Results per page (default: 20, max: 100)offset(number, optional) — Pagination offset (default: 0)
Output:
posts— Array of post objectstotal— Total number of matching postslimit/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",
});