원클릭으로
create-blog-post
Use this if the user wants to convert a blog post from Google Docs markdown to the format used in the Music Assistant website.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use this if the user wants to convert a blog post from Google Docs markdown to the format used in the Music Assistant website.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | create-blog-post |
| description | Use this if the user wants to convert a blog post from Google Docs markdown to the format used in the Music Assistant website. |
Convert a draft markdown file into a properly formatted Music Assistant blog post.
Place your draft blog post markdown file in the project root create-blog-post/ directory (e.g., /workspaces/music-assistant.io/create-blog-post/), then run:
/create-blog-post
Automates conversion of a draft markdown file with metadata into a production-ready Music Assistant blog post:
### **– Summary break / Read more –** to <!--more--><a> tags with target="_blank"src/content/docs/blog/ with Astro/Starlight front mattercreate-blog-post/ Directoryart.* - Hero/OG image (required, any common image format: .webp, .png, .jpg, .jpeg)image2.*, image3.*, etc. - Additional images (optional, any common image format)# Metadata
**Blog title:** Your Blog Title
**Author:** Author Name
**Publish date:** DD-MM-YYYY
**Tags:** release, announcement
**Social/OpenGraph title** (Usually same as the blog title, visibility mostly limited to 50-60 characters)**:**
A short title.
**Social/OpenGraph description** (120-158 characters):
Influences SEO ranking. Include the main keyword, describe what readers will find, and give them a clear reason to click.
# Blog notes/preparations
☝️ Any lines with the pointer emoji can be removed during processing
# Blog content
![][image1]
Your intro paragraph here...
### **– Summary break / Read more –**
Rest of content...
Notes:
![][image1] reference should appear at the start of the "# Blog content" section. This will be replaced with the art.webp hero image.### **– Summary break / Read more –** marker will be converted to <!--more-->Creates a production-ready blog post at:
src/content/docs/blog/YYYY/MM/DD/slug.md - The formatted blog postpublic/images/blog/YYYY/MM/DD/slug/art.webp - OG/hero image (moved from create-blog-post/)public/images/blog/YYYY/MM/DD/slug/image2.webp, image3.webp, etc. - Additional images (converted to WebP)Before doing anything else, strip out embedded base64 image data from the draft file using a shell command. Do not read the draft file before this step — the base64 data can make the file extremely large.
Google Docs markdown exports include image references like ![][image1] in the content body, with corresponding base64 definitions at the bottom of the file in the format:
[image1]: <data:image/png;base64,iVBORw0KGgo... (potentially megabytes of data)>
Run this sed command via the Bash tool to strip them in-place:
sed -i '/^\[image[0-9]*\]: <data:/d' "create-blog-post/draft.md"
![][image1] references in the content body are preserved — they will be replaced with proper image paths later### **– Summary break / Read more –** marker to <!--more-->Before processing images, ensure the cwebp tool is installed. If not, install it:
# Check if cwebp is available, install if missing
which cwebp || sudo apt-get install -y webp
Hero image (art.*):
art image in create-blog-post/ (any extension: .webp, .png, .jpg, .jpeg).webp, copy it to public/images/blog/YYYY/MM/DD/slug/art.webpcwebp -resize 1200 630 -q 85 input -o public/images/blog/YYYY/MM/DD/slug/art.webp-resize 1200 630 to ensure correctness![][image1] reference in "# Blog content" section with: <img src="/images/blog/YYYY/MM/DD/slug/art.webp" alt="Blog Title">style attribute) on image tags<p> tag)Additional images (if any):
image2.*, image3.*, etc. in create-blog-post/ (any extension: .webp, .png, .jpg, .jpeg)cwebp -resize 800 0 -q 85 input -o output.webp (the 0 for height preserves the aspect ratio).webp, still re-encode it with the resize: cwebp -resize 800 0 -q 85 input.webp -o output.webppublic/images/blog/YYYY/MM/DD/slug/image2.webp, image3.webp, etc.External links (different domains/subdomains):
<a href="URL" target="_blank" rel="noopener">text</a>Internal links (www.music-assistant.io and music-assistant.io only):
[text](/path) (strip the domain, always use relative paths)## **Title** → ## Title)#), demote all headings one level (content should start at H2)###) subheadings that appear directly under H2 section headings to bold text instead (e.g., ### Subtitle → **Subtitle**)src/content/docs/blog/YYYY/MM/DD/slug.mdhead (OG image meta tags)titledescriptioncover (image path and alt)excerptdate (ISO 8601 format: YYYY-MM-DDT00:00:00.000Z)authors (YAML list — must match a key in src/authors.mjs)tags (YAML list)<!--more--> tag after first paragraph---
head:
- tag: meta
attrs:
property: og:image
content: /images/blog/YYYY/MM/DD/slug/art.webp
- tag: meta
attrs:
property: og:image:alt
content: "Social/OpenGraph title"
title: "Blog Title"
description: "Social/OpenGraph description"
cover:
image: /public/images/blog/YYYY/MM/DD/slug/art.webp
alt: "Social/OpenGraph title"
excerpt: "First paragraph of blog content"
date: YYYY-MM-DDT00:00:00.000Z
authors:
- authorname
tags:
- release
- announcement
---
create-blog-post/:
draft-release-update.md - Your draft fileart.webp - OG/hero image (or art.png, art.jpg, etc.)image2.png, image3.png - Additional images (any common image format)/create-blog-postThis would create:
src/content/docs/blog/2026/01/13/release-update.mdpublic/images/blog/2026/01/13/release-update/art.webppublic/images/blog/2026/01/13/release-update/image2.webp, image3.webp (if additional images exist)Image references:
![][image1] (at start of "# Blog content" section) → Output: art.webp hero image (1200x630, OG image)![][image2] → Look for image2.* (any format), convert to image2.webp (max 800px wide)![][image3] → Look for image3.* (any format), convert to image3.webp (max 800px wide).webp, .png, .jpg, .jpeg) — all are converted/re-encoded to .webpRequirements:
cwebp tool is required — the skill will auto-install it via sudo apt-get install -y webp if not already presentContent processing:
### **– Summary break / Read more –** to <!--more-->Output format:
slug.mdsrc/content/docs/blog/YYYY/MM/DD/slug.mdpublic/images/blog/YYYY/MM/DD/slug/Link handling:
www.music-assistant.io and music-assistant.io links must be converted to relative paths (e.g., https://www.music-assistant.io/foo → /foo)<a> tags with target="_blank" rel="noopener"After the blog post has been created, output a summary to the user covering:
Metadata:
src/authors.mjs), date, tagsImages:
Content transformations:
Proposed text changes (requires user approval):