[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BY2H0P34Z35DMHJXAMA7M0":3,"skill-same:01M6BY2H0P34Z35DMHJXAMA7M0":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":12,"ownerDescription":56,"updatedAt":57,"install":58,"resources":70},"01M6BY2H0P34Z35DMHJXAMA7M0","nodetool-sketch",null,"Build, edit or render a NodeTool sketch (image document): layers, blend modes, placed images, generation briefs, PNG and PSD output, version history.","nodetool-ai\u002Fnodetool","nodetool-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F164873569?v=4","01M6BXPFDW36K9K1MR8ZH63HG2","nodetool.ai","01M6BXPFJ893XM219GQN60B0WK",630,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fnodetool-sketch\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"nodetool sketch","nodetool","sketch","document","PSD","modes","layers","true","briefs","output","render","generation","build","image","images","version","edit","history","png","2026-11-10 10:12:30",false,"---\nname: nodetool-sketch\ndescription: \"Build, edit or render a NodeTool sketch (image document): layers, blend modes, placed images, generation briefs, PNG and PSD output, version history.\"\nfeatured: true\n---\n\n# Work a NodeTool sketch\n\nA sketch is an **image document**: a canvas, a stack of layers, and the bindings\nthat say where a layer's picture comes from. It is the surface for composited\nstills, masks, overlays and the guided image brief. One finished image with no\nlayers to keep is `generate_image`, not a sketch.\n\nThe document is layers and references. **Headless tools never paint.**\nPainting happens in an open editor (the `ui_sketch_*` tools below), generation\nhappens in a workflow run or through the image tools. An image lands on a layer\nby reference, so nothing inlines a bitmap. `render_sketch` is the one headless\ntool that reads pixels: it composites the document and saves the result.\n\n## The loop\n\n1. **Find it.** `list_sketches`, then `get_sketch`. New one:\n   `create_sketch {name, width?, height?, background_color?, project_id?}` gives a\n   blank canvas (1024×1024, `#ffffff` by default).\n2. **Edit the stack.** `edit_sketch {image_document_id, ops: [...]}`. Operations\n   run in order against the stored document and the result is saved. An open\n   editor picks the change up live.\n3. **Validate.** `validate_sketch {image_document_id}` or an inline `document`.\n4. **Look.** `render_sketch {image_document_id}` and `view_image` the result.\n5. **Snapshot** before a destructive pass with `create_sketch_version`.\n\n## `edit_sketch` ops\n\n| Op | Does |\n|---|---|\n| `add_layer` | `{name?, type?: \"raster\"\\|\"mask\", index?, image?, x?, y?, width?, height?}`. An `image` field makes this one op instead of two |\n| `remove_layer`, `rename_layer`, `duplicate_layer`, `reorder_layer` | Stack management |\n| `select_layer` | Sets the active layer |\n| `set_layer_props` | `opacity`, `blendMode`, visibility, lock |\n| `set_layer_image` | Points a layer at an asset id, an `asset:\u002F\u002F` locator, a `data:` URL or an http(s) URL |\n| `resize_canvas` | Positive integer width and height |\n| `set_setup` | The generation brief: `brief`, `use_case`, `variations` (1..8), `stage`. Renders nothing |\n\n`target` is a layer id, a layer name, or `\"active\"`. Layer index 0 is the\nbottom of the stack. `use_case` is one of `scene`, `product`, `portrait`,\n`key-art`, `social`, `logo`, `concept`, `texture`, and it also sets the canvas\nsize.\n`stage` is where the guided flow resumes: `idea`, `useCase`, `review`, `look`,\nor `done` for the plain editor.\n\nAn asset id that resolves to nothing is refused rather than stored, because a\nstored one shows up as an empty layer.\n\nWith the sketch open in a browser, the `ui_sketch_*` tools act on the live\ncanvas, and only they touch pixels: `ui_sketch_get_state`,\n`ui_sketch_place_image`, `ui_sketch_stroke`, `ui_sketch_fill`,\n`ui_sketch_gradient`, `ui_sketch_draw_shape`, `ui_sketch_adjust_layer`,\n`ui_sketch_transform`, `ui_sketch_crop`, `ui_sketch_merge_down`,\n`ui_sketch_flatten_visible`, `ui_sketch_get_layer_image`,\n`ui_sketch_generate` and `ui_sketch_render_to_asset`.\n\n## Vector layers\n\nThe editor imports self-contained SVG files as vector layers. Each layer keeps\nits SVG source in the document. Use the vector inspector to edit SVG source,\ndownload it, or rasterize the layer for painting. Moving and transforming a\nvector layer preserves its source. Rasterization is undoable. Example sketches\nopen with vector layers.\n\nSVG scripts, embedded HTML, animations, external images, and stylesheets are\nremoved on import. Use presentation attributes for fills, strokes, and text.\nThe headless stack operations can preserve existing vector layers. Creating or\nediting SVG source currently requires the editor.\n\n## The guided brief\n\n`set_setup` writes the one-line brief. `refine_image_brief {image_document_id,\nprovider?, model?}` expands it into the five fields an image model needs\n(subject, composition, lighting, style words, and what to leave out) and stops\nat the review step. It creates no layer and starts no generation. It is the\ncheap text pass a person edits before anything is rendered.\n\nOnce the fields read right, put pixels on a layer in two calls:\n`generate_image` saves the result as an asset and returns its `asset:\u002F\u002F` URI,\nthen `edit_sketch` with `add_layer {image}` or `set_layer_image {target, image}`\nplaces it. Generation spends provider money, so confirm the count with the user\nbefore rendering several `variations`.\n\n## Rendering\n\n`render_sketch {image_document_id | document, format?, width?, height?,\nbackground?, layer_id?, mask?}` composites the sketch with the editor's own\nrules (visibility and groups, opacity, blend modes, transforms, effects, vector\nlayers, placed images) and saves an asset. `format: \"png\"` (the default) is the\nflattened image, transparent unless `background` is set. `layer_id` renders one\nlayer alone, without its opacity or blend mode, and `mask: true` renders the\ninpainting mask. `format: \"psd\"` is a layered Photoshop file at the canvas size,\none layer per sketch layer with groups kept. Each row of `layers` says whether\nthe layer was drawn and, when an image could not be read, why.\n\nTo use the finished composite in a workflow, `nodetool.sketch.RenderSketch`\ntakes a `sketch` and flattens it to an `image` and a `mask`.\n\n## What `validate_sketch` catches\n\nDuplicate layer ids, an active or mask layer the stack lacks, unknown blend\nmodes, opacities and transforms that cannot render, generation bindings pointing\nat missing layers, unknown binding kinds and statuses, canvas settings that\ndisagree with the stored ones, and fields a schema round trip would strip. Layer\nbitmaps stay opaque to it.\n\n## Versions\n\n`list_sketch_versions`, `get_sketch_version` (read a snapshot without restoring),\n`create_sketch_version`, `restore_sketch_version`, `delete_sketch_version`.\nA restore snapshots the pre-restore state first, so it is undoable, then\nre-validates against today's schema: an old document may fail what it used to\npass.\n\nThese snapshot the whole document. The per-layer generation takes are a\ndifferent thing, and they record one generated image on one layer.\n\n## Verify from a shell\n\nThese are the `nodetool` CLI. From a NodeTool checkout the same commands run\nas `npm run dev:nodetool -- \u003Ccommand>`.\n\n```bash\nnodetool sketch validate \u003Cimage_document_id|sketch.json> --json\nnodetool sketch debug sketch.json \\\n  --interact '[{\"tool\":\"add_layer\",\"input\":{\"name\":\"Shadow\"}},\n               {\"tool\":\"set_layer_props\",\"input\":{\"target\":\"Shadow\",\"opacity\":0.4,\"blendMode\":\"multiply\"}}]'\nnodetool sketch versions list \u003Cid> --save-type manual --limit 10\nnodetool sketch render \u003Cimage_document_id|sketch.json> -o out.png --width 512\nnodetool sketch render sketch.json --format psd -o out.psd\n```\n\nA path on disk wins over an id. `debug` runs the static check, then each\n`--interact` step against the headless `ui_sketch_*` bridge, and validates what\nthe session left behind. A failing step is recorded and the script continues.\nPixels, painting, rendering, generation and asset I\u002FO are not simulated.\n`render` writes the PNG or PSD that `render_sketch` would save.\n\n## Where a sketch is used\n\n- A mini app shows one with the **Sketch** widget, which takes a\n  `{type: \"sketch\", id}` reference, and collects one with the **Sketch Pad**\n  input. See `nodetool-app-builder`.\n- A mini app resource of `kind: \"sketch\"` lets the app read or edit it.\n\n## Reference\n\nIn a NodeTool checkout, these repository sources go further:\n\n- `docs\u002Fharnesses.md` § nodetool sketch validate \u002F debug\n- `docs\u002Fharnesses.md` § nodetool sketch versions\n- `docs\u002Fharnesses.md` § nodetool sketch render\n","# Work a NodeTool sketch\n\nA sketch is an **image document**: a canvas, a stack of layers, and the bindings\nthat say where a layer's picture comes from. It is the surface for composited\nstills, masks, overlays and the guided image brief. One finished image with no\nlayers to keep is `generate_image`, not a sketch.\n\nThe document is layers and references. **Headless tools never paint.**\nPainting happens in an open editor (the `ui_sketch_*` tools below), generation\nhappens in a workflow run or through the image tools. An image lands on a layer\nby reference, so nothing inlines a bitmap. `render_sketch` is the one headless\ntool that reads pixels: it composites the document and saves the result.\n\n## The loop\n\n1. **Find it.** `list_sketches`, then `get_sketch`. New one:\n   `create_sketch {name, width?, height?, background_color?, project_id?}` gives a\n   blank canvas (1024×1024, `#ffffff` by default).\n2. **Edit the stack.** `edit_sketch {image_document_id, ops: [...]}`. Operations\n   run in order against the stored document and the result is saved. An open\n   editor picks the change up live.\n3. **Validate.** `validate_sketch {image_document_id}` or an inline `document`.\n4. **Look.** `render_sketch {image_document_id}` and `view_image` the result.\n5. **Snapshot** before a destructive pass with `create_sketch_version`.\n\n## `edit_sketch` ops\n\n| Op | Does |\n|---|---|\n| `add_layer` | `{name?, type?: \"raster\"\\|\"mask\", index?, image?, x?, y?, width?, height?}`. An `image` field makes this one op instead of two |\n| `remove_layer`, `rename_layer`, `duplicate_layer`, `reorder_layer` | Stack management |\n| `select_layer` | Sets the active layer |\n| `set_layer_props` | `opacity`, `blendMode`, visibility, lock |\n| `set_layer_image` | Points a layer at an asset id, an `asset:\u002F\u002F` locator, a `data:` URL or an http(s) URL |\n| `resize_canvas` | Positive integer width and height |\n| `set_setup` | The generation brief: `brief`, `use_case`, `variations` (1..8), `stage`. Renders nothing |\n\n`target` is a layer id, a layer name, or `\"active\"`. Layer index 0 is the\nbottom of the stack. `use_case` is one of `scene`, `product`, `portrait`,\n`key-art`, `social`, `logo`, `concept`, `texture`, and it also sets the canvas\nsize.\n`stage` is where the guided flow resumes: `idea`, `useCase`, `review`, `look`,\nor `done` for the plain editor.\n\nAn asset id that resolves to nothing is refused rather than stored, because a\nstored one shows up as an empty layer.\n\nWith the sketch open in a browser, the `ui_sketch_*` tools act on the live\ncanvas, and only they touch pixels: `ui_sketch_get_state`,\n`ui_sketch_place_image`, `ui_sketch_stroke`, `ui_sketch_fill`,\n`ui_sketch_gradient`, `ui_sketch_draw_shape`, `ui_sketch_adjust_layer`,\n`ui_sketch_transform`, `ui_sketch_crop`, `ui_sketch_merge_down`,\n`ui_sketch_flatten_visible`, `ui_sketch_get_layer_image`,\n`ui_sketch_generate` and `ui_sketch_render_to_asset`.\n\n## Vector layers\n\nThe editor imports self-contained SVG files as vector layers. Each layer keeps\nits SVG source in the document. Use the vector inspector to edit SVG source,\ndownload it, or rasterize the layer for painting. Moving and transforming a\nvector layer preserves its source. Rasterization is undoable. Example sketches\nopen with vector layers.\n\nSVG scripts, embedded HTML, animations, external images, and stylesheets are\nremoved on import. Use presentation attributes for fills, strokes, and text.\nThe headless stack operations can preserve existing vector layers. Creating or\nediting SVG source currently requires the editor.\n\n## The guided brief\n\n`set_setup` writes the one-line brief. `refine_image_brief {image_document_id,\nprovider?, model?}` expands it into the five fields an image model needs\n(subject, composition, lighting, style words, and what to leave out) and stops\nat the review step. It creates no layer and starts no generation. It is the\ncheap text pass a person edits before anything is rendered.\n\nOnce the fields read right, put pixels on a layer in two calls:\n`generate_image` saves the result as an asset and returns its `asset:\u002F\u002F` URI,\nthen `edit_sketch` with `add_layer {image}` or `set_layer_image {target, image}`\nplaces it. Generation spends provider money, so confirm the count with the user\nbefore rendering several `variations`.\n\n## Rendering\n\n`render_sketch {image_document_id | document, format?, width?, height?,\nbackground?, layer_id?, mask?}` composites the sketch with the editor's own\nrules (visibility and groups, opacity, blend modes, transforms, effects, vector\nlayers, placed images) and saves an asset. `format: \"png\"` (the default) is the\nflattened image, transparent unless `background` is set. `layer_id` renders one\nlayer alone, without its opacity or blend mode, and `mask: true` renders the\ninpainting mask. `format: \"psd\"` is a layered Photoshop file at the canvas size,\none layer per sketch layer with groups kept. Each row of `layers` says whether\nthe layer was drawn and, when an image could not be read, why.\n\nTo use the finished composite in a workflow, `nodetool.sketch.RenderSketch`\ntakes a `sketch` and flattens it to an `image` and a `mask`.\n\n## What `validate_sketch` catches\n\nDuplicate layer ids, an active or mask layer the stack lacks, unknown blend\nmodes, opacities and transforms that cannot render, generation bindings pointing\nat missing layers, unknown binding kinds and statuses, canvas settings that\ndisagree with the stored ones, and fields a schema round trip would strip. Layer\nbitmaps stay opaque to it.\n\n## Versions\n\n`list_sketch_versions`, `get_sketch_version` (read a snapshot without restoring),\n`create_sketch_version`, `restore_sketch_version`, `delete_sketch_version`.\nA restore snapshots the pre-restore state first, so it is undoable, then\nre-validates against today's schema: an old document may fail what it used to\npass.\n\nThese snapshot the whole document. The per-layer generation takes are a\ndifferent thing, and they record one generated image on one layer.\n\n## Verify from a shell\n\nThese are the `nodetool` CLI. From a NodeTool checkout the same commands run\nas `npm run dev:nodetool -- \u003Ccommand>`.\n\n```bash\nnodetool sketch validate \u003Cimage_document_id|sketch.json> --json\nnodetool sketch debug sketch.json \\\n  --interact '[{\"tool\":\"add_layer\",\"input\":{\"name\":\"Shadow\"}},\n               {\"tool\":\"set_layer_props\",\"input\":{\"target\":\"Shadow\",\"opacity\":0.4,\"blendMode\":\"multiply\"}}]'\nnodetool sketch versions list \u003Cid> --save-type manual --limit 10\nnodetool sketch render \u003Cimage_document_id|sketch.json> -o out.png --width 512\nnodetool sketch render sketch.json --format psd -o out.psd\n```\n\nA path on disk wins over an id. `debug` runs the static check, then each\n`--interact` step against the headless `ui_sketch_*` bridge, and validates what\nthe session left behind. A failing step is recorded and the script continues.\nPixels, painting, rendering, generation and asset I\u002FO are not simulated.\n`render` writes the PNG or PSD that `render_sketch` would save.\n\n## Where a sketch is used\n\n- A mini app shows one with the **Sketch** widget, which takes a\n  `{type: \"sketch\", id}` reference, and collects one with the **Sketch Pad**\n  input. See `nodetool-app-builder`.\n- A mini app resource of `kind: \"sketch\"` lets the app read or edit it.\n\n## Reference\n\nIn a NodeTool checkout, these repository sources go further:\n\n- `docs\u002Fharnesses.md` § nodetool sketch validate \u002F debug\n- `docs\u002Fharnesses.md` § nodetool sketch versions\n- `docs\u002Fharnesses.md` § nodetool sketch render\n",{"name":5,"featured":48,"description":7},true,"main","c7226baa82daca42a19a5855c116544f97aa8bac","packages\u002Fsystem-skills\u002Fnodetool-sketch",90,"https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool","https:\u002F\u002Fnodetool.ai\u002F","https:\u002F\u002Fgithub.com\u002Fnodetool-ai","No-code AI development","2026-11-13 03:21:10",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":48},[60,63,66],{"tool":61,"command":62},"npx","npx skills add nodetool-ai\u002Fnodetool --skill nodetool-sketch",{"tool":64,"command":65},"bunx","bunx skills add nodetool-ai\u002Fnodetool --skill nodetool-sketch",{"tool":67,"command":68},"pnpm","pnpm dlx skills add nodetool-ai\u002Fnodetool --skill nodetool-sketch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fnodetool-sketch\u002FSKILL.md",[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"prompt.md","REFERENCE","参考文档",8458,"https:\u002F\u002Fgithub.com\u002Fshenxingy\u002FClade\u002Fblob\u002Fmain\u002Fconfigs\u002Fskills\u002Fads-create\u002Fprompt.md",[78,112,139,153,169,194],{"skillNo":79,"name":25,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":91,"publishedAt":43},"01M6BY4D93R0Q9400ZHJ04DXP1","Use the NodeTool MCP server to build, validate, run, and debug visual AI workflows, and to work with assets, collections, and jobs. Use when the user mentions NodeTool or asks for a workflow graph, a node, or a media generation run on their NodeTool server.","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fplugins\u002Fchatgpt\u002Fnodetool\u002Fskills\u002Fnodetool\u002FSKILL.md",[83,86],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[25,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,35,107,108,109,110,111],"MCP","mcp server","workflow","workflows","validate","debug","run","graph","server","Media","assets","work","node","use","visual","collections","media generation","with","for","when",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":43},"01M6BY4AEB05ZPBRVD078ATR2H","wan-2-6-prompting","Prompt Alibaba's Wan 2.6 video — text-to-video with a global style line plus timing-bracketed shots, and image-to-video that describes only what changes over time. Covers the shot-mode switch per provider, the prompt budget, negative prompts, motion intensity wording, audio input and prompt expansion. Use whenever the model id names a Wan 2.6 video route (alibaba\u002Fwan-2.6\u002Ftext-to-video, alibaba\u002Fwan-2.6\u002Fimage-to-video, wan-video\u002Fwan-2.6-t2v, wan-video\u002Fwan-2.6-i2v, wan-video\u002Fwan2.6-i2v-flash) on generate_video, animate_image or a TextToVideo node. Not for Wan 2.5 or 2.7, or the Wan 2.6 image routes.","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fwan-2-6-prompting\u002FSKILL.md",[118],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[120,121,37,122,123,124,125,126,127,128,129,104,130,131,132,133,134,135,136,137,138],"wan 2 6 prompting","prompting","generate","Budget","Video","Audio","text","animate","model","flash","only","route","time","line","input","text-to-video","image-to-video","mode","expansion",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":147,"publishedAt":43},"01M6BY47T4748ZG5ZMTAR97ZWZ","video-workflow","Build a reusable NodeTool video workflow for batches or repeated inputs. For a single finished piece, use a storyboard skill.","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fvideo-workflow\u002FSKILL.md",[145,146],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},[94,124,148,25,105,149,150,36,151,110,152],"video workflow","reusable","storyboard","batches","single",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":43},"01M6BY4587N2SYN315SXGEMZC3","video-clone","Analyze a reference video and recreate its shot structure with a new product or cast in NodeTool.","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fvideo-clone\u002FSKILL.md",[159],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[124,161,162,163,164,25,165,166,167,109,168],"video clone","clone","product","analyze","reference","cast","structure","new",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":176,"publishedAt":43},"01M6BY4257C2KQYYMD9EK6DK8E","video-audio-continuity","Keep sound continuous across a multi-scene piece cut from generated video — why one clip per scene hard-cuts the audio at every boundary, when to write all the scenes into a single generation instead, the sound-design vocabulary that survives a provider's copyright filter, and how to check the length, the aspect ratio and the mix of what came back. Use when a piece has more than one scene and the video model writes its own audio (Seedance 2, Veo 3, MiniMax H3, Kling 2.6 and later), or when a cut's sound drops out at the shot changes.","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fvideo-audio-continuity\u002FSKILL.md",[175],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[124,125,177,178,179,180,181,182,128,183,184,185,186,187,188,189,190,191,192,193,111],"video audio continuity","continuity","design","boundary","how","why","write","generated","later","back","across","cut","how to","filter","mix","at","veo 3",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":201,"publishedAt":43},"01M6BY3ZANBSQMZRH4MG55R8Z7","veo-3-prompting","Prompt Google's Veo 3 video line — the five-element shot\u002Fsetting\u002Fsubject\u002Faction\u002Fdialogue structure, the cinematography vocabulary it reads directly, duration and aspect-ratio tradeoffs, the audio and auto-fix switches per provider, and the fixes for visual drift, temporal inconsistency and audio mismatch. Use whenever the model id contains veo3 or veo-3 (fal-ai\u002Fveo3.1 and its fast, lite, image-to-video, first-last-frame and reference-to-video routes, fal-ai\u002Fveo3\u002Fimage-to-video, google\u002Fveo3.1 on atlascloud, google\u002Fveo-3 and google\u002Fveo-3.1 on replicate, kie's veo-3-1, and Gemini's own veo-3.1-generate-preview) on generate_video, animate_image, generate_video_from_references or a TextToVideo node.","https:\u002F\u002Fgithub.com\u002Fnodetool-ai\u002Fnodetool\u002Fblob\u002Fmain\u002Fpackages\u002Fsystem-skills\u002Fveo-3-prompting\u002FSKILL.md",[200],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[202,203,121,193,37,204,205,122,206,207,124,125,127,128,208,209,210,211,212,213,214,167,215,216,217],"veo 3 prompting","veo","google","gemini","fast","first","fal","kie","replicate","fix","auto","references","drift","preview","element","auto-fix"]