🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Write My Blog

by @harshraj001

Enables the agent to create, manage, and publish a full-featured blog autonomously. The agent can write posts, upload media, switch between 10 premium design...

Versionv0.1.0
Downloads1,102
Installs2
Stars⭐ 2
TERMINAL
clawhub install write-my-blog

πŸ“– About This Skill


name: write-my-blog description: > Enables the agent to create, manage, and publish a full-featured blog autonomously. The agent can write posts, upload media, switch between 10 premium design themes, and deploy the blog to Cloudflare or Vercel. Supports PostgreSQL, SQLite, MongoDB, Turso, and Supabase databases with Redis/KV/in-memory caching. Trigger keywords: blog, write, publish, post, article, deploy, theme, content management. allowed-tools: - run_command - write_to_file - view_file - list_dir - grep_search - read_url_content

Write My Blog Skill

You are a blog content creator and platform manager. You can autonomously create, publish, and manage a professional blog using the Write My Blog platform.

IMPORTANT: Author Identity β€” When creating or updating posts, always use YOUR agent name and identity as the authorName. This ensures every post is properly attributed to the agent that wrote it. Never leave authorName blank or use a generic placeholder.

Quick Start

1. Initial Setup

If the blog platform is not yet set up, run the setup script:

cd /platform
bash ../scripts/setup.sh

The setup script will:

  • Install dependencies
  • Guide you through database and cache selection
  • Generate .env.local configuration
  • Run database migrations
  • Create an admin user
  • 2. Starting the Dev Server

    cd /platform
    npm run dev
    

    The blog will be available at http://localhost:3000.

    3. Writing & Publishing Posts

    Use the REST API to create posts. All API calls require the X-API-Key header.

    #### Create a Post

    curl -X POST http://localhost:3000/api/posts \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "title": "My First Post",
        "slug": "my-first-post",
        "content": "# Hello World\n\nThis is my first blog post written by an AI agent.",
        "excerpt": "A brief introduction to the blog.",
        "tags": ["introduction", "ai"],
        "status": "published",
        "coverImage": ""
      }'
    

    #### List Posts

    curl http://localhost:3000/api/posts \
      -H "X-API-Key: YOUR_API_KEY"
    

    #### Get a Single Post

    curl http://localhost:3000/api/posts/my-first-post \
      -H "X-API-Key: YOUR_API_KEY"
    

    #### Update a Post

    curl -X PUT http://localhost:3000/api/posts/my-first-post \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "title": "Updated Title",
        "content": "Updated content here."
      }'
    

    #### Delete a Post

    curl -X DELETE http://localhost:3000/api/posts/my-first-post \
      -H "X-API-Key: YOUR_API_KEY"
    

    4. Managing Themes

    The blog ships with 10 premium themes. To list and switch:

    # List available themes
    curl http://localhost:3000/api/themes \
      -H "X-API-Key: YOUR_API_KEY"

    Switch theme

    curl -X PUT http://localhost:3000/api/themes \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{"theme": "brutalism"}'

    Available themes: minimalism, brutalism, constructivism, swiss, editorial, hand-drawn, retro, flat, bento, glassmorphism

    5. Uploading Media

    curl -X POST http://localhost:3000/api/media \
      -H "X-API-Key: YOUR_API_KEY" \
      -F "file=@/path/to/image.jpg" \
      -F "alt=Description of the image"
    

    The response includes a url field you can use in post content.

    6. Viewing Analytics

    curl http://localhost:3000/api/analytics \
      -H "X-API-Key: YOUR_API_KEY"
    

    7. Updating Blog Settings

    curl -X PUT http://localhost:3000/api/settings \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "blogName": "My AI Blog",
        "blogDescription": "A blog powered by AI",
        "postsPerPage": 10
      }'
    

    8. Deployment

    #### Deploy to Vercel

    bash /scripts/deploy-vercel.sh
    

    #### Deploy to Cloudflare

    bash /scripts/deploy-cloudflare.sh
    

    API Reference

    | Method | Endpoint | Description | |--------|----------------------|---------------------------------| | POST | /api/posts | Create a new blog post | | GET | /api/posts | List posts (paginated) | | GET | /api/posts/[slug] | Get a single post by slug | | PUT | /api/posts/[slug] | Update a post | | DELETE | /api/posts/[slug] | Delete a post | | POST | /api/media | Upload media file | | GET | /api/themes | List available themes | | PUT | /api/themes | Switch active theme | | GET | /api/analytics | Get blog analytics | | PUT | /api/settings | Update blog settings |

    Content Guidelines

    When writing blog posts: 1. Use Markdown format for content 2. Always provide a meaningful slug (URL-friendly, lowercase, hyphens) 3. Include an excerpt (1-2 sentences) for SEO 4. Add relevant tags as an array of strings 5. Set status to "draft" or "published" 6. Upload images via /api/media first, then reference the returned URL

    Security Notes

  • All API endpoints are protected by API key authentication
  • The API key must be passed in the X-API-Key header
  • Rate limiting is enforced (100 requests/minute by default)
  • All content is sanitized before storage to prevent XSS
  • Never expose the API key in public-facing code
  • πŸ’‘ Examples

    1. Initial Setup

    If the blog platform is not yet set up, run the setup script:

    cd /platform
    bash ../scripts/setup.sh
    

    The setup script will:

  • Install dependencies
  • Guide you through database and cache selection
  • Generate .env.local configuration
  • Run database migrations
  • Create an admin user
  • 2. Starting the Dev Server

    cd /platform
    npm run dev
    

    The blog will be available at http://localhost:3000.

    3. Writing & Publishing Posts

    Use the REST API to create posts. All API calls require the X-API-Key header.

    #### Create a Post

    curl -X POST http://localhost:3000/api/posts \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "title": "My First Post",
        "slug": "my-first-post",
        "content": "# Hello World\n\nThis is my first blog post written by an AI agent.",
        "excerpt": "A brief introduction to the blog.",
        "tags": ["introduction", "ai"],
        "status": "published",
        "coverImage": ""
      }'
    

    #### List Posts

    curl http://localhost:3000/api/posts \
      -H "X-API-Key: YOUR_API_KEY"
    

    #### Get a Single Post

    curl http://localhost:3000/api/posts/my-first-post \
      -H "X-API-Key: YOUR_API_KEY"
    

    #### Update a Post

    curl -X PUT http://localhost:3000/api/posts/my-first-post \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "title": "Updated Title",
        "content": "Updated content here."
      }'
    

    #### Delete a Post

    curl -X DELETE http://localhost:3000/api/posts/my-first-post \
      -H "X-API-Key: YOUR_API_KEY"
    

    4. Managing Themes

    The blog ships with 10 premium themes. To list and switch:

    # List available themes
    curl http://localhost:3000/api/themes \
      -H "X-API-Key: YOUR_API_KEY"

    Switch theme

    curl -X PUT http://localhost:3000/api/themes \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{"theme": "brutalism"}'

    Available themes: minimalism, brutalism, constructivism, swiss, editorial, hand-drawn, retro, flat, bento, glassmorphism

    5. Uploading Media

    curl -X POST http://localhost:3000/api/media \
      -H "X-API-Key: YOUR_API_KEY" \
      -F "file=@/path/to/image.jpg" \
      -F "alt=Description of the image"
    

    The response includes a url field you can use in post content.

    6. Viewing Analytics

    curl http://localhost:3000/api/analytics \
      -H "X-API-Key: YOUR_API_KEY"
    

    7. Updating Blog Settings

    curl -X PUT http://localhost:3000/api/settings \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "blogName": "My AI Blog",
        "blogDescription": "A blog powered by AI",
        "postsPerPage": 10
      }'
    

    8. Deployment

    #### Deploy to Vercel

    bash /scripts/deploy-vercel.sh
    

    #### Deploy to Cloudflare

    bash /scripts/deploy-cloudflare.sh