PostWire

io.github.Perufitlife由 GitHub 帳號 Perufitlife 發布v0.4.0更新於 Oct 31, 2026

Writes a native post per network from one idea and publishes it: TikTok, Instagram, YouTube & more

發布方自己的服務:Wire Cash: bank wire fees and transfer costs

已驗證Streamable HTTP可網頁執行效率與工作流溝通與協作媒體與設計

概覽

AI 產生的概覽

PostWire 讓助理從一個想法出發,為多個社群平台與部落格撰寫、排程並發布原生內容,全部透過 PostWire 帳號完成。

可以做什麼
  • 撰寫與發布:依各平台規則產生草稿,立即發布,或排程、批次排程、設定循環發布
  • 管理佇列:列出已排程貼文、取消或撤回,並查詢發布狀態及 PostWire 的獨立回讀驗證
  • 管理帳號與品牌:列出平台及其欄位、查看方案與用量、列出或建立品牌、產生連結社群帳號的連結
  • 處理媒體:建立上傳連結、查詢上傳檔案、把貼文文字做成直式短影片、檢查影片品質
  • 分析與重用:查看近 90 天貼文成效,並參照熱門貼文撰寫新草稿
適用情境
適合讓助理把一個想法或一批資料列轉成符合 TikTok、Instagram、YouTube、LinkedIn、Bluesky、Mastodon、Telegram、Discord、Slack、Nostr、X 及部落格平台格式的貼文,並發布或排入佇列。也適合規劃一週內容、維持循環發布節奏,或檢視哪些舊貼文成效最好。
執行需求
可使用託管遠端端點,以 OAuth 2.1 登入或 Authorization 權杖驗證;也可用 npx 執行本機 npm 套件,需要 Node.js 與 POSTWIRE_API_KEY 環境變數。需要 PostWire 帳號並在 postwire.io 連結社群帳號,可申請免費金鑰。需能連線 postwire.io。
安裝前請注意
發布是公開且立即生效的,已發布的貼文無法從 PostWire 撤回。排程、批次排程與循環發布會寫入帳號佇列,取消只在開始發布前有效。X 發布是按次計費的加購項目,需消耗額度;付費方案透過 Stripe 結帳連結購買。API 金鑰屬於機密;連結社群帳號須在瀏覽器頁面完成,不在對話中。聊天中附加的檔案不會送到 PostWire。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 PostWire,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.Perufitlife%2Fpostwire-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "postwire": {
      "type": "http",
      "url": "https://postwire.io/api/mcp"
    }
  }
}

README

postwire-mcp

Your agent writes the post, picks the right shape for each network, and publishes it.

An MCP server for PostWire. Give Claude, Cursor, or any agent one idea and it publishes a native post to TikTok, Instagram, Facebook Pages, YouTube, LinkedIn, Bluesky, Mastodon, Telegram, Discord, Slack, Nostr and X, plus long-form articles on WordPress, Dev.to and Hashnode — not the same text pasted fourteen times.

you:    "post the demo video — we shipped scheduling today"agent:  → YouTube  title + description + tags, 16:9        → TikTok   hook in the first line, 4 tags        → LinkedIn no link in the body, link in the first comment        → Bluesky  under 300 characters, link as a card        published. 4/4.

Hosted (no install)

PostWire also runs as a remote MCP server at https://postwire.io/api/mcp (Streamable HTTP, OAuth 2.1 sign-in or Authorization: Bearer pw_live_…), with 22 tools: everything below plus plan_week, bulk_schedule, schedule_post, create_recurring_post, list_brands, create_brand, create_connect_link, create_upload_link, make_video_from_text, get_post_performance, replicate_top_post, check_video_quality and more. The hosted server is the fastest way to get all of them.

  • Claude: listed in Claude's connector directory — add PostWire to Claude, or paste the URL as a custom connector.
  • Claude Code: claude mcp add --transport http postwire https://postwire.io/api/mcp
  • Official MCP Registry: io.github.Perufitlife/postwire-mcp.

Quick start (local, npm)

  1. Get a free API key at postwire.io/dashboard.html and connect an account. One OAuth click — PostWire already holds the platform approvals, so there is no app review to wait for.
  2. Add it to your MCP client:
json
{  "mcpServers": {    "postwire": {      "command": "npx",      "args": ["-y", "postwire-mcp"],      "env": { "POSTWIRE_API_KEY": "pw_live_your_key" }    }  }}

Client-specific setup: Claude Desktop · Claude Code · Cursor · VS Code · Windsurf

No key yet? list_platforms still answers, so you can see what is supported before signing up.

Tools

From 0.4.0 the local package is a thin bridge to the hosted server, so it exposes the same 22 tools (it falls back to the five core tools below if postwire.io can't be reached). The core ones:

ToolWhat it does
generate_postsSmart Distribute. One prompt → a draft written for each platform: character limits, hashtag conventions, YouTube SEO title+tags, hook-first captions for TikTok, link-in-comment for LinkedIn. Returns drafts for you to review.
post_to_socialPublishes. Takes one text for all, or per_platform drafts from generate_posts.
get_post_statusPublish state for platforms that report one back (TikTok and YouTube process asynchronously).
list_platformsEvery supported network and the fields it needs. Works without a key.
my_accountPlan, posts used this month, which accounts are connected.

Failures are refused up front rather than half-published: a video network with no video, text over a platform's limit, or an account that was never connected all come back as a clear error before anything goes out. A four-network post never leaves you with two live and two silently missing.

Platforms

One OAuth click — TikTok · Instagram · Facebook Pages · YouTube · LinkedIn (personal profiles) Token or webhook — Bluesky · Mastodon · Telegram · Discord · Slack · Nostr Articles — WordPress · Dev.to · Hashnode X — pay-per-use credits on the paid plans (X charges for every post): threads and a reply under the post for the link. Details

You connect your accounts to PostWire's already-approved apps (TikTok Direct Post audit, Meta App Review, Google verification of youtube.upload), so you never need your own developer app.

Pricing

Per brand, never per network. Connect a business once and every one of its accounts is included.

BrandsPosts/month
Free130no card
Starter3300$9/mo
Pro102,000$29/mo
Agency5015,000$99/mo
Scale200unlimited$299/mo

A post counts once per network. Ten client businesses on five networks each is $29 here; Buffer bills per channel. Paid plans have a 14-day refund. Current prices: postwire.io/pricing.

REST too

Everything the MCP server does is a plain HTTP call, if you would rather not run an MCP client:

bash
curl -X POST https://postwire.io/api/post \  -H "Authorization: Bearer $POSTWIRE_API_KEY" \  -H "Content-Type: application/json" \  -d '{"platforms":["bluesky","mastodon"],"text":"shipped."}'

Docs: postwire.io

MIT © PostWire

來源:README.md,提交 32ffb9c

工具

22

list_platforms

List supported platforms

Lists the social platforms and destinations PostWire can publish to and, for each, whether it connects with OAuth or with credentials (fields, plus optional_fields), and kind "article" for the blogs (WordPress, Dev.to, Hashnode), where a post is an article with a title. Does not need a PostWire account.

無需輸入參數。

my_account

Show my PostWire account

Shows the signed-in PostWire account: plan, usage against each plan limit (posts this month, brands, AI drafts today, networks per post, scheduled posts waiting), brands, and which social accounts are connected, each with its brand and the handle, display name and picture the network reports for it. When a limit is at least 80 % used, the result includes the plan that raises it, its monthly price and a checkout link. On the free plan it also includes insights_teaser: how many What works patterns are ready and how strong they are. When no social account is connected, it includes a one-hour link to a page where several networks can be connected, and message_for_user: one plain sentence for the person. While the account has not published anything yet, next_step.say_this is one exact sentence the person can say to get the first post out (for example: connect a network and post, or post a first video). A free account that has not had a trial gets trial_offer: Pro now with the first month 50% off ("Get Pro today: first month $14.50 (50% off), then $29/month. Cancel anytime."), its terms in one sentence and its link; a trial that is running is described in trial.

無需輸入參數。

generate_posts

Write a native draft for each platform

Writes one draft per platform from a single idea, adapted to each network's rules (character limit, hashtags, title and tags for YouTube, hook-first caption for TikTok and Reels, link placement for LinkedIn, Slack formatting, plain text for Nostr). For the blogs (wordpress, devto, hashnode) the draft is a full article: title (<= 70 characters), summary (120-160 characters), a Markdown body with H2 sections, and 3-5 tags (Dev.to: 4). Nothing is published. Returns { drafts: { <platform>: { text, title?, tags?, summary?, thread?, first_comment? } } } and, if the writer skipped a platform, { missing: [...] }. thread (the posts after text) comes back when the user asks for a thread (X, Bluesky, Mastodon), or on Bluesky and Mastodon when the idea is too long for one post there; first_comment comes with it when the idea has a link (LinkedIn, X, Bluesky, Mastodon), so the link goes in the first comment. Counts toward the account's daily AI limit.

輸入參數prompt必填media_urlplatforms必填brand_voice

post_to_social

Publish a post now

Publishes a post immediately and publicly to the listed platforms through the social accounts connected to the user's PostWire account. A published post cannot be withdrawn from PostWire. Accepts one text for all platforms or a separate per_platform draft for each. YouTube requires video_url; TikTok requires video_url or photos (photo_url or media); Instagram requires a photo or video, and two or more media items make a carousel. Every platform must already be connected; otherwise nothing is published and the error names the missing ones. The same payload sent twice within 2 minutes is refused as a duplicate unless idempotency_key differs. When a platform is connected in more than one brand and brand_id is omitted, nothing is published and the error lists the brands. Returns { posted, published_to, results: [{ platform, ok, id?, url?, account?, error? }] }, where account and published_to name the handle and brand each post went to. After the account's first post through this connection, next_step proposes a week of posts on the same topic for the text networks it went to (its topic and platforms); nothing is queued until the person asks for it. The plan sets how many networks one post goes out to (Free: 2): only the first platforms in the list are published and each of the others comes back with ok: false, held: true and code networks_per_post (its version was written and not sent), listed in held_networks with a one-sentence held_message, and message_for_user says it in plain words for the person; every network can still be connected and written for. TikTok and Instagram videos may still be processing when this returns (status processing, no url yet). When the networks-per-post or the monthly post limit stops a platform, the result also names the plan that lifts it, its price and a checkout link, and, for a free account that has not had one, a link to Pro with the first month 50% off (trial_offer: paid today, then the regular monthly price, cancel anytime). Such an

輸入參數textmediatitleprivacybrand_idphoto_urlplatforms必填video_urlper_platformupload_methodidempotency_key

schedule_post

Schedule a post

Queues a post to be published at a future time (run_at, ISO 8601 with timezone, up to 365 days ahead), or in the brand's next free queue slot (run_at "next_slot": the earliest weekly slot all its platforms share that no other waiting post of the brand uses; the result gives the time chosen) through the connected accounts. Takes the same content fields as publishing now. Every platform must already be connected and media must suit each platform, or it is refused now instead of failing later. When a platform is connected in more than one brand and brand_id is omitted, nothing is queued and the error lists the brands. Returns the queued item with its id and, for each platform, the handle and brand it will publish to. The plan sets how many posts can wait in the queue at once (Free: 3): past that the post is not refused but saved as held (code queue_limit, status held) — kept, never published on the current plan, and scheduled automatically when the plan is upgraded; the result then also gives that plan, its price and a checkout link. On a plan with a networks-per-post limit (Free: 2) only the first platforms are published when it runs; the result names the others in held_networks. A queued or held post can be canceled before it runs. X (Twitter) is a pay-per-use add-on on paid plans: each X post uses X credits (1 for a plain post, 10 for a post with a link, +1 per image or video) from the plan's monthly X credits, then from top-up credits; a post without enough credits is not sent to X and its result says how to get more. An X thread: per_platform.x.thread is the list of posts after per_platform.x.text (up to 25, each at most 280 characters as X counts them, a link counts 23); per_platform.x.reply is one more post under the last one, the usual place for a link. Each post of a thread or reply is an X post: it uses credits by the same rule and counts toward the daily X limit, and the whole chain is reserved before anything is sent. Write a thread only when the user asks

輸入參數textlabelmediatitlerun_at必填privacybrand_idtimezonephoto_urlplatforms必填video_urlper_platform另有 1 個

list_scheduled_posts

List scheduled posts

Lists the account's scheduled posts (queued, held, pending_approval = waiting for a person to approve it, publishing, processing = sent and Instagram is still processing the video, done, failed, rejected = not approved, or canceled) with their id, time, platforms and status. Optional from/to limit the time range.

輸入參數tofrom

cancel_scheduled_post

Cancel a scheduled post

Cancels a queued or held post, or withdraws one waiting for approval, so it is never published (a withdrawn post's approval links stop working). Only works before it starts publishing. Takes the id of the scheduled post.

輸入參數id必填

get_post_status

Check a post's publishing status

Returns the status and link of a published post, by platform and the post id returned when it was published, plus `verification`: PostWire's own independent read-back of the post from the network (state live / processing / accepted / not_public / gone / failed / unverifiable, with what the network answered and when), separate from the API response the publish got. PostWire re-reads every post 10 min, 1 h, 6 h, 24 h and 72 h after publishing; this call reads it again now. For a post that is waiting for approval or scheduled, pass the id PostWire returned for it (platform can then be omitted): the status is pending_approval (with who was asked and the review link), rejected (with the reason), scheduled, or each network's result once it went out. For TikTok and YouTube it asks the platform for the processing status and returns the public link once there is one. For an Instagram video returned as "processing", pass the id it returned: the answer is processing, published (with its id and link) or failed (with the reason). For networks that publish immediately it returns status "published" and, where the id allows it, the post's link (Telegram channels, including private ones as t.me/c/<channel>/<message>; Bluesky; LinkedIn; Facebook).

輸入參數id必填brand_idplatform

plan_week

Plan and schedule a week of posts

Writes one post per day for 1 to 7 days from a single topic, each day from a different angle and each platform in its own native format, and queues them to be published publicly at the given hour on each day starting tomorrow, through the connected accounts. Text only: platforms that require a video or photo (TikTok, YouTube, Instagram) are refused. Every platform must already be connected. The whole week counts as one AI draft toward the daily AI limit. Every day is written; days that do not fit in the plan's monthly post limit or in its scheduled-posts limit (Free: 3 waiting at a time) are saved as held (never published on the current plan; each says held_for) and are scheduled automatically when the plan is upgraded; the result then also gives that plan, its price and a checkout link. On a plan with a networks-per-post limit (Free: 2) each day goes out to the first platforms only, named in held_networks. Returns the queued and held items with their id, time and a preview of each platform's text; any of them can be canceled before it runs. If the brand's approval rules or a limit on this API key or connected app hold the post, nothing is published: the result has status "pending_approval", the post's id and approval_id, who was notified and a review link, and the post goes out once a person approves it from the emailed link or the PostWire dashboard — an AI assistant or an API key cannot approve it. A limit on this key or app can also refuse a post with code key_network_not_allowed, key_brand_not_allowed or key_monthly_cap_reached.

輸入參數dayshourtopic必填brand_idtimezoneplatforms必填brand_voice

bulk_schedule

Schedule many posts at once (CSV or rows)

Checks, and on request schedules, many posts at once: a CSV file's text (csv) or a list of rows (rows), each row one post with the columns date ("2026-10-12 09:00" in the row's or the upload's timezone, an ISO time with offset, or "next_slot"), networks ("linkedin, x"), text, optional text_<network> (each network its own text), media_urls (https links; video: or document: prefix), alt_text, first_comment (LinkedIn, Bluesky, Mastodon), x_reply and x_thread (X), title, brand and label. dry_run defaults to true: nothing is scheduled and the result lists, for every row, the time it would go out, its networks, each network's length as that network counts it, the X credits it would use, whether it would wait for approval or be held by the plan, and its errors and warnings. With dry_run false the upload is scheduled whole or not at all: if any row has an error nothing is scheduled (code bulk_rows_invalid) and each row says what to fix. The plan limits rows per upload (Free 20, Starter 500, Pro 1,000, Agency 2,000); on Free, posts past the 3 scheduled at a time are saved as held. The same upload twice is refused (code bulk_already_scheduled) unless allow_duplicate is true. The result has batch_id; DELETE /api/bulk/{batch_id} undoes the whole upload. Write the rows for the user when they describe a content plan; show them the dry run before scheduling.

輸入參數csvrowsdry_runbrand_idtimezonedate_formatfit_long_textallow_duplicate

create_recurring_post

Set up a recurring post

Sets up a post that repeats on a schedule: daily, weekly on some weekdays, or monthly on some days of the month (31 falls on the last day of shorter months; -1 = the last day), every N days, weeks or months, at 1-4 times a day in a timezone (daylight saving handled), from a start date until an end date or for a number of times. variants (a list of texts) are used in turn, so the same text does not repeat every time. The duplicate guard (guard_days, default 3, 0 = off) skips a network where the same text went out in the last guard_days when an occurrence is published: networks flag repeated posts. Occurrences are put in the queue up to 7 days ahead as ordinary scheduled posts (each can be edited or canceled alone), and go through the brand's approval rules and the plan's limits like any post. On every paid plan (Starter 25, Pro 100, Agency 500 at a time); not on Free. Returns the recurring post with its next occurrences and any warnings (for example: one text every day with a 3-day guard would be skipped).

輸入參數rule必填textlabelbrand_idvariantsphoto_urlplatforms必填video_urlguard_days

list_brands

List brands and their connected accounts

Lists the account's brands (one business each) with the social accounts connected to each: platform, the handle, display name, picture and profile link the network reports, when it was connected, and whether posts to it need only text, a video, or a photo or video. Also returns the plan's brand limit.

無需輸入參數。

create_brand

Create a brand

Creates a new, empty brand (a separate business with its own connected social accounts) on the PostWire account and returns its id. The plan limits the number of brands; at the limit nothing is created and the response names the plan that includes more brands, its monthly price and a checkout link.

輸入參數name必填

make_video_from_text

Make a short video from a post's words

Makes a short vertical video from the words of a post, for networks that take only video (YouTube) or video or photos (TikTok): an MP4 of 1080x1920, 8 to 12 seconds, H.264 with AAC sound. The first line appears as a large heading and up to two more sentences appear one after another over a softly moving plain background, with royalty-free background music or silence; an optional footer line (for example the brand's name) sits under the text. Emoji, links and trailing hashtags are left out and no PostWire mark is added. Draws Latin, Greek and Cyrillic text. No AI is used and nothing is published. The file stays in the account's PostWire media storage while a scheduled post needs it, is deleted the day after that post is published, and 7 days after upload if no post uses it (2 days on the Free plan; so post or schedule it soon). Returns media_url (an https URL valid for 6 hours, renewed when the post goes out, that works as video_url), duration_s, text_on_video (the lines shown) and message_for_user. Up to 10 videos an hour per account, and per day 10 on the Free plan and 60 on paid plans.

輸入參數text必填musicstylefooter

check_video_quality

Check how TikTok will treat a video before posting it

Reads the header of a video file at a public https URL (an upload's media_url works) and says what TikTok will do with it: codec and profile, width x height, fps, average bitrate (kbps), duration, HDR/10-bit, audio codec, and a verdict — keeps_quality (TikTok leaves it looking the same), recompressed (TikTok visibly re-encodes it: HEVC/AV1, HDR or 10-bit, above 1080x1920, above 30 fps, above 16 Mbps) or unknown (the header could not be read). advice lists what to change and message_for_user is one sentence with the export settings TikTok leaves almost untouched (1080x1920, H.264 High, 30 fps, 8-12 Mbps, AAC, SDR). Reads at most 768 KB of the file, nothing is published or changed. Up to 60 checks an hour per account.

輸入參數url必填

get_uploaded_file

Check an uploaded file

Returns the status of a file uploaded through a PostWire upload link, by upload_id: "waiting" until the file has arrived, then "done" with its media_url (an https URL valid for 6 hours, renewed when the post goes out, that works as video_url or photo_url), kind (photo or video), size and content type.

輸入參數upload_id必填

get_x_credits

Show my X (Twitter) credits

Shows what posting to X (Twitter) costs this account and what it has left. X is a pay-per-use add-on of the paid plans (Starter, Pro, Agency, Scale; not Free, not during a trial): 1 X credit = 1 plain X post, a post with a link uses 10, each image or video adds 1. Returns mode (paid, free, trial or internal), the plan's monthly X credits, used and left, top-up credits, X posts today against the daily limit, the price table, the last movements, and links to buy top-up credits (80 credits for $5, 340 for $20; each opens a Stripe payment page, nothing is charged unless paid there). With text, it also returns how many credits that post would use (with thread or reply: the whole chain).

輸入參數textreplyvideoimagesthread

get_post_performance

Show what works: best posts, times and patterns

Returns what the account's own numbers say works, over the last 90 days, computed from the numbers each network reports (no estimates): the published posts ranked against the median of the same social account on the same network, each with its network, brand, link, excerpt, metric (views where the network reports them, otherwise likes + reposts + replies), value, that median, n (posts in the median), a verdict (winner at 2x the median or more, under at half or less) and what the post had (format, first-line type, question, emoji, number up front, day and time, length, hashtags); best_times: the time of day and day of week whose posts did best, with the size of the effect and both sample sizes, or — below 8 measured posts or without a clear difference — two hours to post at to learn it; streak: weeks in a row with at least one post; headline_pattern: the strongest pattern, as a sentence with its numbers; next: three concrete suggestions for the next post, each with the numbers behind it; competitors: public accounts the user watches (YouTube, Bluesky, Mastodon; TikTok captions only), their posts against their own median and what their best posts share; measurable: what each network lets PostWire read, and why the rest is not measurable. Posts younger than 24 hours are not ranked; patterns need at least 10 measured posts and 3 per group. Depending on the account's plan it also returns every pattern, the per-network detail and which formats to double down on or rethink; on a plan without them, locked.patterns_preview says which further patterns are ready and how large each effect is, without the winning value. Read-only; nothing here uses AI.

輸入參數brand_idplatformtimezone

replicate_top_post

Draft new posts modelled on a top post

Writes new drafts, one per platform, that reuse the structure, opening type, length, format and tone of one of the account's published posts, on a new topic or a new angle; the reference post's sentences are not reused. Nothing is published or scheduled. Takes the id of a published post of the account (the ids that the account's post performance results list). Counts toward the account's daily AI limit. Available depending on the account's plan. Returns { drafts: { <platform>: { text, title?, tags? } }, reference }.

輸入參數topicpost_id必填platformsbrand_voice

版本歷史

3
  1. v0.4.0最新Oct 24, 2026
  2. v0.3.5Sep 26, 2026
  3. v0.3.4Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Wire 整合