Install
openclaw skills install nano-banana-korean-rendering비라틴 문자(한글, 일본어, 중국어 등)를 AI 이미지에 정확히 렌더링하는 스킬. Canvas 프리렌더링과 Gemini를 활용하여 텍스트 깨짐 없이 이미지를 생성합니다.
openclaw skills install nano-banana-korean-renderingAI 이미지 모델은 한글·한자·일본어 등 비라틴 문자를 직접 그리면 글자가 깨지거나 오타가 생깁니다. 이 스킬은 웹앱과 완전히 동일한 파이프라인을 제공합니다:
cd {baseDir} && node setup.mjs
canvas + @google/generative-ai npm 패키지 설치{baseDir}/fonts/에 준비| 변수 | 필수 | 설명 |
|---|---|---|
GEMINI_API_KEY | ⭐ 필수 | Gemini Flash(분석) + Gemini Image(생성) 모두에 사용 |
GEMINI_IMAGE_MODEL | 선택 | 이미지 생성 모델 (기본: gemini-3-pro-image-preview) |
pipeline전체 파이프라인을 한 명령어로 실행합니다:
node {baseDir}/render.mjs pipeline "욎홎 뙤앾뼡이라는 지역 축제 포스터 만들어줘" \
--output /tmp/final-image.png --no-base64
결과:
{
"detect": { "needsRendering": true, "primaryScript": "hangul", ... },
"analyze": { "texts": [...], "style": {...}, "reasoning": "..." },
"render": { "success": true, "outputPath": "/tmp/text-render-xxx.png", ... },
"generate": { "success": true, "outputPath": "/tmp/final-image.png", ... }
}
detect)node {baseDir}/render.mjs detect "사용자 프롬프트 전체"
needsRendering: false → 프리렌더링 없이 일반 이미지 생성 진행needsRendering: true → Step 2로 진행analyze)node {baseDir}/render.mjs analyze "욎홎 뙤앾뼡이라는 지역 축제 포스터 만들어줘"
Gemini Flash가 프롬프트를 분석하여:
GEMINI_API_KEY가 없으면 규칙 기반 fallback이 동작합니다.
render)analyze 결과를 그대로 render에 전달합니다:
node {baseDir}/render.mjs render \
--json '{"texts":[...],"style":{...}}' \
--output /tmp/rendered-text.png
또는 JSON 파일로:
node {baseDir}/render.mjs render --input /tmp/analysis.json --output /tmp/rendered-text.png
generate)프리렌더링된 텍스트 PNG를 Gemini에 인풋 이미지로 넣어서 최종 이미지를 생성합니다.
node {baseDir}/render.mjs generate \
--prompt "욎홎 뙤앾뼡이라는 지역 축제 포스터 만들어줘" \
--rendered /tmp/rendered-text.png \
--analysis '{"texts":[...],"style":{...}}' \
--output /tmp/final-image.png \
--no-base64
이 명령어는 내부적으로:
buildTextRenderFinalPrompt로 프롬프트를 구성 (텍스트 목록 + 스타일 + "텍스트를 다시 그리지 말고 그대로 사용하라" 지침)추가 참조 이미지가 있으면 --ref로 전달:
node {baseDir}/render.mjs generate \
--prompt "포스터 만들어줘" \
--rendered /tmp/rendered-text.png \
--ref /tmp/user-reference.jpg \
--output /tmp/final-image.png
| 언어 | sans-serif | serif | display | handwriting |
|---|---|---|---|---|
| 한국어 | Noto Sans KR | Noto Serif KR | Black Han Sans | Nanum Pen Script |
| 일본어 | Noto Sans JP | Noto Serif JP | Noto Sans JP | Noto Sans JP |
| 중국어 | Noto Sans SC | Noto Serif SC | Noto Sans SC | Noto Sans SC |
| 태국어 | Noto Sans Thai | — | — | — |
| 영어 | Inter | Georgia | Impact | Comic Sans MS |
| role | 용도 | 크기 비율 |
|---|---|---|
| headline | 메인 제목 | 1.0x |
| subheadline | 부제목 | 0.7x |
| body | 본문 | 0.5x |
| caption | 캡션/설명 | 0.4x |
| fontSize | 픽셀 |
|---|---|
| small | 24px |
| medium | 36px |
| large | 48px |
| xlarge | 72px |
이 스킬은 사용자 프롬프트에 다음 키워드가 포함되어 있을 때 자동 활성화됩니다:
텍스트, 글자, 문구, 로고, 워터마크, 브랜드, 글씨, 제목, 헤드라인,
text, logo, title, headline,
또는 프롬프트에 한글/한자/일본어/태국어/아랍어 등 비라틴 문자가 포함된 경우.
analyze로 LLM이 텍스트와 스타일을 추출하도록 한다render로 Canvas 프리렌더링 PNG를 생성한다generate로 프리렌더링 PNG를 Gemini에 인풋으로 넣어 최종 이미지를 생성한다render 단계를 건너뛰고 바로 generate하지 않는다analyze 결과에서 텍스트를 임의로 수정하지 않는다