wordpress-content-manager
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.sh
Windows (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.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.
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 --json
List or Search Posts
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts list --status publish --search "keyword" --per_page 20 --page 1
View a Post
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts get 123 --json
Create 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,7
Schedule 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 publish
Delete a Post
node ~/.claude/skills/wordpress-content-manager/scripts/wp-content.mjs posts delete 123
Bulk 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" \
--confirm
Advanced: 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>.