Hear every voice in your language
실시간 AI 더빙과 양언어 자막을 제공, 무료·오픈소스·프라이버시 보장
n8n 워크플로우에서 템플릿을 불러와 TikTok, Instagram, YouTube, LinkedIn에 한 번에 게시합니다
Publish to TikTok, Instagram, YouTube and LinkedIn from an n8n workflow, with a working template you can import.
플러그인TypeScript · JavaScriptGitHub @Perufitlife온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기n8n community node for PostWire — publish one idea natively to TikTok, Instagram, YouTube, LinkedIn, Facebook Pages, Bluesky, Mastodon, Telegram and Discord
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Publish one idea to every social network from n8n — with a different post written for each network, not the same text pasted everywhere.
This is the official n8n node for PostWire, maintained by the PostWire team. PostWire already holds the platform approvals TikTok, Instagram (Meta) and YouTube require for publishing apps, so connecting an account is one OAuth click — there is no developer app or App Review on your side.
n8n Cloud and self-hosted — Settings → Community nodes → Install → n8n-nodes-postwire.README 전문 보기 ↗Publish one idea to every social network from n8n — with a different post written for each network, not the same text pasted everywhere.
This is the official n8n node for PostWire, maintained by the PostWire team. PostWire already holds the platform approvals TikTok, Instagram (Meta) and YouTube require for publishing apps, so connecting an account is one OAuth click — there is no developer app or App Review on your side.
Networks: TikTok · Instagram · YouTube · LinkedIn · Facebook · X (paid plans, X credits) · Bluesky · Mastodon · Telegram · Discord · Slack · Nostr — and articles on WordPress · Dev.to · Hashnode.
Two nodes:
n8n Cloud and self-hosted — Settings → Community nodes → Install → n8n-nodes-postwire.
Self-hosted, from the command line:
cd ~/.n8n/nodes && npm install n8n-nodes-postwire
GET /api/me, so a wrong key fails now rather than at publish time.Free plan: one brand, 20 posts a month, 2 networks per post, no card. Paid plans send each post to every network you connect.
| Resource | Operation | What it does |
|---|---|---|
| Post | Publish | Publishes now to one or more networks. Content can be Smart Distribute (one idea in, a native post per network), Same Text on Every Network, or Drafts From a Previous Step (for approval flows). |
| Write Drafts | Preview only: writes a native draft per network — right length, hook, hashtags, YouTube title and tags — and publishes nothing. Also returns a readable preview for Slack/Telegram/email approval. | |
| Schedule | Queues a post for later: at a time, or in the next free queue slot of the brand (When). Connections and media are checked now, so a missing video shows up while you watch, not at 7am tomorrow. | |
| Plan Week | One topic in, up to seven days of different posts out (a lesson, a mistake, a number, a question, behind the scenes), already scheduled one per day, in the workflow's time zone. Text networks only. Options → Days (1–7, default 5), Hour (0–23, default 10), Timezone and Brand. | |
| Get Status | Whether a TikTok or YouTube upload has finished processing, or, with PostWire's own ID, where a scheduled post or one waiting for approval stands. | |
| Scheduled Post | Get · Get Many · Update · Cancel | Read one post or the queue, move a post to another time, or cancel it. |
| Brand | Get · Get Many · Create · Rename · Delete | A brand is one business with all its networks — what PostWire plans count. |
| Connection | Get Many · Check Health · Create Connect Link | See connected accounts, ask a network whether a connection can still publish, or create a one-hour link a client can use to connect their account to your PostWire (agencies); Options → Network locks the link to one network. |
| Approval | Get · Get Many | Posts waiting for a person and the ones decided, with each network's preview, why it waits and who decided. Deciding is for people only (the emailed link or the dashboard), never an API key. |
The node is also available as an AI agent tool (usableAsTool): attach it to an AI Agent node and the agent can write drafts or publish.
Options → Thread lists the posts after the main one on X, Bluesky and Mastodon (each a reply to the one before; Bluesky and Mastodon take up to 9, X up to 25), or Split Long Text Into a Thread lets PostWire cut a long text at the network's limit. First Comment is posted by you right under the post on LinkedIn, X, Bluesky and Mastodon (under the last post of a thread): the place for a link, so the post keeps its reach. Facebook and Instagram cannot take one.
With Same Text on Every Network, Options → X Thread (overrides Thread for X) adds posts 2, 3… of a thread (each a reply to the one before) and X Reply adds one post under the last, the usual place for a link. With Smart Distribute, ask for a thread in the idea ("write a thread about…") and the X draft comes back with its thread. Every X post is at most 280 characters as X counts them (a link counts 23, an emoji 2): the node checks each one before anything is sent. X is part of the paid plans and each post uses X credits (1, or 10 with a link).
A Publish that reached none of its networks fails the step. With On Error: Continue, it returns one item — error, description (the fix), ok: false and results (each network's own result and hint) — so an error branch that sends an email sends one, not one per network plus one.
If a brand's approval rules hold a post for a person (or the API key has "every post needs approval", or the key belongs to a Contributor), Publish and Schedule do not fail: each network comes back with status: "pending_approval", the approval_id, the post's id and a review_url. Nothing is published until someone approves it. Follow it with Post → Get Status (Network: PostWire ID), Approval → Get, or a PostWire Trigger on Approval Decided.
| Event | When |
|---|---|
| Post Published | A network accepted the post (one event per network), with its ID and link |
| Post Failed | A network refused it or it could not be sent, with the reason and a code |
| Connection Needs Sign-In | A network's sign-in expired or was revoked, with the reconnect link |
| Approval Requested | A post is held for a person, with each network's text as the approver sees it, the reasons and the dashboard link |
| Approval Decided | Someone approved or rejected it: the networks approved, rejected and edited, the reason, and when it goes out |
When the workflow is activated, the node adds a webhook endpoint to your PostWire account (POST /api/webhooks) for the events you picked and keeps its signing secret; when it is deactivated, it removes it. Every delivery is checked against the PostWire-Signature header (HMAC-SHA256 over <timestamp>.<raw body>, at most 5 minutes old) and refused with 401 if it does not match. Options → Networks and Brand ID narrow which events start the workflow. The output is the event (id, type, created_at, data) plus delivery_id, which stays the same on PostWire's retries: dedupe on it.
PostWire calls n8n from the internet, so the instance needs a public https address (WEBHOOK_URL). A local http://localhost:5678 cannot receive events; the node says so when you activate it. An account has up to 5 endpoints. Send a test from PostWire (API & MCP → Webhooks → Send test): webhook.test always gets through. Events and payloads: postwire.io/docs/webhooks.
TikTok and YouTube only publish video; Instagram needs a photo or a video. The networks download the file from a link, with no login — so the most common failure is a link that opens a page instead of the file.
https:// link (up to 1 GB): the file itself, a Google Drive, Dropbox or SharePoint share link (shared with "anyone with the link" — PostWire fetches the file behind it), or a web page that names its video or image. Before anything is sent, the node checks what it can: reachable without a login, under 1 GB, and a video when a video network is selected. Links to someone else's post (TikTok, YouTube, Instagram, Vimeo) and personal OneDrive pages are named with the fix.Publish returns one item per network, so a Filter or IF node can act on failures alone:
{ "ok": true, "platform": "bluesky", "id": "at://…", "url": "https://bsky.app/profile/…/post/…" }
{ "ok": false, "platform": "youtube", "error": "…", "hint": "YouTube could not download the media. It must be a public https link…" }
If no network was published, the step fails (so a scheduled workflow cannot go silent for weeks), with the reason and the fix.
Write Drafts returns:
{
"drafts": { "linkedin": { "text": "…" }, "youtube": { "text": "…", "title": "…", "tags": ["…"] } },
"platforms": ["linkedin", "youtube"],
"preview": "*LinkedIn*\n…\n\n*YouTube*\n…"
}
Map {{ $json.drafts }} into a later Publish with Content → Drafts From a Previous Step.
Every refusal from the API carries a code, and the node turns it into a message plus the fix:
| Code | What you see |
|---|---|
not_connected | Which network, and where to connect it (or send a client a Connect Link) |
media_required | Which network needs a video/photo, and how to add one |
media_unreachable | Why PostWire could not download the file (403, 404, a Drive page…) — nothing was published |
too_long | The limit and how far over it the text is |
limit_reached, brand_limit_reached | The plan limit and the upgrade link |
duplicate_post | That the post was already sent moments ago and was not sent twice |
x_credits_required, x_paid_plan_required, x_daily_limit, bad_x_thread | What X needs (credits, a paid plan, tomorrow, a shorter post) — nothing was published |
role_forbidden, brand_restricted, workspace_forbidden | The team role or brands of the member who created the key, and who can change them |
key_monthly_cap_reached, key_network_not_allowed | A limit the owner set on this API key |
no_free_slot | No free queue slot in 28 days: add slots or pick a time |
| 401 | Fix the API key in the credential |
| 429 | Daily AI-draft cap per plan, or a burst limit — wait or add a Wait node |
RSS → a native post per network
RSS Feed Trigger → PostWire: Post → Publish (Content: Smart Distribute, Idea: {{ $json.title }} — {{ $json.contentSnippet }} {{ $json.link }}, Networks: LinkedIn, Bluesky, Mastodon, Options → Idempotency Key: {{ $json.guid }}).
Google Drive video → TikTok, Reels and Shorts
Google Drive Trigger → Google Drive: Download → PostWire: Post → Publish (Media: Binary File, Networks: TikTok, Instagram, YouTube, Idea: {{ $json.name }}).
Approve in Slack before anything goes out
PostWire: Write Drafts → Slack: Send and Wait for Approval (message: {{ $json.preview }}) → IF approved → PostWire: Publish (Content: Drafts From a Previous Step, Drafts: {{ $('Write drafts').item.json.drafts }}).
Alert in Slack when a post fails or a login expires
PostWire Trigger (Events: Post Failed, Connection Needs Sign-In) → Slack: Send Message ({{ $json.data.platform }}: {{ $json.data.error || $json.data.reason }}).
Tell the client's channel when their post is approved
PostWire Trigger (Events: Approval Decided, Options → Brand ID) → IF {{ $json.data.decision }} is approved → Microsoft Teams / Slack / Gmail.
Ready-to-import templates: n8n.io/creators/postwire.
Priced per brand — one business with all of its networks — not per channel. Adding a fifth network to a brand never changes the bill. X is an add-on of the paid plans, billed in X credits.
| Brands | Posts/month | ||
|---|---|---|---|
| Free | 1 | 20 | no card |
| Starter | 3 | 300 | $9/mo |
| Pro | 10 | 2,000 | $29/mo |
| Agency | 50 | 15,000 | $99/mo |
| Scale | 200 | no monthly cap | $299/mo |
Current prices: postwire.io/pricing.
Tested with n8n 2.40. Workflows built with version 1 of the node (package 0.1.x–0.2.x) keep working unchanged; new nodes use version 2. Everything added in 0.4.0 is additive: a workflow saved with 0.3.x opens and runs as before (a Schedule without When uses Publish At).
MIT
| Account | Get | Plan, posts used this month, connected networks, and the team workspace and role the key acts with. |
| Media | Upload | Hosts a binary from a previous node (up to 1 GB; over 50 MB it is uploaded in parts) and returns a public URL the networks can download. |