Notipo

io.github.kfuras由 GitHub 帳號 kfuras 發布v1.2.5更新於 Oct 25, 2026

Publish to self-hosted WordPress from AI agents: markdown, images, SEO, and Notion sync.

已驗證Streamable HTTP可網頁執行效率與工作流溝通與協作

概覽

AI 產生的概覽

Notipo 是託管式 MCP 伺服器,讓 AI 助理在自架 WordPress 上建立、更新、發佈和刪除部落格文章,也可從 Notion 同步。

可以做什麼
列出並讀取文章、分類和標籤,包含狀態、WordPress 連結和分類資訊,並查看帳戶設定與已連線服務。用 markdown 建立文章:可產生 Notion 頁面並同步到 WordPress,或直接發佈到 WordPress,自動處理圖片上傳、Gutenberg 轉換、精選圖片和 SEO 中繼資料。更新既有文章內容或屬性並重新同步,把草稿發佈上線。從 Notipo、WordPress 和 Notion 刪除文章。查看同步與發佈工作狀態,並觸發一次即時 Notion 同步。
適用情境
適合讓助理把部落格內容起草或發佈到自架 WordPress 而不需外掛,也適合把以 Notion 為基礎的編輯流程推送到 WordPress。適用於需要端到端發佈、含圖片和 SEO 中繼資料的 Claude、Cursor、ChatGPT 等代理。
執行需求
透過 streamable HTTP 存取 app.notipo.com 遠端端點,需要 Notipo 帳戶和 API 金鑰,放在 X-API-Key 標頭中。金鑰的發佈權限限於其所屬部落格。發佈需要已連線的 WordPress 網站,Notion 僅用於 Notion 同步方式。託管服務有免費額度和付費 Pro 方案。
安裝前請注意
API 金鑰擁有其部落格的發佈權限,須妥善保密。工具會寫入線上系統:publish 為 true 時 create_post 和 direct_publish 會立即上線,publish_post 會把草稿公開,update_post 會改動內容,delete_post 會從 Notipo、WordPress 和 Notion 刪除文章且無法復原。sync_now 僅限 Pro 且有冷卻限制。內容和圖片會傳送到託管的 Notipo 服務,並進一步傳給 WordPress 和 Notion。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Notipo,將其新增到工作區。
  2. 連接 X-API-Key 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.kfuras%2Fnotipo/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "notipo": {
      "type": "http",
      "url": "https://app.notipo.com/api/mcp",
      "headers": {
        "X-API-Key": "<YOUR_API_KEY>"
      }
    }
  }
}

README

Notipo

Open-source WordPress publishing for AI agents — MCP server, REST API, and CLI. Or sync from Notion.

Point your agent (Claude, Cursor, ChatGPT, n8n, any HTTP client) at Notipo and it publishes to your self-hosted WordPress — no plugin required. Notipo handles the full pipeline: markdown → Gutenberg conversion, image hosting in your WordPress media library, AI- or Unsplash-generated featured images, and Rank Math / Yoast / SEOPress / AIOSEO metadata applied automatically on publish.

[License: AGPL-3.0] [npm: notipo CLI] [Hosted SaaS at notipo.com] [MCP Server]


Two ways to publish to WordPress

1. From Notion

Connect Notion, change a page status to Post to Wordpress or Publish, and Notipo handles the rest — markdown extraction, image caching to WP media library, featured image generation, SEO metadata via Rank Math / Yoast / SEOPress / AIOSEO.

2. From an AI agent, REST API, CLI, or n8n workflow

Notipo exposes a Model Context Protocol (MCP) server with 13 tools for AI agents, plus a REST API and a CLI. Claude Desktop, Cursor, Windsurf, Claude Code, ChatGPT — any MCP-compatible agent can publish posts end-to-end.

bash
# CLI: publish a post end-to-endnpm install -g notiponotipo posts create --title "Why Every Dev Should Have a Blog" --publish
# REST API: one call runs the full pipelinecurl -X POST https://app.notipo.com/api/posts/create \  -H "X-API-Key: $NOTIPO_API_KEY" \  -H "Content-Type: application/json" \  -d '{"title":"Hello","body":"## Intro\n\nMarkdown in, WordPress out.","publish":true}'
jsonc
// MCP: drop into Claude Desktop config{  "mcpServers": {    "notipo": {      "type": "http",      "url": "https://app.notipo.com/api/mcp",      "headers": { "x-api-key": "your-api-key" }    }  }}

See notipo.com/ai-agents for the full AI-agent integration story.


Hosted SaaS vs. self-hosting

The hosted version at notipo.com is the supported, batteries-included product — managed infrastructure, automatic upgrades, instant Notion webhook delivery, and a free tier with 5 posts/month. Pro is $19/month for unlimited posts plus AI featured images.

This repository is the same code that runs the hosted product. You can self-host it under the AGPL-3.0 license — see DEVELOPMENT.md for the local dev story and docker-compose.yml for production deployment with Traefik + Let's Encrypt.

Self-hosting is unsupported — no help beyond what's in this repo, no upgrade path. If you need any of those, the hosted product is faster, cheaper, and already running.


Tech stack

  • Backend: Fastify, TypeScript, Prisma, PostgreSQL 17
  • Job queue: pg-boss (Postgres-backed, no Redis)
  • Frontend (admin): Next.js 16 + shadcn/ui + Tailwind
  • AI: Google Gemini (featured images), Model Context Protocol (agent integration)
  • Other: Sharp (images), Stripe (billing), Resend (transactional email), Sentry (errors), PostHog (product analytics), Notion SDK, WordPress REST API
  • CLI: zero-dependency npm package, native fetch only

Monorepo (Turborepo + npm workspaces):

apps/  api/     — Fastify backend, MCP server, job workers  web/     — Next.js admin UIpackages/  cli/     — `notipo` npm package (MIT-licensed thin client)  shared/  — TypeScript types and enumsplugins/  notipo-seo-meta-writer/  — WordPress plugin for Yoast/AIOSEO metadata bridge

Quick start (self-host)

You'll need: Docker, Docker Compose, a domain pointed at your server, a Notion integration, and a WordPress site with Application Passwords enabled (WP 5.6+).

bash
git clone https://github.com/kfuras/notipo-app.gitcd notipo-appcp apps/api/.env.example .env# Edit .env — at minimum set DATABASE_URL, ENCRYPTION_KEY, API_KEY,# DOMAIN, ACME_EMAIL, RESEND_API_KEYdocker compose up -d

The compose stack pulls multi-arch images (linux/amd64 + linux/arm64) from ghcr.io/kfuras/notipo-api and ghcr.io/kfuras/notipo-web, so it works on both x86 servers and Apple Silicon / ARM hardware.

The compose stack starts Traefik + the API + admin UI + Postgres, with Let's Encrypt TLS on first run. See docker-compose.yml for details.

For local development without Docker:

bash
docker compose -f docker-compose.dev.yml up   # Postgres onlynpm installnpm run migrate -w @notipo/apiturbo dev                                      # API on :3000, web on :3001

See DEVELOPMENT.md for the full development guide.


Documentation


License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — see LICENSE.

In plain English:

  • ✅ You can use, modify, and self-host Notipo for any purpose, including commercial.
  • ✅ You can fork it and contribute changes back.
  • ⚠️ If you run a modified version as a hosted service, you must publish your modifications under the same license. This is the "Affero clause" — it closes the network-service loophole that plain GPL leaves open.
  • ✅ The notipo CLI package is published to npm under MIT (it's just a thin API client wrapper).
  • ✅ The notipo-seo-meta-writer WordPress plugin is published under MIT (compatible with WordPress's GPL ecosystem).

If you want to use Notipo's code in a proprietary hosted product without AGPL obligations, open an issue — commercial licensing may be available.


Contributing

PRs welcome. See CONTRIBUTING.md for guidelines and CODE_OF_CONDUCT.md for community standards.

For security disclosures, see SECURITY.md — please don't open public issues for vulnerabilities.


Links

來源:README.md,提交 5ba2be1

工具

13

list_posts

List Posts

List all posts for your Notipo account. Returns title, status, WordPress URL, category, and timestamps.

無需輸入參數。

get_post

Get Post

Get details of a specific post by ID, including status, WordPress URL, and category.

輸入參數postId必填

create_post

Create Post

Create a new blog post. Creates a Notion page and triggers sync to WordPress. The body should be markdown. Set publish=true to publish immediately, or leave false to create a draft.

輸入參數bodyslugtagstitle必填publishcategoryseoKeywordseoDescription

direct_publish

Direct Publish

Publish a blog post directly to WordPress without Notion. Handles image uploads, Gutenberg conversion, featured image generation, and SEO metadata. Body must be markdown. Set publish=true to go live, false for draft. Use this instead of create_post when you don't need Notion.

輸入參數body必填slugtagstitle必填publishcategoryimageTitleseoKeywordseoDescription

update_post

Update Post

Update an existing post's content or properties in Notion, then re-sync to WordPress. Only provided fields are updated.

輸入參數bodyslugtagstitlepostId必填publishcategoryseoKeywordseoDescription

publish_post

Publish Post

Publish a draft post to WordPress (make it live).

輸入參數postId必填

delete_post

Delete Post

Delete a post from Notipo, WordPress, and reset the Notion page status. This cannot be undone.

輸入參數postId必填

list_categories

List Categories

List all WordPress categories synced to Notipo. Use these names when creating posts.

無需輸入參數。

list_tags

List Tags

List all WordPress tags synced to Notipo. Use these names when creating posts.

無需輸入參數。

get_job

Get Job Status

Check the status of a sync or publish job. Returns status (PENDING, RUNNING, COMPLETED, FAILED), progress steps, and any error message.

輸入參數jobId必填

list_jobs

List Recent Jobs

List recent sync and publish jobs. Useful for monitoring pipeline activity.

輸入參數limitstatus

get_settings

Get Settings

Get your Notipo account configuration: which services are connected (Notion, WordPress), current plan, feature settings, and trigger statuses.

無需輸入參數。

sync_now

Sync Now

Trigger an immediate sync from Notion. Checks for any posts with trigger statuses and queues sync jobs. Pro plan only. Has a 15-second cooldown between calls.

無需輸入參數。

版本歷史

1
  1. v1.2.5最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分