Skip to main content
Glama
manbodyslam

Postiz Media Manager

by manbodyslam

Postiz Media Manager - MCP Server

MCP (Model Context Protocol) Server สำหรับจัดการและเคลียร์ media ที่ไม่ถูกใช้งานใน Postiz

คุณสมบัติหลัก

  • ดึงรายการ Media IDs ที่ถูกป้องกัน - media ที่ถูกใช้ในโพสต์สถานะ draft, scheduled, หรือ queued

  • ค้นหา Orphan Media - media ที่ไม่ได้ถูกใช้ในโพสต์อนาคตใด ๆ

  • ลบ Media อัตโนมัติ - พร้อม dry-run mode เพื่อดูผลลัพธ์ก่อนลบจริง

  • สถิติการใช้งาน Media - แสดงจำนวน media ทั้งหมด, ที่ถูกป้องกัน, และ orphan

Related MCP server: Ghost MCP Server

โครงสร้างโปรเจกต์

mcp-postiz/
├── src/
│   ├── types.ts          # TypeScript type definitions
│   ├── config.ts         # Configuration management
│   ├── postizClient.ts   # Postiz API client (PLACEHOLDER endpoints)
│   ├── mediaService.ts   # Business logic for media management
│   └── mcpServer.ts      # MCP server implementation
├── package.json
├── tsconfig.json
├── .env.example
└── README.md

การติดตั้ง

1. Clone และติดตั้ง dependencies

npm install

2. ตั้งค่า Environment Variables

สร้างไฟล์ .env จาก .env.example:

cp .env.example .env

แก้ไขไฟล์ .env:

# Base URL ของ Postiz API
POSTIZ_BASE_URL=https://api.postiz.app

# API Token สำหรับ authentication
POSTIZ_API_TOKEN=your_actual_api_token_here

# Log level (debug, info, warn, error)
LOG_LEVEL=info

3. ปรับแต่ง API Endpoints (สำคัญ!)

⚠️ สำคัญมาก: ไฟล์ src/postizClient.ts ใช้ PLACEHOLDER endpoints

คุณต้องแก้ไข endpoints ให้ตรงกับ Postiz API จริงของคุณ:

  • GET /v1/posts → แก้เป็น endpoint จริงสำหรับดึงรายการโพสต์

  • GET /v1/media → แก้เป็น endpoint จริงสำหรับดึงรายการ media

  • DELETE /v1/media/:id → แก้เป็น endpoint จริงสำหรับลบ media

ตรวจสอบเอกสาร API ของ Postiz และแก้ไขใน src/postizClient.ts

4. ปรับแต่ง Media Field Extraction (สำคัญ!)

ใน src/mediaService.ts ฟังก์ชัน extractMediaIds() ตรวจสอบหลายฟิลด์ที่อาจมี media IDs:

// ปรับแต่งตามโครงสร้าง API จริงของคุณ
- post.mediaIds
- post.files
- post.attachments
- post.media

แก้ไขให้ตรงกับฟิลด์ที่ Postiz API ของคุณใช้จริง

5. Build โปรเจกต์

npm run build

6. เริ่มใช้งาน MCP Server

npm start

MCP Tools ที่มีให้ใช้งาน

1. postiz_list_future_protected_media_ids

ดึงรายการ media IDs ที่ห้ามลบ (ถูกใช้ในโพสต์อนาคต)

Input:

{
  "statuses": ["draft", "scheduled", "queued"]  // Optional
}

Output:

{
  "protectedMediaIds": ["media-id-1", "media-id-2", "media-id-3"],
  "count": 3
}

2. postiz_list_all_media

ดึงรายการ media ทั้งหมด

Input:

{
  "limit": 100  // Optional
}

Output:

{
  "items": [
    {
      "id": "media-id-1",
      "url": "https://example.com/media1.jpg",
      "createdAt": "2025-01-01T00:00:00Z",
      "deleted": false,
      "deletedAt": null
    }
  ],
  "total": 150,
  "returned": 100
}

3. postiz_find_orphan_media

ค้นหา media ที่ไม่ถูกใช้ในโพสต์อนาคต (orphan media)

Input:

{
  "limit": 50  // Optional
}

Output:

{
  "items": [
    {
      "id": "orphan-media-1",
      "url": "https://example.com/orphan1.jpg",
      "createdAt": "2024-12-01T00:00:00Z"
    }
  ],
  "totalCandidates": 25
}

4. postiz_cleanup_orphan_media

ลบ orphan media (พร้อม dry-run mode)

Input:

{
  "dryRun": true,   // true = ไม่ลบจริง, false = ลบจริง (default: false)
  "limit": 10       // Optional: จำกัดจำนวนที่จะลบ
}

Output:

{
  "totalCandidates": 10,
  "deletedCount": 8,
  "failedCount": 2,
  "deletedIds": ["media-1", "media-2", "media-3"],
  "failedIds": [
    {
      "id": "media-4",
      "reason": "Permission denied"
    }
  ]
}

5. postiz_get_media_stats

ดูสถิติการใช้งาน media

Input:

{}

Output:

{
  "totalMedia": 1000,
  "protectedMedia": 750,
  "orphanMedia": 250
}

การใช้งานแนะนำ

ขั้นตอนการเคลียร์ media ที่ปลอดภัย:

  1. ดูสถิติก่อน:

    Tool: postiz_get_media_stats
  2. ทดสอบด้วย dry-run:

    Tool: postiz_cleanup_orphan_media
    Input: { "dryRun": true, "limit": 10 }
  3. ตรวจสอบรายการที่จะลบ:

    Tool: postiz_find_orphan_media
    Input: { "limit": 10 }
  4. ลบจริง (เริ่มจากจำนวนน้อย):

    Tool: postiz_cleanup_orphan_media
    Input: { "dryRun": false, "limit": 10 }
  5. ตรวจสอบผลลัพธ์และทำซ้ำ

Logic การทำงาน

Orphan Media คืออะไร?

Media จะถือว่าเป็น "orphan" (ไม่ถูกใช้งาน) เมื่อ:

  1. ไม่ได้ถูกอ้างอิงในโพสต์ใด ๆ ที่มีสถานะเป็น:

    • draft (แบบร่าง)

    • scheduled (กำหนดเวลาไว้)

    • queued (อยู่ในคิว)

  2. ยังไม่ถูกลบ (deleted = false หรือ deletedAt = null)

ทำไมไม่ใช้วันที่เป็นเกณฑ์?

โปรแกรมนี้ ไม่ได้ใช้วันที่ เป็นเกณฑ์ในการลบ เพราะ:

  • Media ที่เก่าแต่ยังถูกใช้ในโพสต์ scheduled ไว้ → ไม่ลบ

  • Media ที่ใหม่แต่ไม่ถูกใช้ในโพสต์ใด ๆ → ลบได้

วิธีนี้ปลอดภัยกว่าและแม่นยำกว่าการใช้วันที่

การ Config MCP Client

เพิ่ม server นี้ใน MCP client configuration (เช่น Claude Desktop):

{
  "mcpServers": {
    "postiz-media-manager": {
      "command": "node",
      "args": ["/path/to/mcp-postiz/dist/mcpServer.js"],
      "env": {
        "POSTIZ_BASE_URL": "https://api.postiz.app",
        "POSTIZ_API_TOKEN": "your_token_here"
      }
    }
  }
}

Development

Build และ Watch Mode

# Build แบบปกติ
npm run build

# Watch mode (auto-rebuild on change)
npm run dev

# Clean build artifacts
npm run clean

ทดสอบ

  1. ตรวจสอบว่า TypeScript compile ผ่าน:

    npm run build
  2. ทดสอบรัน server:

    npm start
  3. ทดสอบเชื่อมต่อกับ MCP client

Error Handling

  • ทุก API call มี try-catch และ error logging

  • การลบ media ที่ล้มเหลวจะถูกบันทึกใน failedIds ไม่ทำให้กระบวนการทั้งหมดหยุด

  • Axios interceptor จัดการ HTTP errors โดยอัตโนมัติ

คำเตือนและข้อควรระวัง

⚠️ สำคัญมาก:

  1. ทดสอบด้วย dryRun: true เสมอก่อนลบจริง

  2. สำรองข้อมูลก่อนรัน cleanup ครั้งแรก

  3. ตรวจสอบ endpoint URLs ให้ถูกต้อง - ตัวอย่างใน code เป็น placeholder เท่านั้น

  4. ตรวจสอบฟิลด์ media ให้ตรงกับ API - แก้ extractMediaIds() ให้เหมาะสม

  5. เริ่มต้นด้วย limit น้อย ๆ เพื่อทดสอบการทำงาน

License

MIT

ผู้พัฒนา

สร้างด้วย TypeScript + MCP SDK สำหรับจัดการ media ใน Postiz อย่างมีประสิทธิภาพ

Available Tools

5 tools
postiz_cleanup_orphan_mediaA

Clean up orphaned media files. Supports dry-run mode to preview what would be deleted without actually deleting.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoIf true, only simulate deletion and return what would be deleted. Default: false
limitNoOptional: Maximum number of media items to clean up

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the tool performs deletion (destructive action) and offers a dry-run mode for safety. It doesn't cover other aspects like permissions needed, rate limits, or what constitutes 'orphaned', but the core behavior is well-described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste: the first states the purpose, and the second adds crucial behavioral context (dry-run). It's front-loaded and appropriately sized, with every sentence earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (destructive cleanup with safety features), no annotations, and no output schema, the description is mostly complete. It covers the purpose and key behavior (dry-run), but lacks details on what 'orphaned' means, deletion consequences, or output format, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('dryRun' and 'limit') thoroughly. The description mentions dry-run mode but adds no new syntax or meaning beyond what the schema provides, aligning with the baseline score when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('clean up') and resource ('orphaned media files'), distinguishing it from siblings like 'postiz_find_orphan_media' (which likely identifies but doesn't delete) and 'postiz_list_all_media' (which lists without cleanup). The mention of deletion makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by mentioning dry-run mode for previewing deletions, which implies when to use it (for safe cleanup with optional simulation). However, it doesn't explicitly state when not to use it or name alternatives like 'postiz_find_orphan_media' for just identification.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postiz_find_orphan_mediaB

Find orphaned media (media not used in any future posts). These are candidates for deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional: Maximum number of orphan media to return

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that results are 'candidates for deletion,' which implies a read-only operation, but does not confirm safety aspects like whether it requires authentication, has rate limits, or affects system state. The description lacks details on return format, pagination, or error handling, leaving significant gaps for a tool with potential deletion implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, consisting of two sentences that directly state the tool's purpose and implication. Every sentence earns its place by defining orphaned media and indicating the tool's role in deletion workflows, with no unnecessary information or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (identifying unused media) and lack of annotations and output schema, the description is minimally adequate. It explains what the tool does but does not cover behavioral aspects like safety, performance, or result details. For a tool that interacts with media data and suggests deletion candidates, more context on permissions, side effects, or output structure would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with one optional parameter 'limit' documented as 'Maximum number of orphan media to return.' The description does not add any additional meaning or context beyond what the schema provides, such as default behavior if 'limit' is omitted or how results are ordered. With high schema coverage, the baseline score of 3 is appropriate as the description does not compensate but also does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find orphaned media (media not used in any future posts).' It specifies the verb ('find') and resource ('orphaned media'), and defines what qualifies as orphaned media. However, it does not explicitly distinguish this tool from its sibling 'postiz_cleanup_orphan_media' beyond implying that this tool only identifies candidates, while the sibling likely deletes them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating these are 'candidates for deletion,' suggesting this tool should be used before deletion tools like 'postiz_cleanup_orphan_media.' However, it does not provide explicit guidance on when to use this tool versus alternatives such as 'postiz_list_all_media' or 'postiz_get_media_stats,' nor does it specify prerequisites or exclusions for its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postiz_get_media_statsB

Get statistics about media usage (total media, protected media, orphan media counts).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves statistics, implying a read-only operation, but doesn't clarify aspects like authentication requirements, rate limits, error handling, or the format of the returned statistics. This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose and enumerates the key metrics. It is front-loaded with the main action and includes no unnecessary details, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema), the description is adequate for a basic read operation. However, without annotations or an output schema, it lacks details on the statistics' format (e.g., numeric counts, JSON structure) and behavioral context like performance or limitations, which could be important for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics beyond what the schema provides. A baseline of 4 is appropriate as it doesn't introduce confusion about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get statistics') and resource ('media usage'), and it enumerates the three specific metrics returned (total media, protected media, orphan media counts). It doesn't explicitly differentiate from sibling tools like 'postiz_list_all_media' or 'postiz_find_orphan_media', which is why it doesn't earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'postiz_list_all_media' for listing media or 'postiz_find_orphan_media' for finding orphan media, nor does it specify any context or prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postiz_list_all_mediaC

List all media items from Postiz (excluding already deleted media).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional: Maximum number of media items to return

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool lists media items and excludes deleted ones, but lacks details on permissions, rate limits, pagination, or response format. For a list operation with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly communicates the tool's function and scope, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple parameter schema, the description is incomplete. It lacks behavioral details like response structure, error handling, or usage context, which are essential for an agent to effectively invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents the 'limit' parameter. The description adds no additional parameter information beyond what the schema provides, meeting the baseline score when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all media items from Postiz'), with a specific scope exclusion ('excluding already deleted media'). However, it doesn't explicitly differentiate from sibling tools like postiz_get_media_stats or postiz_list_future_protected_media_ids, which might also involve listing media items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like postiz_find_orphan_media or postiz_get_media_stats, nor does it specify contexts or prerequisites for usage, leaving the agent without clear direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postiz_list_future_protected_media_idsA

List all media IDs that are protected (used in future posts with status: draft, scheduled, or queued). These media should NOT be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusesNoOptional: Post statuses to filter. Defaults to ["draft", "scheduled", "queued"]

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only operation for listing IDs and includes a critical constraint ('These media should NOT be deleted'), which adds valuable context beyond basic functionality. However, it lacks details on potential side effects, error handling, or performance considerations, leaving some behavioral aspects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, consisting of just two sentences that directly convey the tool's purpose and critical usage warning. Every word earns its place, with no redundant or vague language, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter, no output schema), the description is largely complete. It covers the core purpose and a key behavioral constraint. However, it could be more comprehensive by briefly mentioning the output format (e.g., a list of IDs) or linking to sibling tools for related operations, which would enhance contextual understanding without overloading the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting the optional 'statuses' parameter with its default values. The description does not add any additional semantic information about parameters beyond what the schema provides, such as format examples or usage tips. Thus, it meets the baseline for high schema coverage but does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('List all media IDs'), the resource ('protected media'), and the criteria ('used in future posts with status: draft, scheduled, or queued'). It explicitly distinguishes this from sibling tools by focusing on protected media rather than orphaned media or general media lists, making the purpose highly specific and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to identify media that should not be deleted because they are protected for future posts. However, it does not explicitly mention when not to use it or name specific alternatives (e.g., 'postiz_list_all_media' for all media), which prevents a perfect score. The guidance is implied but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedpostiz_cleanup_orphan_media
    • First observedpostiz_find_orphan_media
    • First observedpostiz_get_media_stats
    • First observedpostiz_list_all_media
    • First observedpostiz_list_future_protected_media_ids

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: find orphan media, clean up orphan media, get media stats, list all media, and list protected media IDs. The descriptions clarify specific actions, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent 'postiz_verb_noun' pattern (e.g., postiz_find_orphan_media, postiz_get_media_stats). This predictability aids agent understanding and tool selection.

Tool Count5/5

With 5 tools, the set is well-scoped for media management in Postiz. Each tool serves a distinct function, and the count is neither too sparse nor excessive for the domain.

Completeness4/5

The tools cover core media management workflows (discovery, cleanup, stats, listing, and protection), but minor gaps exist, such as direct media upload or deletion of specific non-orphaned media, which agents might work around.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables interaction with Postiz for social media scheduling, content management, and analytics through MCP-compatible clients, with write and delete operations gated by environment variables.
    20
    38 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables to manage Ghost CMS instance using LLM interfaces. Supports comprehensive CRUD operations on posts, members, newsletters, offers, tags, tiers, users, and webhooks.
    7 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Schedule and manage social media posts across 13 platforms (Bluesky, Threads, Instagram, LinkedIn, Mastodon, YouTube, Facebook, Pinterest, Telegram, Nostr, X/Twitter, Discord, Tumblr and more). OAuth 2.0 + PKCE, 10 tools, draft-first workflow for AI agents.
    10
    15
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for managing social media posts across multiple platforms using the Postiz API. Supports creating, updating, deleting posts, and generating videos.
    38 npm
    2
    MIT