postpulse

n8n community node for PostPulse social media management

Package Information

Released: 8/28/2025
Downloads: 189 weekly / 329 monthly
Latest Version: 0.1.8
Author: alex97po

Documentation

PostPulse n8n Node

Official n8n integration for PostPulse — schedule and publish content to multiple social networks from your n8n workflows.

  • Auth: OAuth2 (auto refresh)
  • Core actions: Accounts → Media Upload → Schedule Post(s) (+ Telegram Chats lookup)
  • Targets today: Instagram, TikTok, YouTube, Threads, LinkedIn, Telegram, X, Bluesky
  • Use cases: One-click multi-destination posting, media pipeline, automated campaigns

Table of contents


Prerequisites

  1. Sign up at https://post-pulse.com/login
  2. Connect your social accounts in the web app: https://post-pulse.com/app/accounts
  3. Request API credentials: email support@post-pulse.com to obtain client_id and client_secret and share with us redirect URL generated by n8n
  4. (Telegram only) Add the official PostPulse bot to your channels you plan to post to.

Use the same email in n8n OAuth as your PostPulse account email.


Install

  • From npm (recommended):
    npm install @postpulse/n8n-nodes-postpulse
    
  • Restart n8n and enable the node in Settings → Community Nodes if required.

Authenticate

Create Credentials → PostPulse OAuth2 API in n8n:

  • OAuth Redirect URL: share this value in email to support@post-pulse.com
  • Client ID / Secret: obtained from support

This node extends n8n’s oAuth2Api so tokens are refreshed automatically.


Quick start

  1. Accounts → Get Many
    Retrieve your connected accounts. Save the id of targets you’ll post to.
  2. Telegram → Get Connected Chats (only if posting to Telegram)
    Input: id from step 1 (platform must be TELEGRAM). Output contains id per channel/chat.
  3. Media → Upload (for any media)
    Upload files (even if you have public URLs). Some platforms (e.g., TikTok/Instagram) require media hosted on post-pulse.com. Save the returned path.
  4. Posts → Schedule
    Build one PostSchedule with one or more Publications.
    • Set scheduledTime (past/now = queue immediately)
    • For now, prefer isDraft: false (update APIs will come later).

Operations

Accounts: Get Many

  • Output: Array of accounts: { id, platform, handle, ... }
  • Use: Pick id for each destination.

Telegram: Get Connected Chats

  • Input: { id } (must be a Telegram account)
  • Output: Array: { id, title } — pass chatId into Telegram posts.

Media: Upload

  • Input: File
  • Output: { path } — use in attachmentPaths of posts.

Posts: Schedule

  • Input: PostSchedule (see Data model)
  • Behavior: Schedules one or multiple publications for the same time.
  • Recommended: isDraft: false (until update endpoints are exposed in node).

Data model

PostSchedule

{
  "scheduledTime": "2025-08-17T14:03:00",
  "isDraft": false,
  "publications": [ /* Publication[] */ ]
}

Publication

Represents “one publication in user’s mind” that may map to one or many platform posts.

{
  "socialMediaAccountId": 442,
  "posts": [ /* Post[] */ ],
  "platformSettings": { /* see below */ }
}
  • One publication → multiple posts is useful when:
    • Telegram account posts to several channels (one post per channel)
    • Telegram account posts with large text or more than 10 media (one post per message that will be published)
    • Instagram storyline (multiple stories in one conceptual set)

Post

{
  "attachmentPaths": [
    "6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
  ],
  "content": "Your caption or description",
  "chatId": "1234567890"   // Telegram only
  /* "thumbnailPath": "..." — coming soon */
}

Note: For YouTube/TikTok, content is used as description (titles are set in platformSettings).


Platform settings

Each Publication must include platformSettings with a required discriminator: type.

{ "type": "INSTAGRAM", "publicationType": "REELS" }

Supported shapes:

Instagram

{
  "type": "INSTAGRAM",
  "publicationType": "FEED" | "REELS" | "STORY"
}

LinkedIn

{
  "type": "LINKEDIN",
  "visibility": "PUBLIC" | "CONNECTIONS" | "GROUP"
}

Threads

{
  "type": "THREADS",
  "topicTag": "your-topic-tag"
}

TikTok

{
  "type": "TIK_TOK",
  "title": "My video title",
  "privacyLevel": "PUBLIC_TO_EVERYONE" | "FOLLOWER_OF_CREATOR" | "MUTUAL_FOLLOW_FRIENDS" | "SELF_ONLY",
  "disableDuet": false,
  "disableComments": false,
  "disableStitch": false,
  "brandContent": false,
  "brandOrganic": true,
  "hasUsageConfirmation": true
}

YouTube

{
  "type": "YOUTUBE",
  "title": "My video title",
  "privacyStatus": "PUBLIC" | "UNLISTED" | "PRIVATE",
  "category": "FILM_ANIMATION" | "AUTOS_VEHICLES" | "MUSIC" | "PETS_ANIMALS" | "SPORTS" | "TRAVEL_EVENTS" | "GAMING" | "PEOPLE_BLOGS" | "COMEDY" | "ENTERTAINMENT" | "NEWS_POLITICS" | "HOWTO_STYLE" | "EDUCATION" | "SCIENCE_TECHNOLOGY"
}

Media & text validations

PostPulse Web enforces rich, platform-specific validations.
API clients must currently validate themselves. (Server-side validations for API clients are planned.)

Validation area PostPulse Web PostPulse API (current)
X: Standard users can post up to 280 characters per tweet UI warning You must validate
X: Supported image formats are JPG, PNG, and WEBP Enforced You must validate
X: Image size should be less than or equal 5MB Enforced You must validate
X: Video size should be less than or equal 512MB Enforced You must validate
X: Maximum 4 media attachments Enforced You must validate
X: Video duration must be between 0.5 sec and 140 sec Enforced You must validate
X: Media aspect ratio between 1:3 and 3:1 Enforced You must validate
Threads: Users can post up to 500 characters Enforced You must validate
Threads: Topic tag should be less than 100 characters Enforced You must validate
Threads: When no topic tag is specified in the platform settings and the content contains a word with # - the first word with # will be used as a topic tag (expept cases with numbers, like #1) UI warning You must validate
Threads: Image size should be less than or equal 8MB Enforced You must validate
Threads: Media aspect ratio between 0,01:1 and 10:1 Enforced You must validate
Threads: Video duration must be less than 5 min Enforced You must validate
Threads: Supported video format is MP4 Enforced You must validate
YouTube: Title should be less than 100 characters Enforced You must validate
YouTube: Description should be less than 5000 characters Enforced You must validate
TikTok: Title should be less than 2200 characters for video post Enforced You must validate
TikTok: Title should be less than 90 characters for image post Enforced You must validate
TikTok: Description should be less than 4000 characters for image post Enforced You must validate
TikTok: Image size should be less than or equal 20MB Enforced You must validate
TikTok: Supported image formats are JPG, PNG, and WEBP Enforced You must validate
TikTok: Supported video formats are MP4, MOV, and WebM Enforced You must validate
TikTok: Video duration as per individual limits (typically 1 hour) Enforced You must validate
TikTok: One post is either 1 video or up to 10 images Enforced You must validate
TikTok: Video should have no more between 360 and 4096 pixels for both height and width To Do You must validate
LinkedIn: User can post up to 3000 characters Enforced You must validate
LinkedIn: One post can contain either 1 video or up to 9 images (or no media at all) Enforced You must validate
LinkedIn: Supported video format is MP4 Enforced You must validate
LinkedIn: Video size should be less than or equal 500MB Enforced You must validate
LinkedIn: Video duration must be between 3 sec and 30 min Enforced You must validate
Instagram: User can post up to 2200 characters Enforced You must validate
Instagram: Supported image formats are JPG and PNG Enforced You must validate
Instagram: Image size should be less than or equal 8MB Enforced You must validate
Instagram: Feed post can contain up to 10 media (carousel) Enforced You must validate
Instagram: Feed post media aspect ratio between 1.91:1 and 4:5 Enforced You must validate
Instagram: Supported video formats are MP4 and MOV Enforced You must validate
Instagram: Video size should be less than or equal 300MB Enforced You must validate
Instagram: Feed and Story post video duration must be between 3 sec and 15 min Enforced You must validate
Instagram: Reels video duration must be between 3 sec and 90 sec Enforced You must validate
Instagram: Reels and Story post media aspect ratio between 0.01:1 and 10:1 Enforced You must validate
Instagram: Reels and Story recommended aspect ratio is 9:16 UI Warning You must validate
Instagram: Video should have no more than 1920 horizontal pixels To Do You must validate
Bluesky: Users can post up to 300 characters Enforced You must validate
Bluesky: Post may contain up to 4 images Enforced You must validate
Telegram: Users can post up to 4096 characters Enforced You must validate
Telegram: Standard user can post up to 1024 characters if post contains media as well Enforced You must validate
Telegram: One post may contain up to 10 media Enforced You must validate
Telegram: Supported image formats are JPG, PNG, and WEBP Enforced You must validate
Telegram: Supported video formats is MP4 Enforced You must validate

Follow updates at https://post-pulse.com/releases — we’ll announce when API-side validations roll out.


Rate limits & API keys

  • Authentication uses OAuth2; tokens are auto-refreshed by n8n.
  • PostPulse runs on AWS API Gateway usage plans. Typical plans:
    • Standard: 20 RPS burst, 200 RPS steady, 50k req/month
    • Agency: higher limits on request

Examples

Minimal single-destination post (Reel)

{
  "scheduledTime": "2025-08-17T14:03:00",
  "isDraft": false,
  "publications": [
    {
      "socialMediaAccountId": 442,
      "platformSettings": {
        "type": "INSTAGRAM",
        "publicationType": "REELS"
      },
      "posts": [
        {
          "attachmentPaths": [
            "6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
          ],
          "content": "New drop is live! #fashion"
        }
      ]
    }
  ]
}

Telegram to multiple channels in one publication

{
  "scheduledTime": "2025-08-17T14:03:00",
  "isDraft": false,
  "publications": [
    {
      "socialMediaAccountId": 501,   // Telegram account id
      "platformSettings": { "type": "TELEGRAM" },
      "posts": [
        { "chatId": "-100123", "content": "Hello Channel A", "attachmentPaths": ["u1/p1.jpg"] },
        { "chatId": "-100456", "content": "Hello Channel B", "attachmentPaths": ["u1/p1.jpg"] }
      ]
    }
  ]
}

TikTok with title & privacy

{
  "scheduledTime": "2025-08-17T14:03:00",
  "isDraft": false,
  "publications": [
    {
      "socialMediaAccountId": 777,
      "platformSettings": {
        "type": "TIK_TOK",
        "title": "Top 5 tips",
        "privacyLevel": "PUBLIC_TO_EVERYONE",
        "hasUsageConfirmation": true
      },
      "posts": [
        { "attachmentPaths": ["u1/v1.mp4"], "content": "Full guide in bio" }
      ]
    }
  ]
}

FAQ

Do I have to upload media to PostPulse even if I have a public URL?
Yes. Platforms like TikTok/Instagram can validate source URLs; we require hosting under post-pulse.com.

Can I draft then update later via the node?
In v1 of the node, we recommend isDraft: false. Update endpoints will be exposed in a later version.

How do I post to multiple accounts at once?
Create one PostSchedule with multiple Publication objects (one per account).

How do I set YouTube or TikTok titles?
Titles live in platformSettings (see schemas above). content becomes description.


Support


Versioning & License

  • Semantic Versioning: MAJOR.MINOR.PATCH
  • License: MIT

Security notes

  • Store secrets in n8n Credentials only; don’t hardcode in workflows.

Discussion