Skip to main content
Glama

lore_webtoon_scene

Convert a novel scene into a single webtoon panel with dialogue in the original language. Guides direction, validation, and visual review to produce a final scene image.

Instructions

기본 웹툰 제작 경로. 소설 정본의 한 장면을 대사가 작품 언어 원문으로 들어간 이미지 한 장으로 만든다. 원작→영어 장면 연출→생성 전 검증→문자 포함 장면 이미지→실제 시각 검토 순서이며 컷 배치와 카메라는 이미지 모델에 맡긴다. 호출 전에 webtoon-discovery-interview로 원작 범위·화풍·참조·칸 수·이미지 모델을 사용자와 정한다. 서버는 이미지를 직접 생성하지 않는다: needs_scene_image일 때 jobs의 요청을 호스트가 사용자가 고른 경로(hostRequest=호스트 내장 도구, apiRequest=API·별도 과금)로 실행하고 결과 파일을 asset으로 넘긴다. 선택이 없는 작품은 start가 needs_image_runtime으로 호스트의 실제 이미지 경로 보고(imageRuntime)를 받고, needs_image_choice로 선택지 전체를 사용자에게 보여 확정한다(내장 경로를 먼저 제안). 확정한 선택은 changeImageChoice로 바꾸기 전까지 재사용한다. 모델 단계(연출·검증·시각 검토)는 needs_model→lore_resume, 칸 수가 없으면 needs_interview. 상태는 .vibelore/webtoon/에 저장하고 소설 정본과 프로젝트 webtoon/ 폴더는 건드리지 않는다. 진행 중 워크플로가 있으면 start는 WEBTOON_WORKFLOW_ACTIVE로 거부되므로 revise나 retry로 끝낸다. 시각 검토를 통과하면 status=completed. 기존 컷별 workflow는 변경하지 않는다.

Input Schema

NameRequiredDescriptionDefault
assetNoneeds_scene_image 단계에서 호스트가 생성한 장면 이미지. path는 프로젝트 안의 PNG/JPEG, inputHash는 job의 inputHash, provenance는 선택한 경로대로 내장이면 {kind:"host-built-in", provider, tool, selectionId, observedModel?}, API면 {kind:"api", provider, requestedModel, selectionId, observedModel?}(기존 OpenAI 선택 작품은 {kind:"openai-api", requestedModel, selectionId}). observedModel은 호스트가 실제로 본 것만 적는다.
actionNostart=새 장면 워크플로 시작, revise=feedback으로 연출부터 다시(완료된 장면도 다시 연다), retry=scene_model_failed에서 실패 단계 재시도. 생략하면 현재 단계를 이어간다(대기 중 모델 요청 재전송, jobs 반환, asset 반입).
workIdYes작품 식별자 ([A-Za-z0-9_-]). 한 디렉터리에는 작품 하나만 둔다.
projectNo작품 디렉터리의 절대 경로. 생략하면 서버 실행 디렉터리.
feedbackNorevise에 필수인 수정 요청. confirmImageChoice와 함께 start할 때는 과금 선택에 대한 사용자 원답을 넣는다.
revisionNo낙관적 동시성 확인용 현재 revision. 저장된 값과 다르면 STALE_WEBTOON_REVISION으로 거부한다. 생략 가능.
directionNo사용자가 확정한 작화·문자·판면/배치 재량을 영어로 전달(대사는 작품 언어 원문 그대로 이미지에 들어간다).
imageModelNostart 전용. 고른 경로가 모델을 받을 때 사용자가 고른 모델(그 경로의 models 중 하나). 생략하면 gpt-image-2.5-sunburst가 있으면 그것, 없으면 첫 모델.
panelCountNo사용자가 선택한 정확한 칸 수(1~12) 또는 "auto". auto는 각색할 때마다 AI가 3~12칸 중 적정 수를 다시 고른다. 3칸 미만은 연속성 경고가 warnings에 실린다. start에서 누락하면 needs_interview. 칸 크기와 배치는 AI가 선택.
referencesNostart 필수. 사용자가 지정한 인물·배경 참조 이미지 1개 이상(직전 장면 포함 최대 16개). description은 영어, id에 previous-scene은 쓸 수 없다.
workflowIdNo대상 장면 워크플로 id. 생략하면 현재 워크플로.
imageOptionNostart 전용. 사용자가 고른 imageRuntime.options[].id. 생략하면 내장 경로를 먼저 제안한다.
imageRuntimeNostart 전용. needs_image_runtime에 답해 호스트가 실제로 쓸 수 있는 이미지 경로를 보고한다. {host, options:[{id, execution:"host-built-in"|"api", provider, tool?, modelSelectable, models[], credential?, note?}]}. 내장 도구와 API 경로를 모두 적고, 모르는 것은 추측하지 말고 note에 쓴다. 모델 인자는 받지만 계정 모델을 모르면 models를 비운다(고를 때 imageModel 필요). 키 값은 넣지 않는다.
autoRevisionsNostart 전용. 생성 전 검증 또는 이미지 검토가 불합격이면 관측 결함을 feedback으로 자동 재설계하는 횟수(기본 2). 재설계마다 새 이미지 요청이 나가며 실패한 시도는 attempts에 남는다. 0이면 기존처럼 scene_needs_revision에서 멈춘다.
sourceUnitIdsNo고정된 원작 문단 ID. 생략 시 선택 회차 전체. 한 이미지에 담을 장면 범위로 지정한다.
sourceChaptersNostart 전용. 각색할 소설 화 번호(1~20개). 생략하면 첫 화만.
changeImageChoiceNostart 전용. 사용자가 이 작품의 이미지 경로·모델을 바꾸겠다고 했을 때만 true. 저장된 선택을 두고 새 선택을 다시 묻는다.
confirmImageChoiceNoneeds_image_choice로 받은 imageChoice.id. 사용자의 원답을 feedback에 넣어 같은 start를 다시 호출하면 이 작품의 선택으로 확정한다. imageRuntime을 다시 보낼 필요는 없다.
previousWorkflowIdNo이어지는 직전 장면 workflow. 실제 이미지·설계·검토 결과를 상속해 연속성을 검증하며 이전 검토 판정은 그대로 보존.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.4.6
    • changedInput schema / properties / asset / description
      Previous value: -"needs_scene_image 단계에서 호스트가 생성한 장면 이미지. path는 프로젝트 안의 PNG/JPEG, inputHash는 job의 inputHash, provenance는 {kind:\"openai-api\", requestedModel, selectionId}."New value: +"needs_scene_image 단계에서 호스트가 생성한 장면 이미지. path는 프로젝트 안의 PNG/JPEG, inputHash는 job의 inputHash, provenance는 선택한 경로대로 내장이면 {kind:\"host-built-in\", provider, tool, selectionId, observedModel?}, API면 {kind:\"api\", provider, requestedModel, selectionId, observedModel?}(기존 OpenAI 선택 작품은 {kind:\"openai-api\", requestedModel, selectionId}). observedModel은 호스트가 실제로 본 것만 적는다."
    • addedInput schema / properties / changeImageChoice
      Added value: +{
      +  "description": "start 전용. 사용자가 이 작품의 이미지 경로·모델을 바꾸겠다고 했을 때만 true. 저장된 선택을 두고 새 선택을 다시 묻는다.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / confirmImageChoice / description
      Previous value: -"needs_image_choice로 받은 imageChoice.id. 사용자의 원답을 feedback에 넣어 같은 start를 다시 호출하면 이 작품의 API 선택으로 확정한다."New value: +"needs_image_choice로 받은 imageChoice.id. 사용자의 원답을 feedback에 넣어 같은 start를 다시 호출하면 이 작품의 선택으로 확정한다. imageRuntime을 다시 보낼 필요는 없다."
    • changedInput schema / properties / imageModel / description
      Previous value: -"확정된 API 선택이 없는 작품의 start에서 제안할 OpenAI API 모델. 기본 2.5 Sunburst."New value: +"start 전용. 고른 경로가 모델을 받을 때 사용자가 고른 모델(그 경로의 models 중 하나). 생략하면 gpt-image-2.5-sunburst가 있으면 그것, 없으면 첫 모델."
    • removedInput schema / properties / imageModel / enum
      Removed value: -[
      -  "gpt-image-2",
      -  "gpt-image-2.5-sunburst",
      -  "gpt-image-2.5-flare"
      -]
    • addedInput schema / properties / imageOption
      Added value: +{
      +  "description": "start 전용. 사용자가 고른 imageRuntime.options[].id. 생략하면 내장 경로를 먼저 제안한다.",
      +  "type": "string"
      +}
    • addedInput schema / properties / imageRuntime
      Added value: +{
      +  "description": "start 전용. needs_image_runtime에 답해 호스트가 실제로 쓸 수 있는 이미지 경로를 보고한다. {host, options:[{id, execution:\"host-built-in\"|\"api\", provider, tool?, modelSelectable, models[], credential?, note?}]}. 내장 도구와 API 경로를 모두 적고, 모르는 것은 추측하지 말고 note에 쓴다. 모델 인자는 받지만 계정 모델을 모르면 models를 비운다(고를 때 imageModel 필요). 키 값은 넣지 않는다.",
      +  "properties": {
      +    "host": {
      +      "type": "string"
      +    },
      +    "options": {
      +      "items": {
      +        "properties": {
      +          "credential": {
      +            "type": "string"
      +          },
      +          "execution": {
      +            "enum": [
      +              "host-built-in",
      +              "api"
      +            ],
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "modelSelectable": {
      +            "type": "boolean"
      +          },
      +          "models": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "note": {
      +            "type": "string"
      +          },
      +          "provider": {
      +            "type": "string"
      +          },
      +          "tool": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "execution",
      +          "provider",
      +          "modelSelectable"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "host",
      +    "options"
      +  ],
      +  "type": "object"
      +}
  2. Changed7 schema fields changedv0.4.4
    • addedInput schema / properties / action / description
      Added value: +"start=새 장면 워크플로 시작, revise=feedback으로 연출부터 다시(완료된 장면도 다시 연다), retry=scene_model_failed에서 실패 단계 재시도. 생략하면 현재 단계를 이어간다(대기 중 모델 요청 재전송, jobs 반환, asset 반입)."
    • addedInput schema / properties / asset / description
      Added value: +"needs_scene_image 단계에서 호스트가 생성한 장면 이미지. path는 프로젝트 안의 PNG/JPEG, inputHash는 job의 inputHash, provenance는 {kind:\"openai-api\", requestedModel, selectionId}."
    • addedInput schema / properties / feedback / description
      Added value: +"revise에 필수인 수정 요청. confirmImageChoice와 함께 start할 때는 과금 선택에 대한 사용자 원답을 넣는다."
    • addedInput schema / properties / revision / description
      Added value: +"낙관적 동시성 확인용 현재 revision. 저장된 값과 다르면 STALE_WEBTOON_REVISION으로 거부한다. 생략 가능."
    • addedInput schema / properties / sourceChapters / description
      Added value: +"start 전용. 각색할 소설 화 번호(1~20개). 생략하면 첫 화만."
    • changedInput schema / properties / workId / description
      Previous value: -"작품 식별자 ([A-Za-z0-9_-])."New value: +"작품 식별자 ([A-Za-z0-9_-]). 한 디렉터리에는 작품 하나만 둔다."
    • addedInput schema / properties / workflowId / description
      Added value: +"대상 장면 워크플로 id. 생략하면 현재 워크플로."
  3. First observed

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations already declaring non-readonly/non-destructive, the description adds substantial undisclosed behavior: the server itself never generates images (the host runs jobs via hostRequest or apiRequest), state lives under .vibelore/webtoon/, the novel canon and project webtoon/ folder are untouched, start is rejected with WEBTOON_WORKFLOW_ACTIVE, and status becomes completed only after visual review passes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and every clause carries information about flow, error codes, or state paths, so little is wasted. The downside is density: long arrow-chained sentences cram pipeline steps, host execution mechanics, and persistence rules together, making it harder to scan quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter state-machine tool with no output schema, the description is quite complete: it explains the pipeline order, the needs_* states an agent must react to, persistence location, and the completion condition. It leans on annotations and the rich schema for the rest, so only minor gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 19 parameters, which sets the baseline at 3. The description adds a few useful operational notes (imageModel default gpt-image-2.5-sunburst fallback, that confirmImageChoice avoids resending imageRuntime), but most parameter meaning is carried by the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: it turns one scene of the novel canon into a single image with dialogue rendered in the work's original language, and it lays out the production pipeline. It names related tools (webtoon-discovery-interview, lore_resume) but never explicitly distinguishes itself from close siblings like lore_webtoon_plan or lore_webtoon_render.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use guidance: call webtoon-discovery-interview first to settle scope/style/references/panels/model, and use revise/retry (not start) when a workflow is already active. It also explains the start/revise/retry conditions and the needs_interview fallback, though it does not route the agent against the other webtoon siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.