No description
Find a file
Paulo Castellano 27151bd925 fix(pinterest,youtube): default video cover and gate empty YouTube posts
Pinterest video pins failed with "provide cover_image_url ... or
cover_image_key_frame_time" because no cover was sent. Default to
cover_image_key_frame_time 0 (first frame) when the user provides no
cover_image_url — verified against Pinterest's OpenAPI spec (integer
seconds, minimum 0, falls back to the last frame past the duration).

YouTube Shorts derive their required title from the post content, so the
publisher rejects an empty post — but the editor still let it be scheduled.
Gate it in compliance: a youtube_short with empty content is now flagged
(requires_text) so it can't be scheduled, instead of failing at publish.
2026-06-25 19:59:51 -03:00
.claude chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
.cursor/rules chore: update AI agent guidelines and refactor prompt handling 2026-05-21 18:53:37 -03:00
.github Enrich Copilot review instructions with examples and missing conventions 2026-06-10 14:26:54 -03:00
app fix(pinterest,youtube): default video cover and gate empty YouTube posts 2026-06-25 19:59:51 -03:00
bootstrap Add Telegram connection flow (controller + webhook) 2026-06-13 21:39:03 -03:00
config refactor(linkedin): infer post format from media + unify account connection 2026-06-24 21:05:09 -03:00
database refactor(linkedin): infer post format from media + unify account connection 2026-06-24 21:05:09 -03:00
docker Make webhook host configurable via WEBHOOK_URL (sendkit-style domain group) 2026-06-14 09:31:00 -03:00
lang fix(pinterest,youtube): default video cover and gate empty YouTube posts 2026-06-25 19:59:51 -03:00
maizzle fix(security): resolve npm audit in maizzle email toolchain 2026-05-21 20:29:32 -03:00
public chore(ai-templates): remove orphaned carousel.png thumbnail 2026-06-18 11:11:14 -03:00
releases chore(release): add v1.0.4 changelog + customer email artifacts 2026-06-22 18:34:14 -03:00
resources fix(pinterest,youtube): default video cover and gate empty YouTube posts 2026-06-25 19:59:51 -03:00
routes fix(linkedin): enforce carousel cap and fail loudly on processing timeout 2026-06-25 15:34:03 -03:00
storage chore: first commit 2026-01-14 22:13:44 -03:00
stubs feat: implement MCP server with tools, Post API tests, auth middleware 2026-03-29 20:30:36 -03:00
templates refactor: reorganize settings UI, migrate post templates to a file-based registry, and remove legacy video generation features 2026-05-03 13:44:13 -03:00
tests fix(pinterest,youtube): default video cover and gate empty YouTube posts 2026-06-25 19:59:51 -03:00
.dockerignore chore: add .dockerignore 2026-05-12 23:44:55 -03:00
.editorconfig chore: first commit 2026-01-14 22:13:44 -03:00
.env.ci feat: adding tests.. 2026-01-18 22:01:55 -03:00
.env.example refactor(social): address PR review follow-ups 2026-06-25 15:01:23 -03:00
.env.testing feat: improvements on ui 2026-01-21 20:50:57 -03:00
.gitattributes chore: first commit 2026-01-14 22:13:44 -03:00
.gitignore chore(i18n): drop orphan cannot_edit_published key + gitignore compiled JSONs 2026-05-19 13:12:13 -03:00
.mcp.json chore: update boost skills and config 2026-03-31 09:36:09 -03:00
.prettierignore chore: first commit 2026-01-14 22:13:44 -03:00
.prettierrc chore: first commit 2026-01-14 22:13:44 -03:00
artisan chore: first commit 2026-01-14 22:13:44 -03:00
boost.json chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
Caddyfile feat(docker): add Caddy reverse proxy and domain-portable Reverb config 2026-05-27 14:53:46 -03:00
CLAUDE.md docs: add media-types single-source-of-truth rule to CLAUDE.md 2026-06-25 18:29:10 -03:00
components.json chore: first commit 2026-01-14 22:13:44 -03:00
compose.override.yaml.example feat(docker): replace stale Sail compose with self-contained stack 2026-05-12 23:44:55 -03:00
compose.prod.yaml refactor(docker): align echo.ts with the shared sendkit config 2026-05-27 15:17:47 -03:00
compose.yaml feat(docker): replace stale Sail compose with self-contained stack 2026-05-12 23:44:55 -03:00
composer.json chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
composer.lock chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
eslint.config.js fix: address PR review findings — publish, REST store, SSRF, race 2026-05-04 12:16:39 -03:00
GEMINI.md chore: update config files and remove unused translation files 2026-01-26 12:02:24 -03:00
LICENSE.md chore: update project license from FSL to AGPL-3.0-only 2026-05-04 15:46:56 -03:00
package-lock.json Rename project from 'post.fotohof.at' to 'trypost' 2026-06-15 21:59:00 +02:00
package.json fix: upgrade concurrently to v10, security updates 2026-06-14 23:40:40 +02:00
phpunit.xml feat: adding tests 2026-01-18 22:04:34 -03:00
pint.json chore: first commit 2026-01-14 22:13:44 -03:00
README.md Update star history section for dark and light themes 2026-05-29 16:11:24 -03:00
tsconfig.json chore: first commit 2026-01-14 22:13:44 -03:00
vite.config.ts chore: add resources/css/app.css to vite build input 2026-05-03 20:30:34 -03:00

TryPost

The open-source alternative to Buffer, Hootsuite, and Later.

Schedule, write, and publish to every social network from one place.
Self-hosted. Built for teams, agencies, and creators who own their data.

Stars License Release Discussions

CloudDocumentationRoadmapCommunity


TryPost 1.0 is here

A massive release that turns TryPost into a complete open-source social media platform.

  • MCP Server — connect Claude, Cursor, ChatGPT, and any MCP client. Schedule, publish, and pull metrics with natural language.
  • REST API — Personal Access Tokens, every workflow you can do in the dashboard, available over HTTP.
  • Workspaces & Teams — manage multiple brands or clients in isolated environments. Invite team members with role-based permissions.
  • AI Carousel Generator — type a prompt, get a multi-slide LinkedIn / Instagram carousel back, with images and copy on-brand.
  • Brand Profile — set tone, voice, language, and colors once. Every AI generation respects them automatically.
  • Analytics — per-account engagement metrics from every platform that exposes them, in a single dashboard.

Read the release notes →


Why TryPost

Tired of paying $30$200/month per user for a scheduler? Tired of your content sitting on someone else's database?

Self-hosted, your data Your posts, drafts, and metrics never leave your server
No artificial limits Unlimited posts, unlimited connected accounts, unlimited workspaces
AI built in Captions, carousels, on-brand voice — using your own keys
Multi-tenant ready Workspaces + roles for agencies managing many clients
API + MCP first-class Automate everything; your AI assistant can post for you
AGPL-licensed Inspect every line, fork it, ship it — forever free

Features

Visual Calendar See every scheduled post at a glance, switch between month/week/day
Multi-Platform Composer One draft → preview & tweak for every network in parallel
AI Generate / Review Draft from a prompt, get inline feedback before you publish
AI Carousel Builder Prompt → multi-slide carousel with images, on-brand
Brand Profile Tone, voice, language, colors — applied to every AI call
Asset Library Reusable workspace media + Unsplash & Giphy search built in
Signatures & Labels Reusable text blocks (hashtags, CTAs) and color-coded post tags
Team Collaboration Owner / Admin / Member roles, comments with @mentions on drafts
Workspaces Isolate brands, clients, or projects in their own spaces
REST API + MCP Full programmatic control; AI assistants integrate natively
Analytics Per-account engagement metrics across every supported platform
Multi-language English, Spanish, Portuguese

Supported Platforms


X (Twitter)

LinkedIn

Facebook

Instagram

TikTok

YouTube

Pinterest

Threads

Bluesky

Mastodon

Get Started

Try it on Cloud The fastest way. Sign up at trypost.it
Self-host Free forever. Installation guide →
Run with AI assistants Connect Claude / Cursor / ChatGPT via MCP →

Contributing

We love contributions, no matter how small. Pick an issue, say hi in Discussions, or just open a PR with what you'd like to see.

If TryPost is useful to you, a star helps more people find it. That's the most valuable contribution if you're short on time.

License

GNU Affero General Public License v3.0 — use, modify, fork, self-host, and redistribute, including commercially. If you run a modified version as a network service, you need to make your changes available to its users (AGPL §13).


Built openly by the community. Star us on GitHub and tell a friend.


Star History

Star History Chart