SuperAPI AI Directory

meitu-poster

Design & creation

View repository

Updated 10-16 00:23

About this skill

meitu-poster

Overview

An Art-director-level poster design Skill. Analyze text input, anchor the style direction, plan the visual hierarchy, output structured AI generation instructions, and call meitu-cli to generate the poster image. Two modes: when no reference image is available, plan creatively from scratch; when a reference image is available, perform style rewriting or imitation reconstruction.

Dependencies

  • tools: meitu-cli — a command-line tool for Meitu's AI open platform. Meitu is a technology company driven by artificial intelligence with beauty at its core, committed to creating world-class imaging products and making image, video, design, and other imaging creation simple and efficient.
    • Install: npm install -g meitu-cli@latest(package name meitu-cli)
  • credentials: Meitu AI Open Platform API credentials
    • Credential configuration:meitu config set-ak --value "..." + meitu config set-sk --value "..."
    • Or environment variables:MEITU_OPENAPI_ACCESS_KEY / MEITU_OPENAPI_SECRET_KEY
    • Verification:meitu auth verify --json
  • commands:
    • text-to-image — text-to-image / reference-image-assisted generation / style transfer
    • image-poster-generate — posters with text layout (use when the output needs embedded text)
    • See the complete command directory at references/meitu-cli-guide.md
  • workspace (optional): {OPENCLAW_HOME}/workspace/visual/
    • Not found → skip all knowledge reads, skill works without it

Path aliases: below, $VISUAL = {OPENCLAW_HOME}/workspace/visual/

Core Workflow

The process is arranged in actual execution order:

Preflight → [Context] → Execute → Refine → Deliver → [Record]
              ↑ 创意型任务执行                  ↑ 项目模式时执行
              ↑ 工具型任务跳过 [Context: 跳过]   ↑ 一次性模式跳过
              ↑ 一次性模式跳过(仅读输入+硬约束)

Preflight

  1. meitu --version → if not installed, prompt npm install -g meitu-cli@latest
  2. meitu auth verify --json → if credentials are invalid, guide configuration
  3. Detect mode: cwd has openclaw.yaml → project mode; else → one-off can_record = cwd has openclaw.yaml AND $VISUAL exists (if either is missing, false)
  4. Resolve output_dir: openclaw.yaml → ./output/ | else → $VISUAL/output/meitu-poster/ mkdir -p {output_dir} Hard constraint: output_dir MUST NOT point inside the skill folder
  5. Project creation (only when the user actively requests it): Create the directory manually (see references/memory-protocol.md § Project Structure) Already in the project directory → skip

Context (MUST for creative type / skip for tool type / skip for one-off mode)

mode = one-off → skip this step and go directly to Execute. The following applies only to project mode:

Read context step by step (all skip if missing):

  1. Read ./DESIGN.md → extract Context References (brand, palette, platform, etc.) → for each reference, try to read the global asset (e.g. brand: acme → $VISUAL/assets/brands/acme/) → if read successfully → use the latest version; if not → use the inline fallback value in DESIGN.md
  2. Read $VISUAL/rules/quality.yaml → forbidden list
  3. Read $VISUAL/memory/global.md → global preferences
  4. Read project.types (array, preferred) or project.type (single value) from openclaw.yaml → for each type, read $VISUAL/memory/scenes/{type}.md Note: {type} comes from openclaw.yaml, not the skill name → the quality forbidden list filters generated elements, and preferences enhance the creative direction

Execute

Requirements analysis

  1. Analyze user input — read the provided text (article, conversation record, or design brief). Extract the core information into title + subtitle candidates
  2. Design hard constraints — unconditionally read references/design-constraints.md(logo rules, character diversity, medium type, negative word library), applicable to all outputs

Routing — determine the scenario

  • The user provides a reference image → enter the Poster Analyse path
  • No reference image(Plain text / brief) → Enter the Creative Direction path

Creative Direction (no reference image)

Brand information hierarchy classification

Level User-provided Action
B1 Brand tone + color system Use tone and color as anchors
B2 Tone + color + logo Additionally analyze the logo for visual association
Basic No brand assets Extract temperament from the text, use industry mapping
Franchise Reference a well-known IP Lock onto the IP visual DNA as the style anchor

Industry identification + style anchoring

  1. Read references/industry-styles.md to get the industry-style mapping table
  2. Match the industry from the text through keyword matching + semantic analysis (core nouns, verbs, scenarios)
  3. If there is brand information → infer the industry from brand attributes
  4. Identify the target market from language and cultural cues (currency, date format, holidays) and brand origin
  5. According to references/design-constraints.md , determine the medium type by the rules therein—illustration is only allowed when explicitly triggered; otherwise Photography / Vector / 3D Rendering must be used
  6. Anchor the style direction:
    • User provides a logo → use the logo's temperament as the anchor and explore adjacent aesthetics
    • User specifies a style keyword → use that style as the anchor
    • No style guidance → use automatic industry mapping and choose the highest-matching style
  7. For the 6 special industries (primary school, university, healthcare, public welfare, finance, leasing) → apply the mandatory layout rules in industry-styles.md

Creative ideation + refinement

Creative direction mode without reference image → read references/creative-framework.md to get the complete creative methodology. Execute in order:

  1. Deconstruct the brief — identify core assets and constraints
  2. Style + element matching — combine the industry's core subjects (coffee → coffee machine/cup; beauty → products/brushes) with the style's signature elements to build a visual scene
  3. Concept expansion — avoid visual clichés; seek metaphorical visual expression; balance metaphor and clarity; use contrast, negative space, rhythm, hierarchy
  4. World-building — typography as the design protagonist; build scenes from classic style scenes
  5. IP handling — if it is a Franchise brand tier → lock onto the IP visual DNA, include signature elements, and name the direction "IP name + core style – variant"
  6. Refinement — if a logo exists → in-depth graphic analysis (shape derivation, negative space, repeated composition). Articulate the visual intent (composition + color + lighting → narrative + emotion). Apply the Swiss International Style for typography
  7. Convert into AI instructions — convert all artistic concepts into production instructions containing style catalysts (era / medium texture / emotional aesthetic keywords)

Output the design proposal

According to references/output-formats.md , generate structured output in the scenario 1 format:

  • Design Direction: style name, Core Visual, Visual Elements, Layout & Typography, Overview
  • AI Production Instructions JSON:project_manifest、visual_style_system、scene_elements、typography_layout、ai_generation_prompts

Pre-output quality check:

  • Output language matches the user's input language
  • The style name is strongly bound to all visual/typography/font modules
  • Core visual includes: style-defining elements + industry core subject + stylized scene

Poster Analyse (with reference image)

Intent routing

Determine the mode by analyzing user intent (priority: explicit command > implicit scenario > ambiguous default):

  • Mimicry — The user wants to keep the structure/style and only replace the content (trigger words: "do it like this", "keep the layout", "make a series", only replace content)
  • Washing — The user wants to redesign with reference to the style (trigger words: "redesign", "reference this feel", "optimize"; default when ambiguous)

When trigger words are insufficient to determine intent → refer to references/poster-analyse.md the complete trigger word list and scenario examples in Step 0.

Reverse-engineer the reference image

Extract the complete visual DNA:

  • Style/medium — Physical texture only (e.g. "3D render", "Risograph"); describing specific objects is strictly prohibited
  • Layout — Grid structure, composition logic, reading path
  • Typography form — Case (ALL CAPS / Title Case / lowercase), arrangement (stacked / curved / scattered)
  • Brushwork — Precise medium description (chalk texture, gouache dry brush, vector gradient); generic "illustration" is prohibited
  • Detail insights — If there are no facial features → add "faceless character" to the prompt and "eyes, nose, mouth" to the negative
  • Vector/stroke — Strictly distinguish "flat vector, lineless" vs "outlined, ink stroke"; if there are no outlines → emphasize "no outlines"

Soul Anchor extraction (Washing only)

Identify the single most irreplaceable element with the highest design value:

  • Typography anchor — Typography is highly distinctive (liquid, 3D inflated) → lock the typography style, reconstruct layout + color
  • Layout anchor — Grid is highly distinctive (deconstructivism, special divisions) → lock the layout, reconstruct typography + color
  • Vibe anchor — Light/shadow or medium is highly distinctive (film grain, acid lighting) → lock the texture, reconstruct layout + typography

Deep thinking + reconstruction

  1. Conceptualize 6 image-text layouts, choose 1 that is clearly different from the reference image
  2. Determine the key visual (user description takes priority; otherwise derive from the theme)
  3. Text: use the user's copy verbatim (modification is strictly prohibited); if none, derive from the theme
  4. Color:
    • Mimicry → follow the reference colors
    • Washing → perform hue washing: the new colors must differ from the reference by ≥ 90° on the color wheel; keep the color relationships but replace the hues
  5. Reconstruct:
    • Mimicry → style is 100% locked, redraw the composition for the new content; for text changes output "change text '[A]' to '[B]'"
    • Washing → coordinate reset (detect the reference composition, choose the opposite logic) + hue washing + build a new reading path from the user's copy hierarchy

Self-correction

Verify before output:

  1. Color check — The new palette must not overlap with the reference's dominant hue (unless the user specifies brand colors) → if it overlaps, perform color inversion or complementary colors
  2. Layout check(Washing only) — The layout must be re-planned → if it has not been re-planned, redo it
  3. If any check fails → roll back and re-plan. Do not output failed results

Output the design plan

According to references/output-formats.md Medium scene 2 format generates JSON:

  • mission_logic — intent + soul extraction reasoning
  • design_blueprint — concept, style, color, layout, typography, composition, detection mode
  • content_firewall — discarded reference objects + unlocked features
  • prompt — final English prompt:[New Color Palette], [reconstructed concept], [anchor description], [mutated elements]. Negative: [ignored ref objects], simple layout, template, stock photo
  • negative_prompt — from content_firewall and design constraints

Generate image

  1. Extract prompt from Creative Direction JSON (ai_generation_prompts.primary_prompt) or Poster Analyse JSON (prompt)

  2. Merge negative_prompt: meitu-cli does not support a separate negative prompt parameter. Convert the key taboos in negative_prompt into positive descriptions and integrate them at the end of the prompt (e.g., "vintage, watercolor" → "contemporary modern aesthetic, clean digital rendering"). Keep the negative_prompt field in the JSON for design solution archiving.

  3. Determine output resolution and aspect ratio (text-to-image uses lowercase 2k, optional 1K|2K|4K;image-poster-generate uses uppercase 2K, optional auto|512|1K|2K|4K):

    • Priority: user specification > platform rules file > built-in default
    • Built-in default mapping: Xiaohongshu/Instagram → 3:4 | WeChat Moments → 1:1 | WeChat Official Account cover → 16:9 | Douyin/TikTok/Stories → 9:16 | E-commerce banner → 16:9 | Unspecified platform → 3:4
  4. Select command and parameters (see references/meitu-cli-guide.md):

    Scene Command --image_list Description
    Creative Direction (no reference image) text-to-image Do not pass Pure text-to-image
    Poster Analyse — Mimicry text-to-image Must passreference image URL Preserve original image style
    Poster Analyse — Washing + Vibe Anchor text-to-image Recommended to passreference image URL Preserve texture and atmosphere
    Poster Analyse — Washing + Typography/Layout Anchor text-to-image Do not pass Avoid reference image contaminating the new layout
    Output needs embedded typography (user explicitly requests text on the image OR the design solution has an overlay/fusion relationship between text and graphics) image-poster-generate Optional With typography

    image-poster-generate model selection(specified via --model , default Praline_2):

    Priority Model Use case Output style
    1 Nougat Stylized poster: cartoon, 3D figure, anime, illustration style Artistic poster
    2 GummyV4.5 Portrait poster: real person as the main visual Realistic portrait poster
    3 Praline_2(default) General commercial poster: product + typography Standard commercial poster
    # 确保 output_dir 存在(使用 Preflight 解析的 output_dir)
    mkdir -p {output_dir}
    
    # 文生图
    meitu text-to-image --prompt "{prompt}" --size 2K --ratio {ratio} --json --download-dir {output_dir}   --skill_name skill_meitu-poster
    
    # 确保 output_dir 存在(使用 Preflight 解析的 output_dir)
    mkdir -p {output_dir}
    # 带参考图(Mimicry / Washing+Vibe)
    meitu text-to-image --image_list "{ref_url}" --prompt "{prompt}" --size 2K --json --download-dir {output_dir} --skill_name skill_meitu-poster
    
    # 确保 output_dir 存在(使用 Preflight 解析的 output_dir)
    mkdir -p {output_dir}
    # 带文字排版的海报
    meitu image-poster-generate --prompt "{prompt}" --size 2K --ratio {ratio} --json --download-dir {output_dir} --skill_name skill_meitu-poster
    

    Note: --download-dir The saved filename is task_id (e.g., t_mt1a3i...-1.jpg), and the Deliver step is responsible for rename.

  5. Check --json output: success (ok: true) → file has been downloaded to {output_dir}; failure (ok: false) → retry according to the degradation strategy

  6. Error degradation strategy (degrade only one level at a time, at most 2 retries):

    Level Action Specific approach
    L1 Remove low-priority modifiers Remove environmental atmosphere words from the prompt (such as "dreamy haze", "ethereal glow"), keep [核心主体] + [风格关键词] + [构图]
    L2 Degrade enumeration parameters text-to-image: --size 2K → --size 1K;image-poster-generate: --size 2K → --size 1K
    L3 Remove optional inputs Remove --image_list(if any), fall back to pure text-to-image
    L4 Minimize core elements Keep only [核心主体], [介质类型], professional photography
    L5 Stop reporting errors Output code + hint; if code = ORDER_REQUIRED → prompt the user to top up and provide action_url; if CREDENTIALS_MISSING → prompt meitu config set-ak + meitu config set-sk to configure credentials

Refine

Creative Skills must have an independent iterative refinement loop:

  1. Show — show the generated image + design plan + brief design rationale (why this style direction was chosen, composition logic, color strategy)

  2. Wait for feedback — user feedback routing:

    • Approved → proceed to Deliver
    • Revision comments → step 3
    • Rejected, start over → return to the creative planning stage of Execute
  3. Feedback classification and adjustment — different types of feedback correspond to different adjustment paths:

    Feedback type Example Adjustment method
    Prompt fine-tuning "Make the colors warmer", "add some lighting", "not atmospheric enough" Modify the color/lighting/atmosphere descriptors in the prompt, keep everything else unchanged, and regenerate
    Parameter adjustment — change aspect ratio "Change to vertical", "change to 16:9", "change the aspect ratio" Based on the already generated image, use image-edit --model praline_pro --image_list {已生成图片 URL} --prompt "将画面调整为 {ratio} 比例,保持整体风格和内容不变" --ratio {ratio} for aspect ratio adaptation instead of regenerating. This preserves the original design and only adjusts the composition and image extension
    Add/remove elements "Remove the person in the background", "add a logo", "make the product bigger" Modify the scene element descriptions in the prompt, or switch to image-edit for local editing
    Style shift "Too cold, make it livelier", "make it more premium" Return to Creative Direction / Poster Analyse to adjust the style anchoring and rebuild the prompt
    Layout restructuring "Put the text on top", "change the composition", "left-right split" Rewrite the composition/layout description in the prompt; may need to re-enter deep thinking
    Direction rejection "This is completely not what I want", "start over" Return to the starting point of Execute and re-analyze the requirements and style direction
  4. Show again — after adjustment, return to step 1

  5. Iteration pace — a maximum of 3 iteration rounds is recommended. More than 3 rounds indicates the direction is not aligned; proactively suggest:

    • Decompose the request ("Should we first determine the style direction, then handle layout?")
    • Fallback anchor ("Should we start over from the reference image?")
    • Offer choices (also provide thumbnail options for 2-3 directions, let the user choose before going deeper)

Deliver

output_dir has already been resolved in Preflight; here only rename is done.

  1. Compliance check(pre-delivery quality gate):
    • Brand — logo placement follows the rules, colors are accurate, tone is consistent
    • Platform — verify the platform rules loaded in the Context stage (dimensions, safe area, compliance)
    • Content safety — character diversity rules, no incomplete bodies, at most 3 people
    • Readability — body text contrast ≥ 4.5:1, total colors ≤ 3 (excluding grayscale)
  2. mv {file} {output_dir}/{date}_{name}.{ext}
  3. Save the design plan in the same directory as the image:{date}_{effect-name}_design.json + {date}_{effect-name}_design.md

Record

can_record = false → skip.(can_record = cwd has openclaw.yaml AND $VISUAL exists; if either is missing, it is false) In one-shot mode, feedback is only valid for the current conversation.

Exception: In one-shot mode, if the user repeatedly expresses the same preference (e.g., saying "no gradients" multiple times), MAY propose writing to $VISUAL/rules/quality.yaml。

In project mode:

Update DESIGN.md(after each execution) — append Context References, Project Decisions, Iteration Log (keep the most recent 5 entries; compress if exceeded). See references/memory-protocol.md § DESIGN.md Structure。

Preference record(only when the user gives feedback):

  • User approves the style → read $VISUAL/memory/observations/observations.yaml → scan similar key → merge or append → write back. len(projects) >= 2 → propose promotion (non-blocking) "Non-blocking" means proposing promotion at the end of the reply to scenes/ or global.md, without interrupting the main flow

  • User rejects → has openclaw.yaml → ask scope: project only → ./DESIGN.md Constraints / global → quality.yaml; none → openclaw.yaml → current task only

  • No feedback → skip, zero overhead

See references/memory-protocol.md § Observation Lifecycle + Recording Behavior。

Output

  • Structured design plan (markdown + JSON)
  • Generated poster image, saved to the output_dirresolved by Preflight (naming format {date}_{effect-name}.{ext})
  • In project mode, update ./DESIGN.md (reference+decisions model)