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 linkpost - •
lume/src/notes/<year>/<slug>.mdxfor notes - •
lume/src/talks/<year>/<slug>.mdxfor talks - •
lume/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.