Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Design & media
blog-polish-eng-images
Try itPolish a technical blog draft into an 1000–1200 word, 4-5 section en-US 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.
What it does
This skill takes a technical blog draft and turns it into a publish-ready package:
The skill document
Blog Polish (en-US) + 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
- 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, 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 en-US 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 — Enforce Length (1000–1200 Words) Without Cutting Meaning
Target final length 1000–1200 words (counting English 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 5 — 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 6 — 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 7 — 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
- Images: 1 hero + N section prompts
Example Invocation
User says:
- “Polish my latest draftand make images.”
You do:
- Read from
~/.openclaw/workspace/contentDraft/latestDraft.md - Produce
~/.openclaw/workspace/contentPolished/2603121010-openclaw-skills.md - Produce
2603121010-main.png+2603121010-section1.png...
Dependencies
None (pure Markdown in/out). Uses the same file read/write capability as your other skills.
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Site audit, content writing, and competitor analysis for organic search rankings.
More from j3ffyang
Browse all skillsPolish a technical blog draft into an 800–1000 word, 3–4 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.
Generate video from supplied image using Veo-3.0 async API. Gemini vision analyzes image, Veo creates video via predictLongRunning. All outputs in ~/.openclaw/workspace/tibetanProc/ with yymmddHHMM prefix.
Read a plain Markdown file (e.g. 260321_openclawConfig.md), generate header and section images using the default OpenClaw image model and API key from ~/openclaw/.env, create a new *_img.md copy with embedded PNGs, and move all generated images into an img/ folder next to the original file.
Polish a technical blog draft into a 1000–1200 word, 4–5 section en-US article, preserve technical terms/code, and generate one consistent hero image prompt.
Help the user draft, review, and polish blog posts in Markdown, keeping the original languages and informal tone.
Generate a daily AI news newsletter from fresh web sources. Use when the user asks for a current AI digest, AI news roundup, curated newsletter, or daily AI...