Open-source local publisher

Crossposter for your own accounts

Publish everywhere from localhost.

Compose once, attach media, check platform limits, and post to connected socials from a local/self-hosted server you control.

Crossposter keeps the publishing workflow close to the app itself: one composer, provider readiness cards, local history, scheduled posts, and warnings only when selected socials would reject a draft.

15 targets Local files MIT

Targets

Social surfaces already wired in.

X LinkedIn Bluesky Mastodon Instagram YouTube Dev.to Pinterest Peerlist Hacker News Nostr Dribbble

Start locally

One terminal, one private publishing console.

Terminal
npm install
cp .env.example .env
npm run dev:local
Quickstart

Run Crossposter locally.

The publishing dashboard runs at http://localhost:2004. The static website you are reading lives in web/.

01 Install

Install dependencies and create the local env file.

02 Configure

Add provider profiles from the app settings UI.

03 Publish

Select ready channels and send or schedule the draft.

Workflow

Built for repeated posting, not marketing bloat.

Compose

One work surface

Title, link, post body, and media stay visible while you choose targets.

Preflight

Warnings when needed

Text and media limits only appear when a selected social would reject the draft.

History

Results stay local

Successful links and provider failures are saved together in local publish history.

Schedule

Queue from localhost

Scheduled posts run from the same self-hosted Crossposter server.

Providers

Current publishing targets.

X / Twitterbird · text/media/video
LinkedInOAuth · profiles/pages
Blueskyapp password · text/images
Mastodonaccess token · text/media
Instagraminstagrapi · images/video
YouTubeInnerTube · video upload
Dev.toAPI key · markdown articles
Pinterestpy3-pinterest · Pins
PeerlistChrome cookies · Scroll
Hacker Newsform flow · link/text
Nostrlocal key · relays
DribbbleOAuth · shots
Setup

Credentials stay local.

Official APIs

LinkedIn and Dribbble use OAuth. Bluesky, Mastodon, Dev.to, and Nostr use app passwords, access tokens, or local keys.

Local sessions

X, Instagram, YouTube, Pinterest, Peerlist, and Hacker News use local cookies, sessions, tools, or normal submit flows.

Multiple profiles

Provider profiles are saved in poster.config.local.json, with active profile selection managed in Settings.

Limits

Known limits are checked before publishing.

Provider Title Post Media
X / TwitterPost text280 chars5 MB photo, 15 MB GIF, 512 MB or 16 GB video with Premium
LinkedInPost text3,000 charsImages and MP4 up to 500 MB
BlueskyPost text300 charsImages up to 1 MB
InstagramCaption2,200 chars8 MB image, 300 MB video
YouTube100 chars5,000 char descriptionVideo up to 256 GB or 12 hours
Dev.to128 non-space chars800 KB bodyLocal media ignored
Pinterest100 chars800 char description20 MB image, 100 MB video
Peerlist120 chars2,000 chars15 MB image/GIF
Hacker News80 charsOptional textLocal media ignored
DribbbleRequiredDescription400x300 or 800x600, up to 8 MB
Media

Compression and crop tools are built in.

IMG

Image compression

Convert images to JPG with quality, target size, and estimated output size controls.

MP4

Video conversion

Transcode supported video to MP4 when that can satisfy a selected platform.

4:3

Dribbble crop

Crop non-GIF images to Dribbble's required 400x300 or 800x600 shot sizes.

Security

Private by convention.

  • Keep poster.config.local.json private.
  • Never commit API keys, OAuth tokens, cookies, passwords, or session files.
  • Use POSTER_REQUIRE_ADMIN_PASSWORD=true before public hosting.
  • Only connect accounts, pages, boards, channels, and profiles you own or manage.
Privacy & terms

Policy lives here, not in separate Markdown files.

Effective date: June 4, 2026

Privacy

Crossposter stores credentials, titles, links, draft text, media, scheduled posts, and publish history in your local or self-hosted environment.

Third parties

Content is sent only to the social platforms selected during publishing. This website uses Vercel Web Analytics for aggregate page-view analytics and does not use tracking cookies.

Terms

Use Crossposter only with accounts you control. You are responsible for platform rules, API terms, automation rules, and content policies.

Project links

Source, support, and contact.