WordPress content management via REST API for managing posts. Requires Node.js and WordPress REST API credentials.
Manage WordPress posts via the REST API. Fully configurable via environment variables - no manual file editing required.
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:
| Variable | Description | Default |
|---|---|---|
WP_API_URL |
REST API base URL | {WP_SITE_URL}/wp-json/wp/v2 |
Run the setup script after setting the required environment variables. It installs Node.js dependencies and validates the connection.
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.sh
$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.ps1
If 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.
All commands are non-interactive and return JSON when --json is set.
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs site info --json
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts list --status publish --search "keyword" --per_page 20 --page 1
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts get 123 --json
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,7
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"
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts update 123 \
--title "Updated Title" \
--status publish
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts delete 123
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" \
--confirm
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>.