Claude-skill-registry Drafty
Create, manage, and publish blog posts on Drafty.com using the Drafty API
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/drafty" ~/.claude/skills/majiayu000-claude-skill-registry-drafty && rm -rf "$T"
skills/data/drafty/SKILL.mdDrafty Blog Management Skill
This skill helps you create, edit, and manage blog posts on Drafty.com directly from Claude Code.
What is Drafty?
Drafty is a modern blogging platform focused on clean writing and publishing. Your blog lives at
drafty.com/@username.
Authentication
To use this skill, you need a Drafty Pro account with an API key. Get yours at:
- Go to https://www.drafty.com/dash
- Settings → Advanced → Developer Tools
- Copy your API key (starts with
)drafty_
Store it in your environment:
export DRAFTY_API_KEY="drafty_xxxxx"
Core Workflows
Creating a New Post
When a user asks to create a blog post:
- Draft the content in Markdown format
- Generate a title (concise, SEO-friendly)
- Call the API to publish:
curl -X POST https://www.drafty.com/api/integrations/posts \ -H "Content-Type: application/json" \ -H "X-Drafty-API-Key: $DRAFTY_API_KEY" \ -d '{ "title": "Understanding AI Agents", "content": "# Understanding AI Agents\n\nAI agents are...", "visibility": "public", "tags": ["ai", "agents"] }'
- Return the post URL to the user
Listing Existing Posts
To see recent posts:
curl https://www.drafty.com/api/integrations/posts?limit=10 \ -H "X-Drafty-API-Key: $DRAFTY_API_KEY"
Returns JSON with post metadata and URLs.
Updating a Post
To update an existing post:
curl -X PATCH https://www.drafty.com/api/integrations/posts/{postId} \ -H "Content-Type: application/json" \ -H "X-Drafty-API-Key: $DRAFTY_API_KEY" \ -d '{ "title": "Updated Title", "content": "# Updated Content\n\n...", "visibility": "public" }'
Best Practices
Content Guidelines
- Markdown format: Use standard Markdown with GFM extensions
- Title optimization: Keep titles under 60 characters for SEO
- Post structure: Start with H1 (
), use logical heading hierarchy# - Code blocks: Use triple backticks with language tags
- Images: Reference external URLs or use Unsplash integration
Visibility Options
: Visible on your blog and in searchpublic
: Accessible via direct link onlyunlisted
: Only visible to you when logged inprivate
Tags
- Use lowercase, hyphenated tags:
,"ai-agents""web-development" - Maximum 5 tags per post for best organization
- Tags create automatic filtering on your blog
Common Tasks
"Write a blog post about X"
- Research the topic (if needed)
- Draft Markdown content with proper structure
- Generate an SEO-friendly title
- Choose appropriate tags
- Create the post via API
- Return the published URL
"List my recent posts"
- Call GET endpoint with reasonable limit (10-20)
- Format results in readable table
- Include post URLs for easy access
"Update my latest post"
- List posts to get the most recent
- Extract the post ID
- Make requested changes to title/content
- Update via PATCH endpoint
- Confirm update with URL
Error Handling
Authentication Errors (401)
- Verify API key is set:
echo $DRAFTY_API_KEY - Check key starts with
drafty_ - Ensure key is valid (not expired/regenerated)
Rate Limits (429)
- Free users: 10 posts/hour
- Pro users: Higher limits
- Wait and retry after cooldown
Validation Errors (400)
- Ensure title and content are not empty
- Check visibility is one of: public, unlisted, private
- Verify JSON structure is correct
API Reference
Base URL:
https://www.drafty.com/api/integrations
POST /posts
Create a new blog post
Request Body:
{ "title": "string (required)", "content": "string (required, Markdown)", "visibility": "public|unlisted|private (default: public)", "tags": ["string"] (optional) }
Response:
{ "success": true, "postId": "abc123", "url": "https://drafty.com/@username/post-slug" }
GET /posts?limit=N
List user's posts (max limit: 50)
Response:
{ "posts": [ { "id": "abc123", "title": "Post Title", "slug": "post-slug", "visibility": "public", "url": "https://drafty.com/@username/post-slug", "publishedAt": "2025-01-16T12:00:00Z" } ] }
PATCH /posts/{postId}
Update an existing post
Request Body (all fields optional):
{ "title": "string", "content": "string (Markdown)", "visibility": "public|unlisted|private", "tags": ["string"] }
Response:
{ "success": true, "url": "https://drafty.com/@username/post-slug" }
Examples
See
examples.md for complete workflow examples.
Advanced Features
OAuth Integration
For web apps, use OAuth instead of API keys. See
/docs/CUSTOM_GPT_GUIDE.md for details.
MCP Server
For Claude Desktop integration, see
/docs/MCP_SERVER_GUIDE.md for building an MCP server.
Getting Help
- API Issues: Check https://www.drafty.com/docs/api
- Skill Issues: Review error messages and validate API key
- Feature Requests: support@drafty.com