← Back to Skills Marketplace
j3ffyang

blog-image-embedder

by Jeff Yang · GitHub ↗ · v1.0.4 · MIT-0
cross-platform ⚠ suspicious
305
Downloads
0
Stars
0
Active Installs
5
Versions
Install in OpenClaw
/install blog-image-embedder
Description
Analyze polished zh-CN blog markdown, generate hero + per-section image prompts, embed image placeholders into the markdown, and save updated version.
README (SKILL.md)

Blog Image Embedder

Analyzes polished zh-CN markdown, generates consistent image prompts (hero + 1 per section), embeds [image:x] placeholders, saves illustrated version.

When to Use

Use after blog-polish-zhcn completes. Input is polishedPath from first skill. Triggers: "add images to my polished blog", "generate image prompts for sections".

Defaults

  • style: clean flat vector illustration, minimal isometric, software-engineering diagram vibe
  • background: default: white background with subtle grid
  • aspectRatioHero: 16:9 horizontal
  • aspectRatioSection: 16:9

Workflow Summary

  1. Read polished markdown from input.polishedPath
  2. Parse structure: Extract title + ## section headings (expect 3-4 sections)
  3. Generate prompts:
    • Hero: [Hero of {title}]: {topic summary}, {style}, {background}, 16:9
    • Section N: [Section {N} of {title}]: {section summary}, {style}, {background}, 16:9
  4. Embed placeholders: Insert \ \ [image:0]\ \ after title, \ \ [image:1]\ \ after first section, etc.
  5. Save: ${outputDir}/${ts}-illustrated.md
  6. Return: { illustratedPath, imagePrompts: [...], imagePaths: [...] }

Output Format

{
  "illustratedPath": "/home/jeff/.openclaw/workspace/contentPolished/2603142145-illustrated.md",
  "imagePrompts": ["Hero prompt...", "Section 1 prompt...", "Section 2 prompt..."],
  "imagePaths": ["2603142145-main.png", "2603142145-section1.png", "2603142145-section2.png"]
}
Usage Guidance
This skill appears to implement what it says, but the SKILL.md has several inconsistencies you should fix or verify before use: 1) Correct the imageModel default (it currently points to a text LLM 'openai/gpt-5-mini' rather than an image model). 2) Clean up the inputSchema (misplaced comments like 'ADD MISSING', mismatched imageWidth defaults/descriptions, and commented notes) so parameters are unambiguous. 3) Document where image-provider API keys should come from (the skill doesn't declare env vars, so it will rely on whatever credentials the agent/platform already provides). 4) Test the workflow to ensure polishedPath resolution and the image generation step behave as expected. If you cannot fix or verify these points, treat the skill as potentially unreliable and avoid running it on sensitive content until corrected.
Capability Analysis
Type: OpenClaw Skill Name: blog-image-embedder Version: 1.0.4 The skill contains potential shell injection vulnerabilities in SKILL.md within the 'resolve_latest_polished' and 'read_polished' workflow steps. Specifically, the use of unvalidated variables in shell commands like 'ls -t "$outputDir"/*.md' and 'cat "$polishedPath"' could allow for arbitrary command execution if the directory or filenames are manipulated. While the overall logic is consistent with the stated purpose of processing blog images, the lack of input sanitization in shell execution blocks represents a significant security risk.
Capability Assessment
Purpose & Capability
The name/description match the actions in SKILL.md: read a polished markdown, parse sections, create image prompts, embed placeholders, and save a new file. However some declared inputs and defaults are inconsistent with that purpose (see imageModel default set to 'openai/gpt-5-mini' which is a text LLM, and commented/misaligned schema fields). These inconsistencies look like sloppy authoring rather than an unrelated permission request.
Instruction Scope
Runtime steps only read markdown files from the given outputDir, parse them (LLM step), invoke an image generation step, insert placeholders, and write an illustrated markdown file. There are no instructions to read unrelated system files or transmit data to unexpected external endpoints. The only notable gaps: the skill doesn't declare where image API credentials come from and has minor logic ambiguity about how polishedPath is resolved.
Install Mechanism
This is instruction-only with no install spec or code files, so nothing is downloaded or written beyond the described read/write to the workspace. That is the lowest-risk install posture.
Credentials
The skill declares no required environment variables or credentials (which keeps its declared surface small). However it expects to call an image generation capability (image:true) and lists providers like 'openai/dall-e-3' and 'stability/ai-sdxl' — those providers require API credentials at the platform level. The SKILL.md does not document where those keys should be supplied or whether the agent will use global creds. Also the input schema has mismatched defaults and comments (e.g., imageWidth default and comment about hero being 1200), which could lead to incorrect image requests.
Persistence & Privilege
always is false and the skill is user-invocable only. It reads and writes files in the provided outputDir (expected for its purpose) and does not request persistent or cross-skill configuration changes.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install blog-image-embedder
  3. After installation, invoke the skill by name or use /blog-image-embedder
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.4
- Updated timestamp format in output filenames from `%Y%m%d%H%M` (e.g., 202306010930) to `%y%m%d%H%M` (e.g., 2306010930) for illustrated markdown output. - No other functional or workflow changes.
v1.0.3
- Fixed illustrated file timestamp format to use 4-digit year (%Y) for better sorting and clarity. - Version updated to 1.0.3.
v1.0.2
- Added imageModel input to allow choosing between "openai/gpt-5-mini", "openai/dall-e-3", and "stability/ai-sdxl" for image generation. - generate_prompts workflow step now uses the configured image model and related parameters. - Minor timestamp format change for illustrated markdown output files. - No changes to existing input/output schema, other fields, or workflow logic.
v1.0.1
- Default image quality changed from "high" to "medium". - Image generation workflow updated to use `${imageWidth}`, `${imageHeight}`, and `${imageQuality}` parameters for more flexible output. - Redundant and hardcoded prompt generation parameters removed in favor of configurable values from input schema. - No file changes—update is metadata and workflow only.
v1.0.0
- Initial release of blog-image-embedder. - Analyzes polished zh-CN blog markdown and generates consistent hero and section image prompts. - Embeds `[image:x]` placeholders into the markdown where images should appear. - Saves the updated, illustrated markdown and returns paths to the new file, generated prompts, and images. - Designed for use after running blog-polish-zhcn, supporting streamlined blog publishing workflows.
Metadata
Slug blog-image-embedder
Version 1.0.4
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 5
Frequently Asked Questions

What is blog-image-embedder?

Analyze polished zh-CN blog markdown, generate hero + per-section image prompts, embed image placeholders into the markdown, and save updated version. It is an AI Agent Skill for Claude Code / OpenClaw, with 305 downloads so far.

How do I install blog-image-embedder?

Run "/install blog-image-embedder" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is blog-image-embedder free?

Yes, blog-image-embedder is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does blog-image-embedder support?

blog-image-embedder is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created blog-image-embedder?

It is built and maintained by Jeff Yang (@j3ffyang); the current version is v1.0.4.

💬 Comments