← 返回 Skills 市场
kfuras

notipo

作者 kfuras · GitHub ↗ · v1.0.3 · MIT-0
cross-platform ✓ 安全检测通过
242
总下载
0
收藏
0
当前安装
4
版本数
在 OpenClaw 中安装
/install notipo
功能描述
Publish blog posts from AI agents to WordPress via Notion. One API call handles page creation, markdown conversion, image uploads, featured image generation,...
使用说明 (SKILL.md)

Install Notipo CLI if it doesn't exist

npm install -g notipo

Setup

Sign up at notipo.com, connect your Notion database and WordPress site through the dashboard, then grab your API key from Settings → Account.

Set the environment variables:

export NOTIPO_URL="https://notipo.com"
export NOTIPO_API_KEY="ntp_your-api-key"

Core Workflow

  1. Generate — AI agent creates title, body (markdown), category, tags, SEO keyword
  2. Fetch context — get categories and tags from Notipo to pick valid values
  3. Publishnotipo posts create with all fields
  4. Monitornotipo jobs to check completion status

Essential Commands

Check connection status

notipo status

Fetch categories and tags

# Get available categories (for picking a valid category)
curl -s $NOTIPO_URL/api/categories \
  -H "X-API-Key: $NOTIPO_API_KEY" | jq '.data[].name'

# Get available tags
curl -s $NOTIPO_URL/api/tags \
  -H "X-API-Key: $NOTIPO_API_KEY" | jq '.data[].name'

Create a post (draft)

notipo posts create \
  --title "Your Post Title" \
  --body "## Introduction\
\
Your markdown content here.\
\
## Main Section\
\
More content." \
  --category "Tutorials" \
  --tags "automation,ai" \
  --seo-keyword "your focus keyword" \
  --image-title "Featured Image Title" \
  --slug "custom-url-slug"

Create and publish immediately

notipo posts create \
  --title "Your Post Title" \
  --body "Markdown content here." \
  --category "Guides" \
  --seo-keyword "focus keyword" \
  --publish

Create, publish, and wait for completion

notipo posts create \
  --title "Your Post Title" \
  --body "Markdown content here." \
  --category "Guides" \
  --publish --wait

The --wait flag polls until the job completes and returns the result with the WordPress URL.

Create with inline Unsplash images (Pro plan, curl only)

curl -X POST $NOTIPO_URL/api/posts/create \
  -H "X-API-Key: $NOTIPO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Your Post Title",
    "body": "## Introduction\
\
Content here.\
\
## Getting Started\
\
More content.",
    "category": "Tutorials",
    "seoKeyword": "focus keyword",
    "images": [
      { "query": "developer workspace laptop", "afterHeading": "## Introduction" },
      { "query": "getting started tutorial", "afterHeading": "## Getting Started" }
    ],
    "publish": true
  }'

Update a post (fix content, change metadata, re-sync to WordPress)

notipo posts update POST_ID \
  --body "## Introduction\
\
Updated content without the H1." \
  --seo-keyword "updated focus keyword" \
  --wait

Updates the Notion page content and/or properties, then triggers a re-sync to WordPress. Only the provided fields are updated — omitted fields stay unchanged. This is the correct way to fix post content after creation.

Check job status

notipo jobs

List posts

notipo posts

Trigger a sync (pick up Notion changes)

notipo sync

Delete a post

notipo posts delete POST_ID

Common Patterns

AI-generated blog post with full metadata

# 1. Fetch categories to pick a valid one
curl -s $NOTIPO_URL/api/categories -H "X-API-Key: $NOTIPO_API_KEY" | jq '.data[].name'

# 2. Create the post with all fields and wait for completion
notipo posts create \
  --title "10 Docker Best Practices for Production" \
  --body "## Introduction\
\
Docker containers are the standard...\
\
## Use Multi-Stage Builds\
\
Reduce image size by separating build and runtime...\
\
## Pin Base Image Versions\
\
Avoid surprises by pinning specific tags..." \
  --category "DevOps" \
  --tags "docker,containers,production" \
  --seo-keyword "docker best practices production" \
  --image-title "Docker Best Practices" \
  --slug "docker-best-practices-production" \
  --publish --wait

Batch content pipeline

# Generate and publish multiple posts in sequence
for topic in "React hooks" "TypeScript generics" "Node.js streams"; do
  notipo posts create \
    --title "A Guide to $topic" \
    --body "## Overview\
\
Generated content about $topic." \
    --category "Tutorials" \
    --seo-keyword "$(echo $topic | tr '[:upper:]' '[:lower:]')" \
    --wait
done

Full pipeline with inline images (curl)

curl -X POST $NOTIPO_URL/api/posts/create \
  -H "X-API-Key: $NOTIPO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "10 Docker Best Practices for Production",
    "body": "## Introduction\
\
Docker containers are the standard...\
\
## Use Multi-Stage Builds\
\
Reduce image size...",
    "category": "DevOps",
    "tags": ["docker", "containers", "production"],
    "seoKeyword": "docker best practices production",
    "imageTitle": "Docker Best Practices",
    "slug": "docker-best-practices-production",
    "images": [
      { "query": "docker containers server", "afterHeading": "## Introduction" }
    ],
    "publish": true
  }'

CLI Reference

Command Description
notipo status Show Notion and WordPress connection status
notipo sync Trigger an immediate Notion poll
notipo posts List all posts
notipo posts create Create a post in Notion and sync to WordPress
notipo posts update \x3Cid> Update post content/properties and re-sync to WordPress
notipo posts delete \x3Cid> Delete a post (cleans up WordPress + Notion)
notipo jobs List recent sync and publish jobs
notipo help Show usage and examples

posts create flags

Flag Description
--title \x3Ctitle> Post title (required)
--body \x3Cmarkdown> Markdown content
--category \x3Cname> Category name (must exist in WordPress)
--tags \x3Ca,b,c> Comma-separated tag names
--seo-keyword \x3Ckw> Focus keyword for Rank Math / SEOPress
--image-title \x3Ctext> Text overlay on featured image (Pro)
--slug \x3Cslug> Custom URL slug
--publish Publish immediately (default: draft)
--wait Wait for job completion and return result

posts update flags

Flag Description
--title \x3Ctitle> New post title
--body \x3Cmarkdown> New markdown content (replaces all existing content)
--category \x3Cname> New category name
--tags \x3Ca,b,c> New comma-separated tag names
--seo-keyword \x3Ckw> New focus keyword for Rank Math / SEOPress
--slug \x3Cslug> New URL slug
--publish Publish after syncing (default: keep current status)
--wait Wait for job completion and return result

API Request Body Reference

PATCH /api/posts/:id (update)

Field Type Required Description
title string No New post title
body string No New markdown content (replaces all existing content on the Notion page)
category string No New category name
tags string[] No New tag names
seoKeyword string No New focus keyword
slug string No New URL slug
publish boolean No Publish after syncing

Returns { jobId, postId, message }. The update writes to Notion first, then triggers a sync job to push changes to WordPress.

POST /api/posts/create

For curl/HTTP usage, POST /api/posts/create accepts:

Field Type Required Description
title string Yes Post title
body string No Markdown content with headings and paragraphs
category string No Category name (must exist in WordPress)
tags string[] No Array of tag names
seoKeyword string No Focus keyword for Rank Math / SEOPress
imageTitle string No Text overlay on featured image (Pro)
slug string No Custom URL slug
publish boolean No Publish immediately (default: false)
images object[] No Inline Unsplash images (Pro). Each: {query, afterHeading}

What Notipo Handles

  • Notion page creation from markdown (no Notion credentials needed)
  • Markdown → Notion blocks → WordPress Gutenberg block conversion
  • Image download from Notion and upload to WordPress media library
  • Featured image generation (1200×628 with category background + title overlay)
  • Inline Unsplash image insertion by search query (Pro plan)
  • SEO metadata — Rank Math, Yoast, SEOPress, AIOSEO
  • Post status management in Notion
  • Failure notifications via Slack/Discord webhook

Common Gotchas

  1. Use posts update to fix content — don't delete and recreate. notipo posts update \x3Cid> --body "..." updates the Notion page and re-syncs to WordPress in one call.
  2. Include all fields for best results — only title is technically required, but AI agents should always generate body, category, tags, seoKeyword, imageTitle, and slug for a complete post.
  3. Category must exist — the category name must match an existing WordPress category. Fetch valid options first.
  4. --publish runs two jobs — first SYNC_POST (creates draft), then PUBLISH_POST (makes it live). Use --wait to block until both complete.
  5. Images require Pro plan — the images array and featured image generation are Pro features. On Free plan, these fields are silently ignored.
  6. Fire and forget — the API returns a jobId immediately. Processing happens in the background. Use notipo jobs to check status.
  7. Markdown body format — use ## Heading for h2, ### Heading for h3. Paragraphs are separated by \ \ . Images can be included as ![alt](url).
  8. Rate limitsnotipo sync has a 15-second cooldown. notipo posts create has no rate limit.
  9. API key format — keys start with ntp_. Get yours from Settings → Account in the dashboard.
  10. Slug defaults — if not set, the slug is derived from the SEO keyword. If no SEO keyword, WordPress generates it from the title.
安全使用建议
This skill appears to do what it says, but take these precautions before installing or using it: 1) Confirm NOTIPO_URL points to the official https://notipo.com endpoint (or a trusted self-host) so you aren't sending content or API keys to an unknown server. 2) Treat NOTIPO_API_KEY like any secret—store it securely and avoid pasting it into shared shells; rotate it if you suspect exposure. 3) If you follow the SKILL.md recommendation to run `npm install -g notipo`, verify the npm package (publisher, downloads, source repo) and consider installing in an isolated environment (container or VM) to limit any postinstall scripts. 4) Review Notipo's privacy/security docs and the WordPress integration settings—automated publishing can leak drafts if misconfigured. 5) If you need higher assurance, ask for the skill's source code or an explicit install spec so you can audit what will be executed.
功能分析
Type: OpenClaw Skill Name: notipo Version: 1.0.3 The 'notipo' skill is a legitimate integration for the Notipo service, enabling AI agents to automate blog publishing to WordPress via Notion. It utilizes a CLI tool (installed via 'npm install -g notipo') and standard API calls to 'notipo.com' using provided environment variables. The instructions in SKILL.md are well-documented and strictly aligned with the stated purpose of content management, with no evidence of data exfiltration, malicious execution, or harmful prompt injection.
能力评估
Purpose & Capability
Name, description, and runtime instructions all focus on creating and syncing posts via Notipo/Notion/WordPress. The only required environment variables (NOTIPO_URL, NOTIPO_API_KEY) are directly related to calling the Notipo service.
Instruction Scope
SKILL.md confines runtime actions to calling the Notipo API and using the notipo CLI/curl. It does recommend running `npm install -g notipo` if the CLI is missing (which instructs installing third-party code on the host). It also allows a customizable NOTIPO_URL, so ensure that variable points to the official service.
Install Mechanism
There is no formal install spec in the skill bundle (instruction-only), but the docs recommend a global npm install. Installing an npm package can run arbitrary code (postinstall scripts) and will add binaries to the host; verify the npm package and prefer constrained installs (container, VM, or isolated environment) if you have concerns.
Credentials
Only two env vars are required: NOTIPO_URL and NOTIPO_API_KEY. Both are necessary and proportional for making authenticated API calls to the Notipo service. The skill does not request unrelated credentials or filesystem paths.
Persistence & Privilege
The skill is not always-enabled and does not request elevated or persistent platform privileges. It does not attempt to modify other skills or system-wide agent configs in the provided instructions.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install notipo
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /notipo 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.3
- Added support for updating existing posts with the new notipo posts update command. - Documented usage for updating post content, metadata, and re-syncing changes to WordPress. - Expanded CLI reference with posts update flags and examples. - Added API documentation for PATCH /api/posts/:id to update posts. - No other changes to core workflow or post creation behavior.
v1.0.2
notipo 1.0.3 - Documentation links for GitHub were removed; only primary docs, npm, and CLI docs remain. - Minor documentation tweaks for clarity, no code or functional changes.
v1.0.1
notipo 1.0.1 - Initial public release. - Publish blog posts to WordPress via Notion using a single API call. - Supports markdown conversion, image uploads, featured image generation, and SEO metadata. - Includes CLI and curl/HTTP examples for drafting, publishing, and managing posts. - Provides workflows for AI-generated blog content and batch pipelines. - Details API fields, environment setup, and common troubleshooting tips. - Recommend including all API fields for AI-generated content
v1.0.0
Initial release — publish WordPress posts via CLI or API with full pipeline (images, SEO, featured images)
元数据
Slug notipo
版本 1.0.3
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 4
常见问题

notipo 是什么?

Publish blog posts from AI agents to WordPress via Notion. One API call handles page creation, markdown conversion, image uploads, featured image generation,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 242 次。

如何安装 notipo?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install notipo」即可一键安装,无需额外配置。

notipo 是免费的吗?

是的,notipo 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

notipo 支持哪些平台?

notipo 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 notipo?

由 kfuras(@kfuras)开发并维护,当前版本 v1.0.3。

💬 留言讨论