AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Wordpress Publish

skill-borjablm-claude-skills-wordpress-publish · by Borjablm

Publish articles to a WordPress site via the REST API. Multi-site (azvai, quecafe, ecomm, ai-tutor, notegpt). Creates posts as drafts or published, uploads featured images, sets categories/tags. Use when the user asks to publish, push, upload, or send an article to WordPress. Natural follow-up to research-writing-assistant Stage 5.

No reviews yet
0 installs
4 views
0.0% view→install

Install

$ agentstack add skill-borjablm-claude-skills-wordpress-publish

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-borjablm-claude-skills-wordpress-publish)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
24d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Wordpress Publish? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

WordPress Publish

You publish articles to a configured WordPress site using the REST API. Multi-site setup — pick the target site with --site on every call.

Configured sites

Run python scripts/publish.py list-sites to see what's set up. Each site is identified by a lowercase slug (e.g. azvai, quecafe, ecomm). Slug is derived from the env vars WP__URL, _USER, _APP_PASSWORD.

The research-writing-assistant brand profile slug should match the site slug (so azvai brand → --site azvai). For ecomm.design the convention is ecomm.

Inputs

The user points you at an article. Typically one of:

  • A directory from research-writing-assistant containing article.html + meta.json + titles.md
  • A single HTML or Markdown file
  • An explicit title + body

Ask if any of these are missing: target site (slug), title, status (draft or publish, default draft), featured image (optional path), categories/tags (optional names).

If the working dir is from research-writing-assistant, infer the site from brief.json.brand_profile (which equals the brand slug, which equals the site slug). Confirm with the user before publishing.

Workflow

  1. Resolve site. Run scripts/publish.py list-sites if unclear. Confirm slug with user.
  2. Resolve source. If directory: read article.html as content, pick title from titles.md (the one marked recommended — ask if ambiguous), read meta description from meta.json.
  3. Confirm. Show the user: site URL, title, status, featured image (if any), categories, tags. Wait for approval.
  4. Upload featured image (if provided): run scripts/publish.py --site upload-media --file . Capture the returned media ID.
  5. Resolve taxonomy IDs (if category/tag names given): run scripts/publish.py --site resolve-terms --categories "A,B" --tags "X,Y". Script creates any missing terms.
  6. Create post. Run scripts/publish.py --site create with the resolved inputs. Script writes the response to stdout as JSON.
  7. Report back. Show the user the post ID, edit URL ({site_url}/wp-admin/post.php?post=&action=edit) and preview URL.

Updating an existing post

If the user asks to update a post they previously published, use scripts/publish.py --site update --id with whichever fields changed. Do not re-upload media unless the image itself changed.

Rules

  • Always pass --site. The legacy single-site fallback (WP_URL/WP_USER/WP_APP_PASSWORD without prefix) still works for backwards compat, but for multi-site setups always pass an explicit slug to avoid publishing to the wrong site.
  • Default to draft. Only --status publish when the user explicitly says "publish live" / "publish it" / "go live".
  • Never publish without showing the user the final title + meta description first.
  • Strip // wrappers if present before sending — WP expects a content fragment (see research-writing-assistant/references/wordpress-output.md).
  • Preserve the `` block if the article uses per-article CSS mode.

Script reference

All commands below read credentials from the project .env file. The --site flag goes BEFORE the subcommand.

# Discover what's configured
python scripts/publish.py list-sites

# Per-site operations
python scripts/publish.py --site azvai create \
  --title "Post title" \
  --content-file path/to/article.html \
  --status draft \
  --excerpt "Meta description here" \
  --slug "post-slug" \
  --featured-media 123 \
  --categories 5,12 \
  --tags 7,8

python scripts/publish.py --site ecomm update --id 456 --status publish

python scripts/publish.py --site quecafe upload-media --file path/to/image.jpg --alt "Alt text"

python scripts/publish.py --site azvai resolve-terms --categories "SEO,Guides" --tags "beginner"

python scripts/publish.py --site ecomm list --per-page 10
python scripts/publish.py --site azvai get --id 456

All commands exit non-zero on API error and print the WP error body to stderr.

Adding a new site

  1. Generate a WordPress Application Password: Users → Profile → Application Passwords on the WP admin
  2. Add three lines to .env:

`` WP__URL=https://example.com WP__USER=username WP__APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx ``

  1. Confirm with python scripts/publish.py list-sites
  2. (If the article-images skill needs it) create a matching brand profile in .claude/skills/article-images/brands/.json

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.