| name | blogpost-creator |
| description | Create new posts using the hydrate command. |
| allowed-tools | Read, Grep, Glob, WebFetch |
Blog Post Creator
Create new blog posts for Xe's site using the hydrate command.
Usage
Invoke this skill when you want to create a new blog post. The skill will prompt you for:
- Post type: blog, linkpost, note, talk, or xecast
- Title: The title of your post (for linkposts, can auto-fetch from URL)
- Description: A brief description/summary (for linkposts, can auto-fetch from URL)
- Link URL: (required for linkposts) The URL this post should redirect to
- Publication date: (optional, for linkposts can auto-extract from the page, defaults to today if not found)
- Custom slug: (optional, for linkposts will auto-extract from URL basename if not provided)
What it does
- For linkposts: Extracts slug from URL basename if no custom slug provided (e.g., https://example.com/blog/my-post becomes "my-post")
- For other post types: Generates a URL-friendly slug from your title (or uses your custom slug)
- For linkposts: Can auto-fetch title, description, and publication date from the provided URL
- Validates that linkposts have a URL provided (prompts if missing)
- Runs
go run ./cmd/hydrate <kind> <slug>with the appropriate parameters - For linkposts: Updates the
redirect_tofield in the frontmatter with the provided URL - For linkposts: Adds fetched summary to the post body if available
- Opens the created file in VS Code for editing
- Shows you the file location for reference
File structure
Blog posts are created in:
lume/src/blog/<year>/<slug>.mdxfor blog and linkpostlume/src/notes/<year>/<slug>.mdxfor noteslume/src/talks/<year>/<slug>.mdxfor talkslume/src/xecast/<year>/<slug>.mdxfor xecast
Frontmatter templates
Each post type has its own frontmatter template:
Blog posts include hero image configuration:
---
title: ""
desc: ""
date: YYYY-MM-DD
hero:
ai: ""
file: ""
prompt: ""
social: false
---
Link posts include a redirect URL:
---
title: ""
date: YYYY-MM-DD
redirect_to: "https://example.com"
---
Other types (notes, talks, xecast) have simpler frontmatter:
---
title: ""
desc: ""
date: YYYY-MM-DD
---
Linkpost Special Features
Linkposts have enhanced functionality:
Automatic slug extraction: If no custom slug is provided, the skill will extract the basename from the URL (e.g.,
https://example.com/blog/my-postbecomesmy-post)Auto-fetching content: The skill can automatically fetch the webpage to extract:
- The page title (used as the post title)
- A summary/description (added to the post body)
- The publication date (used as the post date, defaults to today if not found)
- This saves time and ensures accurate representation of the linked content
Use the extract-meta.js file in this folder to extract meta-information from webpages:
node extract-meta.js <url>
- URL handling: The skill handles redirects and will follow them to get the final content for title/description extraction
Example Linkpost Workflow
When creating a linkpost with a URL like https://anubis.techaro.lol/blog/2025/file-abuse-reports:
- Skill detects it's a linkpost with a URL
- Extracts slug "file-abuse-reports" from URL basename
- Fetches the webpage to get:
- The actual title: "Taking steps to end traffic from abusive cloud providers"
- A summary of the content for the post body
- The publication date from the page (e.g., "2025-01-15")
- Creates the post with auto-generated slug, fetched title, and extracted date
- Adds the summary to the post body for context
- Updates the redirect_to field with the provided URL
Date Extraction Details
The skill will look for publication dates in various formats:
- Meta tags:
<meta property="article:published_time" content="2025-01-15"> - JSON-LD structured data:
"datePublished": "2025-01-15" - HTML5 semantic elements:
<time datetime="2025-01-15"> - Common date patterns in the page content
- URL patterns: Extracts date from URL structure like
/blog/2025/my-post
If no date is found, it defaults to today's date.