Pre-publish Post Assistant Skill
Purpose
This skill helps prepare blog posts for publication by providing intelligent suggestions for:
-
Categories - From existing site categories, with distribution awareness
-
Tags - From existing tags, avoiding tag pollution
-
SEO Metadata - Title, meta description, and focus keyphrase
All suggestions include rationale explaining the reasoning.
When to Use This Skill
-
User says "classify this post" or "suggest categories/tags"
-
User asks to "prepare this post for publishing"
-
User wants "SEO suggestions" for a draft
-
User provides a draft post and asks for taxonomy suggestions
-
User mentions "new blog post" and needs categorization help
Key Principles
Category Selection
-
Limit to 1-2 categories per post (primary + optional secondary)
-
Prefer categories with moderate post counts (avoid over/under-populated)
-
Match content theme, not just keywords
-
Consider category hierarchy if applicable
Tag Selection
-
Limit to 3-5 tags per post
-
Only use existing tags (no new tag creation unless explicitly requested)
-
Avoid tag pollution (tags with only 1-2 posts are low value)
-
Prefer tags that group related content meaningfully
-
Consider tag search potential
SEO Metadata
-
Title: 50-60 characters, include primary keyword, compelling
-
Meta Description: 150-160 characters, summarize value proposition, include CTA
-
Focus Keyphrase: 2-4 words, searchable, relevant to content
Input Formats
The skill accepts draft content in multiple formats:
File path
"Classify this post: /path/to/draft.md"
URL (for already-published posts needing optimization)
"Suggest tags for https://example.com/my-post/"
Inline text
"Here's my draft: [content]... What categories fit?"
Data Sources
Categories and Tags
Can be retrieved from:
-
WordPress GraphQL - Live data from WP
-
Static dist folder - Parse from built site (/category/ , /tag/ pages)
-
Cached taxonomy file - Pre-generated taxonomy.json
Distribution Data
For balanced suggestions, the skill needs post counts per category/tag:
-
Categories: Aim for even distribution, flag if category would become oversized
-
Tags: Prefer tags with 5+ posts, warn about orphan tags
Output Format
Suggested Categories
| Category | Post Count | Confidence | Rationale |
|---|---|---|---|
| personal-development | 245 | High | Core theme matches self-improvement focus |
| productivity-effectiveness | 89 | Medium | Secondary theme around habits and routines |
Recommendation: Use "personal-development" as primary category.
Suggested Tags
| Tag | Post Count | Confidence | Rationale |
|---|---|---|---|
| habits | 45 | High | Central topic of the post |
| productivity | 67 | High | Directly discussed |
| morning-routine | 12 | Medium | Specific example in content |
Recommendation: Use all 3 tags. Avoid creating new tags.
SEO Metadata
Title (58 chars):
How to Build Morning Habits That Actually Stick | Your Blog
Meta Description (156 chars):
Discover the science-backed approach to building morning habits that last. Learn the 3-step framework used by high performers. Start your transformation today.
Focus Keyphrase:
morning habits
Rationale:
- "morning habits" has good search volume and matches user intent
- Title includes keyphrase naturally at the beginning
- Description creates urgency and promises specific value
Workflow
- Analyze Content
-
Extract main themes and topics
-
Identify key concepts and terminology
-
Determine content type (how-to, opinion, review, etc.)
- Load Taxonomy
-
Fetch existing categories with post counts
-
Fetch existing tags with post counts
-
Identify distribution patterns
- Match & Score
-
Score each category/tag by relevance
-
Consider distribution balance
-
Flag potential issues (orphan tags, oversized categories)
- Generate SEO
-
Craft title with primary keyword
-
Write compelling meta description
-
Suggest focus keyphrase
- Present with Rationale
-
Show recommendations in table format
-
Explain reasoning for each suggestion
-
Highlight any concerns or alternatives
Configuration
{ "taxonomy_source": "graphql|dist|file", "dist_path": "./dist", "taxonomy_file": "./taxonomy.json", "graphql_endpoint": "https://wp.example.com/graphql", "limits": { "max_categories": 2, "max_tags": 5, "min_tag_posts": 3 }, "seo": { "title_max_length": 60, "description_max_length": 160, "site_name": "Your Blog" } }
Example Usage
Basic Classification
User: "Classify this post for me: /content/drafts/morning-routine-guide.md"
Claude: [Reads file, analyzes content, fetches taxonomy] [Presents category/tag suggestions with rationale] [Generates SEO metadata]
Quick Tag Check
User: "What tags should I use for a post about Bitcoin ETFs and institutional adoption?"
Claude: [Analyzes topic, checks existing tags] "Based on your existing tags, I recommend: - bitcoin (89 posts) - primary topic - cryptocurrency (45 posts) - broader category - investing (23 posts) - relevant angle
Avoid creating new tags like 'etf' or 'institutional' unless you plan
to write more content on these specific topics."
SEO Focus
User: "Generate SEO metadata for my post about productivity apps for remote workers"
Claude: [Analyzes topic and search intent]
Title: "Best Productivity Apps for Remote Workers in 2025 | Your Blog"
Description: "Discover the top productivity apps that remote workers
swear by. From task management to focus tools, find the perfect
stack for your home office."
Focus Keyphrase: "productivity apps remote workers"
Best Practices Enforced
-
No tag pollution - Won't suggest creating new tags unless justified
-
Balanced distribution - Warns if category is becoming oversized
-
SEO compliance - Enforces character limits and keyword placement
-
Existing taxonomy - Always checks against actual site data
-
Transparent reasoning - Every suggestion includes rationale