WordPress content management via REST API for managing posts. Requires Node.js and WordPress REST API credentials.
Resources
3Install
npx skillscat add jakenuts/agent-skills/wordpress-content-manager Install via the SkillsCat registry.
WordPress Content Manager
Manage WordPress posts via the REST API. Fully configurable via environment variables - no manual file editing required.
Required Environment Variables
Before using this skill, the agent must ensure these environment variables are set. If any are missing, ask the user for the values and set them before proceeding.
| Variable | Description | Example |
|---|---|---|
WP_SITE_URL |
WordPress site base URL | https://blog.example.com |
WP_USERNAME |
WordPress username | admin |
WP_APP_PASSWORD |
WordPress Application Password | xxxx xxxx xxxx xxxx |
How to get an Application Password:
- Log in to WordPress admin
- Go to Users → Profile
- Scroll to "Application Passwords"
- Enter a name and click "Add New Application Password"
- Copy the generated password (spaces are optional)
Optional Environment Variables
| Variable | Description | Default |
|---|---|---|
WP_API_URL |
REST API base URL | {WP_SITE_URL}/wp-json/wp/v2 |
First-Time Setup
Run the setup script after setting the required environment variables. It installs Node.js dependencies and validates the connection.
Linux/macOS
export WP_SITE_URL="https://your-site.com"
export WP_USERNAME="your-username"
export WP_APP_PASSWORD="your-app-password"
bash ~/.claude/skills/wordpress-content-manager/scripts/setup.shWindows (PowerShell)
$env:WP_SITE_URL = "https://your-site.com"
$env:WP_USERNAME = "your-username"
$env:WP_APP_PASSWORD = "your-app-password"
pwsh ~/.claude/skills/wordpress-content-manager/scripts/setup.ps1If using Codex CLI, replace ~/.claude/skills with ~/.codex/skills.
If Node.js is missing, the setup script will attempt to install it using common package managers.
Commands
All commands are non-interactive and return JSON when --json is set.
Describe Connection
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs site info --jsonList or Search Posts
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts list --status publish --search "keyword" --per_page 20 --page 1View a Post
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts get 123 --jsonCreate a Post (HTML or Markdown)
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts create \
--title "New Post" \
--content-file ./post.md \
--status draft \
--categories 1,2 \
--tags 5,7Schedule a Post
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts create \
--title "Scheduled Post" \
--content "<p>HTML body</p>" \
--status future \
--date "2025-01-15T15:30:00"Update a Post
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts update 123 \
--title "Updated Title" \
--status publishDelete a Post
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts delete 123Bulk Delete (Dry-Run First)
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts delete-many \
--status draft \
--search "test" \
--dry-run
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts delete-many \
--status draft \
--search "test" \
--confirmAdvanced: Profile Files (Optional)
For convenience, you can create profile files in profiles/ to store site configurations. Environment variables always override profile values.
See references/profiles.md for the profile format.
Select a profile with --profile <name> or WP_PROFILE=<name>.