Blog Polish Zhcn Images
Polish a technical blog draft into an 1000–1200 word, 4-5 section zh-CN article, preserve technical terms/code, and generate consistent hero + per-section im...
Description
name: blog-polish-zhcn-images description: Polish a technical blog draft into an 1000–1200 word, 4-5 section zh-CN article, preserve technical terms/code, and generate consistent hero + per-section image prompts when the user asks to polish and translate a blog with images. author: Jeff Yang version: 1.0.6 tags: [openclaw, clawhub, blog, polish, translate, zh-cn, markdown, images, prompts] metadata: openclaw: requires: [] platforms: ["linux", "darwin"] env: [] inputSchema: type: object properties: draftPath: type: string description: Path to the draft markdown. Defaults to ~/.openclaw/workspace/contentDraft/latestDraft.md outputDir: type: string description: Directory to save outputs. Defaults to ~/.openclaw/workspace/contentPolished/ subject: type: string description: Short subject slug used in output filename (e.g. openclaw-skills). If omitted, infer from the draft title. style: type: string description: Visual style phrase reused for ALL images (e.g. "clean flat vector illustration, minimal isometric"). background: type: string description: Background phrase reused for ALL images (e.g. "white background with subtle grid"). aspectRatioHero: type: string description: Aspect ratio for hero image (e.g. "16:9 horizontal"). aspectRatioSection: type: string description: Aspect ratio for section images (e.g. "4:3"). required: [] outputSchema: type: object properties: polishedPath: type: string description: Path to the final polished markdown file. imagePaths: type: array description: Paths of generated images (or intended filenames if only prompts were produced). imagePrompts: type: array description: Single-line prompts (hero + per section), same order as imagePaths. workflow:
-
name: init description: Resolve defaults and create timestamp run: | draftPath="${input_draftPath:-$HOME/.openclaw/workspace/contentDraft/latestDraft.md}" outputDir="${input_outputDir:-$HOME/.openclaw/workspace/contentPolished}" mkdir -p "$outputDir" ts=$(date +"%H%M") echo "Resolved paths:" echo " draftPath=$draftPath" echo " outputDir=$outputDir" echo " timestamp=$ts" save_state draftPath outputDir ts
-
name: read_draft description: Read the draft content run: | draftPath=$(load_state draftPath) content=$(cat "$draftPath") save_state content
-
name: polish_and_translate description: Simulate polishing and translation to zh-CN run: | outputDir=$(load_state outputDir) ts=$(load_state ts) content=$(load_state content) polished_content="## Polished & Translated (zh-CN)\n$content\n\n(translation simulated)" polishedPath="$outputDir/${ts}-polished.md" echo -e "$polished_content" > "$polishedPath" save_state polishedPath
-
name: generate_image_prompts description: Create hero and per-section image prompts run: | outputDir=$(load_state outputDir) ts=$(load_state ts) imagePaths_json=$(printf '%s\n'
"$outputDir/${ts}-main.png"
"$outputDir/${ts}-section1.png"
"$outputDir/${ts}-section2.png"
| jq -R . | jq -s .) imagePrompts_json=$(printf '%s\n'
"Hero of blog: minimal isometric tech scene in clean vector style, 16:9"
"Section 1: developer editing markdown in flat vector, white grid background, 16:9"
"Section 2: translation workflow diagram, clean flat vector style, 16:9"
| jq -R . | jq -s .) save_state imagePaths_json imagePrompts_json -
name: finalize description: Emit final structured output for OpenClaw collector run: | polishedPath=$(load_state polishedPath) imagePaths_json=$(load_state imagePaths_json) imagePrompts_json=$(load_state imagePrompts_json) jq -n
--arg polishedPath "$polishedPath"
--argjson imagePaths "$imagePaths_json"
--argjson imagePrompts "$imagePrompts_json"
'{ polishedPath: $polishedPath, imagePaths: $imagePaths, imagePrompts: $imagePrompts }'
Blog Polish (zh-CN) + Image Pack
This skill takes a technical blog draft and turns it into a publish-ready package:
- Polish: spelling/grammar fixes + clarity improvements
- Structure: reorganize into 3–4 sections total (not more)
- Length: final content 1000–1200 words
- Translation: English → Simplified Chinese, while preserving:
- technical terms like
skills,plugin,openclaw,clawhub - code blocks and commands (no translation inside code fences)
- inline code spans (backticks) as-is unless obviously wrong
- technical terms like
- Images: generate a hero prompt + one prompt per section, all in the same style/tone
- Save: write everything to
~/.openclaw/workspace/contentPolished/usingyymmddhhmm-*naming
When to Use This Skill
When the user asks to polish a technical blog, translate it to Simplified Chinese, and create images, you MUST use this skill and follow the workflow below step by step.
Use this when:
- You already have a draft at
~/.openclaw/workspace/contentDraft/latestDraft.md - You want a polished zh-CN version without losing technical accuracy
- You want consistent illustrations for the article
Defaults
If not provided via input:
draftPath:~/.openclaw/workspace/contentDraft/latestDraft.mdoutputDir:~/.openclaw/workspace/contentPolished/style:clean flat vector illustration, minimal isometric, software-engineering diagram vibebackground:white background with subtle gridaspectRatioHero:16:9 horizontalaspectRatioSection:16:9 horizontal
Workflow Step-by-Step
Step 0 — Resolve Paths and Timestamp
- Resolve defaults:
draftPath = input.draftPath || "~/.openclaw/workspace/contentDraft/latestDraft.md"outputDir = input.outputDir || "~/.openclaw/workspace/contentPolished/"
- Create a timestamp prefix
tsin yymmddhhmm format (Linux/macOS):
date +"%y%m%d%H%M"
- Ensure output dir exists (shell is fine):
mkdir -p "~/.openclaw/workspace/contentPolished/"
Step 1 — Read Draft Exactly
Read the draft content in full before editing anything:
read_file --path {{draftPath}}
Step 2 — Extract Title, Topic, and Section Candidates
- Identify:
- Draft title (first
#heading; otherwise infer a short title) - Main topic and intended audience
- Draft title (first
- Plan a 3–4 section outline (including intro/conclusion counts as sections if they have headings):
- Prefer: short intro, 2–3 core sections, short wrap-up
- If the draft is long, merge similar paragraphs
- If the draft is messy, reorder paragraphs for a cleaner flow
Step 3 — Polish English (Meaning First)
Before translating, make sure the English content makes sense:
- Fix misspellings, grammar, punctuation
- Paraphrase confusing sentences
- Add missing connective tissue only where the meaning is unclear
- Do not reduce content (no big deletions)
Step 4 — Translate to Simplified Chinese (With Preservation Rules)
Translate the full draft into zh-CN with these hard rules:
- Keep code fences unchanged (commands/code stay exactly the same)
- Keep inline code (backticks) unchanged unless it contains an obvious typo
- Keep common technical terms in English (examples):
skills,plugin,openclaw,clawhub,cli,markdown,yaml
- If a technical term has a standard Chinese translation but the English term is common in your audience, keep the English term and (optionally) add a short Chinese clarification once on first use
Step 5 — Enforce Length (1000–1200 Words) Without Cutting Meaning
Target final length 1000–1200 words (counting Chinese words approximately by rough equivalence).
To fit without “reducing content”:
- Tighten redundancy (same idea repeated)
- Use shorter sentences
- Prefer combining adjacent sentences that restate the same point
Step 6 — Add Citations If You Introduce Outside Facts
If you add any information that is not clearly present in the draft:
- Add a short citation marker in text like:
[^1] - Add a footnotes section at the end:
## References
[^1]: Source title — URL
Step 7 — Generate Image Prompts (Hero + Per Section)
Create one single-line prompt for:
- Hero image (for the whole post)
- Each section (exactly one per section heading)
Use this strict ordering and keep the same style/tone across all prompts:
[Section role] of [topic]: [subject] doing [action], in [style], [angle/composition], [lighting/color], [level of detail], [background], [aspect ratio]
Constraints:
- No text in the image (prefer icons/arrows)
- Keep a consistent palette (neutral + one accent color)
- Keep prompts to a single line each
Step 8 — Save Outputs
- Decide
subject:subject = input.subject || slugify(title)(lowercase, hyphens)
- Write the polished markdown:
{{outputDir}}/{{ts}}-{{subject}}.md
- Determine image filenames:
- Hero:
{{ts}}-main.png - Per section:
{{ts}}-section1.png,{{ts}}-section2.png, ...
- Hero:
- Save:
- Write the polished
.mdfile viawrite_file - For images:
- If you have an image-generation tool available in your OpenClaw setup, generate and save the actual PNG/JPGs
- Otherwise: still create an
image-promptsblock inside the markdown and return the intended filenames (so you can generate them later)
- Write the polished
Output Format (What You Return)
Return:
polishedPathimagePaths(actual or intended)imagePrompts(single-line prompts in the same order)
Also print a short summary:
## Summary
- Sections: N
- Length: ~X words
- Translation: English → zh-CN (terms preserved)
- Images: 1 hero + N section prompts
Example Invocation
User says:
- “Polish my latest draft, translate to zh-CN, and make images.”
You do:
- Read from
~/.openclaw/workspace/contentDraft/latestDraft.md - Produce
~/.openclaw/workspace/contentPolished/26031214xx-openclaw-skills.md - Produce
26031214xx-main.png+26031214xx-section1.png...
Dependencies
None (pure Markdown in/out). Uses the same file read/write capability as your other skills.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!