WordPress Publisher Skill
Publish content directly to WordPress sites via REST API with full Gutenberg block support. Create and publish posts/pages, auto-load and select categories from website, generate SEO-optimized tags, p
Publish content directly to WordPress sites via REST API with full Gutenberg block support. Create and publish posts/pages, auto-load and select categories from website, generate SEO-optimized tags, p
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Publish content directly to WordPress sites using the REST API with full Gutenberg block formatting, automatic category selection, SEO tag generation, and preview capabilities.
1. CONNECT → Authenticate with WordPress site 2. ANALYZE → Load categories from site, analyze content for best match 3. GENERATE → Create SEO-optimized tags based on content 4. CONVERT → Transform markdown/HTML to Gutenberg blocks 5. PREVIEW → Create draft and verify rendering 6. PUBLISH → Publish or schedule the post 7. VERIFY → Confirm live post renders correctly
Ask user for:
https://example.com)Guide user:
Claude Publisherfrom scripts.wp_publisher import WordPressPublisherwp = WordPressPublisher( site_url="https://example.com", username="admin", password="xxxx xxxx xxxx xxxx xxxx xxxx" # Application password )
Test connection
user_info = wp.test_connection() print(f"Connected as: {user_info['name']}")
# Get all categories from the WordPress site categories = wp.get_categories_with_details()Returns list like:
[
{'id': 1, 'name': 'Uncategorized', 'slug': 'uncategorized', 'count': 5},
{'id': 2, 'name': 'Tutorials', 'slug': 'tutorials', 'count': 12},
{'id': 3, 'name': 'Cloud Hosting', 'slug': 'cloud-hosting', 'count': 8},
]
The system analyzes content and selects the most appropriate category:
# Analyze content and suggest best category suggested_category = wp.suggest_category( content=article_content, title=article_title, available_categories=categories )Or let user choose from available options
print("Available categories:") for cat in categories: print(f" [{cat['id']}] {cat['name']} ({cat['count']} posts)")
Generate tags that improve Google search visibility:
# Generate tags based on content analysis tags = wp.generate_seo_tags( content=article_content, title=article_title, max_tags=10 )Returns list like:
['n8n hosting', 'workflow automation', 'self-hosted n8n',
'affordable hosting', 'docker deployment', 'node.js hosting']
# Get or create all tags, returns list of tag IDs tag_ids = wp.get_or_create_tags(tags)
from scripts.content_to_gutenberg import convert_to_gutenbergConvert markdown content
gutenberg_content = convert_to_gutenberg(markdown_content)
| Markdown | Gutenberg Block |
|---|---|
| |
| in paragraph |
| |
| |
``code```` | |
| |
| |
| |
Tables are converted with proper Gutenberg structure:
# Input markdown: | Feature | Plan A | Plan B | |---------|--------|--------| | Price | $10 | $20 |Output Gutenberg:
<!-- wp:table --> <figure class="wp-block-table"><table> <thead><tr><th>Feature</th><th>Plan A</th><th>Plan B</th></tr></thead> <tbody><tr><td>Price</td><td>$10</td><td>$20</td></tr></tbody> </table></figure> <!-- /wp:table -->
# Create as draft first result = wp.create_draft( title="Article Title", content=gutenberg_content, categories=[category_id], tags=tag_ids, excerpt="Auto-generated or custom excerpt" )post_id = result['post_id'] preview_url = result['preview_url'] edit_url = result['edit_url']
# Fetch preview page to verify rendering preview_content = wp.fetch_preview(post_id)Check for issues
issues = wp.validate_rendered_content(preview_content) if issues: print("Issues found:") for issue in issues: print(f" - {issue}")
# After preview approval, publish result = wp.publish_post(post_id) live_url = result['live_url']
# Full publish workflow in one call result = wp.publish_content( title="Article Title", content=gutenberg_content, category_names=["Cloud Hosting"], # By name, auto-resolves to ID tag_names=["n8n", "hosting", "automation"], status="publish", # or "draft", "pending", "private", "future" excerpt="Custom excerpt for SEO", slug="custom-url-slug" )
# Schedule for future publication from datetime import datetime, timedeltapublish_date = datetime.now() + timedelta(days=1) result = wp.publish_content( title="Scheduled Post", content=content, status="future", date=publish_date.isoformat() )
# Verify the published post verification = wp.verify_published_post(post_id)print(f"Live URL: {verification['url']}") print(f"Status: {verification['status']}") print(f"Categories: {verification['categories']}") print(f"Tags: {verification['tags']}")
| Issue | Cause | Solution |
|---|---|---|
| Tables not rendering | Missing figure wrapper | Use proper block structure |
| Code not highlighted | Missing language attribute | Add to code block |
| Images broken | Wrong URL or missing media | Upload to WordPress first, use media ID |
| Tags not showing | Theme doesn't display tags | Check theme settings or use different theme |
from scripts.wp_publisher import WordPressPublisher from scripts.content_to_gutenberg import convert_to_gutenberg1. Connect
wp = WordPressPublisher( site_url="https://xcloud.host", username="admin", password="xxxx xxxx xxxx xxxx" )
2. Load categories and select best match
categories = wp.get_categories_with_details() best_category = wp.suggest_category(content, title, categories)
3. Generate SEO tags
tags = wp.generate_seo_tags(content, title, max_tags=10)
4. Convert to Gutenberg
gutenberg_content = convert_to_gutenberg(markdown_content)
5. Create draft and preview
draft = wp.create_draft( title="7 Best n8n Hosting Providers in 2026", content=gutenberg_content, categories=[best_category['id']], tags=wp.get_or_create_tags(tags) ) print(f"Preview: {draft['preview_url']}")
6. After verification, publish
result = wp.publish_post(draft['post_id']) print(f"Published: {result['live_url']}")
| Resource | Endpoint |
|---|---|
| Posts | |
| Pages | |
| Categories | |
| Tags | |
| Media | |
| Status | Description |
|---|---|
| Live and visible |
| Saved but not visible |
| Awaiting review |
| Only visible to admins |
| Scheduled for later |
scripts/wp_publisher.py - Main publisher classscripts/content_to_gutenberg.py - Markdown/HTML converterreferences/gutenberg-blocks.md - Block format reference| Error Code | Meaning | Solution |
|---|---|---|
| 401 | Invalid credentials | Check username and application password |
| 403 | Insufficient permissions | User needs Editor or Admin role |
| 404 | Endpoint not found | Verify REST API is enabled |
| 400 | Invalid data | Check category/tag IDs exist |
| 500 | Server error | Retry or check WordPress error logs |
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.