{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "gitroomhq--postiz-app",
    "name": "Postiz",
    "tagline": "Self-hosted social scheduler for 30+ networks with a public API, an in-repo MCP server, and an agent CLI.",
    "shortTagline": "Self-hosted social scheduler",
    "description": "Open-source social media scheduling platform that publishes to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Bluesky and more from one calendar. The Builder ships a documented public API, an MCP server inside the monorepo, a Node SDK, and a separate postiz-agent CLI aimed at coding agents. Self-hosting is free under AGPL; the hosted service is paid.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "content-publishing",
    "alternativeTo": [
      "Buffer",
      "Hootsuite"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "TypeScript"
      ],
      "frameworks": [
        "Next.js",
        "NestJS",
        "Prisma",
        "Temporal"
      ],
      "packageManager": "pnpm",
      "database": [
        "PostgreSQL",
        "Redis"
      ],
      "hostingTarget": [
        "docker-compose",
        "any Node host"
      ]
    },
    "modelStack": {
      "providers": [
        "OpenAI (optional)"
      ],
      "models": [],
      "requiredKeys": [
        "OPENAI_API_KEY"
      ],
      "promptLocations": [],
      "tools": []
    },
    "repos": [
      {
        "url": "https://github.com/gitroomhq/postiz-app",
        "owner": "gitroomhq",
        "name": "postiz-app",
        "license": "AGPL-3.0",
        "stars": 35402,
        "lastCommit": "2026-09-02"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://docs.postiz.com/public-api",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Create and schedule posts",
        "reachable": true,
        "evidence": "docs.postiz.com/public-api: Posts endpoint creates, schedules, and publishes"
      },
      {
        "job": "Publish to Instagram",
        "reachable": true,
        "evidence": "public API platform list includes Instagram; needs your own Meta app approval"
      },
      {
        "job": "Publish to TikTok",
        "reachable": true,
        "evidence": "public API platform list includes TikTok; TIKTOK_CLIENT_ID in .env.example"
      },
      {
        "job": "Publish to YouTube",
        "reachable": true,
        "evidence": "public API platform list includes YouTube; YOUTUBE_CLIENT_ID in .env.example"
      },
      {
        "job": "Upload media before posting",
        "reachable": true,
        "evidence": "public API Upload endpoint"
      },
      {
        "job": "List and manage connected channels",
        "reachable": true,
        "evidence": "public API Integrations endpoint"
      },
      {
        "job": "Pull analytics",
        "reachable": false,
        "evidence": "README lists analytics; public API docs cover only posts, integrations, upload"
      },
      {
        "job": "Team comments and collaboration",
        "reachable": false,
        "evidence": "not in public API docs"
      },
      {
        "job": "Generate posts, images, or videos with AI",
        "reachable": null,
        "evidence": "hosted plans meter AI images and videos; not documented in public API"
      },
      {
        "job": "Buy or exchange posts in the marketplace",
        "reachable": false,
        "evidence": "README feature; not in public API docs"
      }
    ],
    "editions": [
      {
        "name": "Self-hosted",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/gitroomhq/postiz-app"
          },
          {
            "kind": "container",
            "url": "https://docs.postiz.com/quickstart",
            "command": "docker compose up -d"
          }
        ]
      },
      {
        "name": "Standard",
        "price": {
          "amount": 29,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://postiz.com/pricing"
          }
        ]
      },
      {
        "name": "Team",
        "price": {
          "amount": 39,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": []
      },
      {
        "name": "Pro",
        "price": {
          "amount": 49,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": []
      },
      {
        "name": "Ultimate",
        "price": {
          "amount": 99,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": []
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "Copy .env.example, set database, Redis, JWT, and public URLs, then add a client ID and secret for each network you want to publish to. STORAGE_PROVIDER switches local vs Cloudflare R2; API_LIMIT raises the per-hour API cap; IS_GENERAL and the POSTIZ_OAUTH_* vars swap the login provider. No code changes needed to run it as your own scheduler.",
      "envVars": [
        "DATABASE_URL",
        "REDIS_URL",
        "JWT_SECRET",
        "FRONTEND_URL",
        "NEXT_PUBLIC_BACKEND_URL",
        "BACKEND_INTERNAL_URL",
        "STORAGE_PROVIDER",
        "API_LIMIT",
        "IS_GENERAL",
        "OPENAI_API_KEY",
        "X_API_KEY",
        "LINKEDIN_CLIENT_ID",
        "FACEBOOK_APP_ID",
        "THREADS_APP_ID",
        "YOUTUBE_CLIENT_ID",
        "TIKTOK_CLIENT_ID",
        "PINTEREST_CLIENT_ID",
        "REDDIT_CLIENT_ID",
        "DISCORD_CLIENT_ID",
        "MASTODON_URL",
        "POSTIZ_GENERIC_OAUTH"
      ],
      "configFiles": [
        ".env",
        "docker-compose.yaml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 23
    },
    "useWhen": [
      "I run social for a few brands and want a Buffer I own, with my agent posting through an API",
      "I need one calendar that publishes to a dozen networks and I do not want per-channel pricing"
    ],
    "accounts": [
      "developer app on each social network (Meta, TikTok, Google, X, LinkedIn, Reddit, Pinterest, Discord)",
      "Cloudflare R2 (optional storage)",
      "OpenAI (optional AI features)"
    ],
    "active": true,
    "lastActivity": "2026-09-02",
    "gotchas": [
      "AGPL-3.0: network use of a modified copy triggers source disclosure",
      "Every network needs your own developer app; Meta and TikTok apps require platform review before you can post for other accounts",
      "Public API is rate limited to 90 create-post calls per hour by default; self-hosters raise it with API_LIMIT",
      "On the hosted service the API is on paid plans only",
      "Requires PostgreSQL, Redis, and Temporal; the stack is heavier than a single container"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README tech stack: Next.js frontend, NestJS backend, run with docker compose",
      "executionModel": "scheduler is deterministic; OPENAI_API_KEY in .env.example and 'many AI features' in README",
      "operability": "public API at docs.postiz.com/public-api; MCP server file libraries/nestjs-libraries/src/chat/start.mcp.ts (server name 'Postiz MCP'); gitroomhq/postiz-agent CLI (440 stars, pushed 2026-09-01), all from the same org",
      "effort": ".env.example names 90+ variables; README says hosted and self-hosted are the same product",
      "editions": "postiz.com/pricing: Standard $29, Team $39, Pro $49, Ultimate $99 per month; FAQ says self-hosting is free",
      "active": "pushedAt 2026-09-02; 265 open issues",
      "provenance": "long-running project with sponsors and contributors; no vibe-coded claim"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.6,
      "operability": 0.9,
      "effort": 0.9,
      "reach": 0.7,
      "editions": 0.85,
      "provenance": 0.7
    },
    "openQuestions": [
      "Enumerate the MCP server's tool list from start.mcp.ts; only the server name was confirmed",
      "Does the hosted MCP endpoint require a paid plan like the API does?",
      "postiz-agent license shows NOASSERTION on GitHub; confirm"
    ],
    "sources": [
      {
        "url": "https://github.com/gitroomhq/postiz-app",
        "foundBy": "sourcing:content-publishing:github"
      },
      {
        "url": "https://docs.postiz.com/public-api",
        "foundBy": "analysis:content-publishing"
      },
      {
        "url": "https://postiz.com/pricing",
        "foundBy": "analysis:content-publishing"
      },
      {
        "url": "https://github.com/gitroomhq/postiz-agent",
        "foundBy": "analysis:content-publishing"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Both capabilities: config-only self-host under AGPL, and an official API plus in-repo MCP and agent CLI. Reach is complete for scheduling and publishing, absent for analytics and collaboration.",
      "disputed": []
    },
    "url": "apps/gitroomhq--postiz-app.html",
    "coverage": "partial",
    "paid": true,
    "source": "research/verified/gitroomhq--postiz-app.json"
  }
}
