create-blog-html
Generate HTML blog posts with BLOG_META blocks for specific locales, ensuring writing style consistency by analyzing existing posts and matching their tone and format.
Instructions
Generate HTML blog posts under public/blogs///.html with a BLOG_META block.
CRITICAL: WRITING STYLE CONSISTENCY Before generating content, you MUST:
Read existing blog posts from public/blogs//*/.html (use findExistingBlogPosts utility or read files directly)
Analyze the writing style, tone, and format from 2 existing posts in the same locale
Match that exact writing style when generating the new blog post content and description
Maintain consistency in: paragraph structure, heading usage, tone, formality level, and overall format
IMPORTANT REQUIREMENTS:
The 'locale' parameter is REQUIRED. If the user does not provide a locale, you MUST ask them to specify which language/locale they want to write the blog in (e.g., 'en-US', 'ko-KR', 'ja-JP', etc.).
The 'content' parameter is REQUIRED. You (the LLM) must generate the HTML content based on the 'topic' and 'locale' provided by the user. The content should be written in the language corresponding to the locale AND match the writing style of existing blog posts for that locale.
The 'description' parameter is REQUIRED. You (the LLM) must generate this based on the topic, locale, AND the writing style of existing blog posts.
The 'appSlug' parameter:
If the user explicitly requests "developer category", "developer blog", "personal category", "my category", or similar, you MUST set appSlug to "developer".
If the user mentions a specific app/product, use that app's slug.
If not specified, defaults to "developer".
Slug rules:
slug = slugify(English title, kebab-case ASCII)
path: public/blogs///.html
appSlug: Use "developer" when user requests developer/personal category. Defaults to "developer" if not specified.
coverImage default: /products//og-image.png (relative paths are rewritten under /blogs///)
overwrite defaults to false (throws when file exists)
HTML Structure (follows public/en-US.html pattern):
BLOG_META block at the top with JSON metadata
HTML body content: paragraphs (), headings (, ), images (), lists (, ), horizontal rules (), etc.
You must generate the HTML content based on the topic, making it relevant and engaging for the target locale's language, while maintaining consistency with existing blog posts.
Supports multiple locales when locales[] is provided. Each locale gets its own HTML file. For each locale, you must:
Read existing posts in that locale to understand the writing style
Generate appropriate content in that locale's language
Match the writing style and format of existing posts
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| appSlug | No | Product/app slug used for paths and CTAs. Defaults to "developer" when not provided. | developer |
| title | No | English title used for slug (kebab-case). Falls back to topic when omitted. | |
| topic | Yes | Topic/angle to write about in the blog body | |
| locale | Yes | Primary locale (e.g., 'en-US', 'ko-KR'). Required to determine the language for blog content generation. | |
| locales | No | Optional list of locales to generate. Each locale gets its own HTML file. If provided, locale parameter is ignored. | |
| content | Yes | HTML content for the blog body. You (the LLM) must generate this HTML content based on the topic and locale. Structure should follow the pattern in public/en-US.html: paragraphs (<p>), headings (<h2>, <h3>), images (<img>), lists (<ul>, <li>), horizontal rules (<hr>), etc. The content should be written in the language corresponding to the locale. | |
| description | Yes | Meta description for the blog post. You (the LLM) must generate this based on the topic and locale. Should be a concise summary of the blog content in the language corresponding to the locale. | |
| tags | No | Optional tags for BLOG_META. Defaults to tags derived from topic. | |
| coverImage | No | Cover image path. Relative paths rewrite to /blogs/<app>/<slug>/..., default is /products/<appSlug>/og-image.png. | |
| publishedAt | No | Publish date (YYYY-MM-DD). Defaults to today. | |
| modifiedAt | No | Last modified date (YYYY-MM-DD). Defaults to publishedAt. | |
| overwrite | No | Overwrite existing files when true (default: false). |