diff --git a/.github/scripts/i18n/sync-docs-json.mjs b/.github/scripts/i18n/sync-docs-json.mjs index 3d9e197f7..d1df9a13e 100644 --- a/.github/scripts/i18n/sync-docs-json.mjs +++ b/.github/scripts/i18n/sync-docs-json.mjs @@ -120,6 +120,11 @@ export function normalizeNavTree(nodes, options = {}) { const pages = normalizeNavTree(node.pages, options); if (pages.length === 0 && pruneMissing) continue; out.push({ ...node, pages }); + continue; + } + // Groups that render an OpenAPI spec have no `pages` of their own. + if (node && typeof node === "object" && node.openapi != null) { + out.push(node); } } return out; @@ -162,6 +167,9 @@ export function localizeNavTree(nodes, langDir, langDirs) { pages: localizeNavTree(node.pages, langDir, langDirs), }; } + if (node && typeof node === "object" && node.openapi != null) { + return { ...node, openapi: localizeOpenApi(node.openapi, langDir) }; + } return node; }); } @@ -242,6 +250,27 @@ function findGroupMatch(existingPages, newChild, langDirs) { return best; } +/** @param {unknown} openapi */ +function openApiSpecKey(openapi) { + if (typeof openapi === "string") return openapi; + if (openapi && typeof openapi === "object" && typeof openapi.source === "string") { + return openapi.source; + } + return null; +} + +/** @param {unknown[]} existingPages @param {object} newChild */ +function findOpenApiMatch(existingPages, newChild) { + if (!Array.isArray(existingPages)) return null; + const key = openApiSpecKey(newChild.openapi); + if (!key) return null; + for (const node of existingPages) { + if (typeof node === "string" || !node) continue; + if (openApiSpecKey(node.openapi) === key) return node; + } + return null; +} + /** * @param {unknown[]} newPages * @param {unknown[]} existingPages @@ -251,7 +280,15 @@ export function mergeNavPages(newPages, existingPages, langDirs) { if (!Array.isArray(newPages)) return []; return newPages.map((newChild) => { if (typeof newChild === "string") return newChild; - if (!newChild?.pages) return newChild; + if (!newChild?.pages) { + // OpenAPI groups have no pages to match on; key them by spec instead so a + // localized title survives the sync. + if (newChild?.openapi != null) { + const match = findOpenApiMatch(existingPages, newChild); + if (match?.group) return { ...newChild, group: match.group }; + } + return newChild; + } const match = findGroupMatch(existingPages, newChild, langDirs); const merged = { ...newChild }; diff --git a/custom-nodes/index.mdx b/custom-nodes/index.mdx new file mode 100644 index 000000000..8a67c02a1 --- /dev/null +++ b/custom-nodes/index.mdx @@ -0,0 +1,44 @@ +--- +title: "Custom Nodes" +description: "What custom nodes are, where they come from, and how to install, manage, and build them." +sidebarTitle: "Overview" +--- + +Custom nodes are packages built by the community that add functionality ComfyUI does not ship with. They are ordinary ComfyUI nodes in every respect: they declare inputs and outputs, run on your machine, and connect to core nodes freely. The difference is that you install them yourself and a third-party author maintains them. + +For how custom nodes compare to core and partner nodes, see the [nodes overview](/nodes). + +## Where they come from + +Most custom nodes are published to the [Comfy Registry](https://registry.comfy.org), a public catalog of versioned node packages. The registry is what powers search and installation inside ComfyUI Manager, and it is where you publish your own package when it is ready to share. + +A package can contribute any combination of Python nodes that run on the server, frontend extensions that change the UI, workflow templates, and subgraph blueprints. + +## Installing and managing + +**ComfyUI Manager** is the recommended way to work with custom nodes. It searches the registry, installs packages along with their Python dependencies, updates or pins versions, disables packages without deleting them, and detects nodes missing from an imported workflow. Desktop builds include it; portable and manual installs may need it enabled first. + + + Installing via ComfyUI Manager, Git, or a ZIP download, plus dependency installation. + + + + Searching, updating, disabling, and troubleshooting node packages. + + +Two things to keep in mind, since custom nodes execute arbitrary Python inside your ComfyUI process: + +- **Trust matters.** Install packages you have reason to trust, and prefer ones that are actively maintained. The registry scans published nodes for malicious behavior such as arbitrary system calls, and marks the ones that pass with a verification flag. +- **Dependencies can conflict.** Two packages may want incompatible versions of the same Python library. If ComfyUI stops starting after an install, disable the newest package first. See [custom node issues](/troubleshooting/custom-node-issues). + +## Building your own + +If nothing in the registry does what you need, write it. A minimal node is a Python class with an input specification and a function, and you can extend from there into custom datatypes, lazy evaluation, node expansion, and frontend extensions. + + + Walkthrough, backend and UI APIs, datatypes, and packaging. + + + + Versioning, `pyproject.toml` standards, CI/CD, and claiming an existing node. + diff --git a/docs.json b/docs.json index 80c70b352..cfcc764ae 100644 --- a/docs.json +++ b/docs.json @@ -60,29 +60,6 @@ ] }, "get_started/cloud", - { - "group": "Install Custom Nodes", - "icon": "puzzle-piece", - "pages": [ - "installation/install_custom_node", - { - "group": "ComfyUI-Manager", - "pages": [ - "manager/overview", - "manager/install", - { - "group": "Node Management", - "pages": [ - "manager/pack-management", - "manager/legacy-ui" - ] - }, - "manager/configuration", - "manager/troubleshooting" - ] - } - ] - }, "get_started/first_generation" ] }, @@ -413,194 +390,17 @@ } ] }, - { - "group": "Partner Nodes", - "icon": "handshake", - "pages": [ - "tutorials/partner-nodes/overview", - "tutorials/partner-nodes/faq", - "tutorials/partner-nodes/pricing", - "tutorials/partner-nodes/concurrency-limits", - { - "group": "Black Forest Labs", - "pages": [ - "tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", - "tutorials/partner-nodes/black-forest-labs/flux-1-kontext" - ] - }, - { - "group": "Beeble", - "pages": [ - "tutorials/partner-nodes/beeble/beeble-switchx" - ] - }, - { - "group": "ByteDance", - "pages": [ - "tutorials/partner-nodes/bytedance/seedance-2-0", - "tutorials/partner-nodes/bytedance/seedance-2-0-real-human", - "tutorials/partner-nodes/bytedance/seedream-5-pro", - "tutorials/partner-nodes/bytedance/seedream-5-lite", - "tutorials/partner-nodes/bytedance/seed-audio-1-0" - ] - }, - { - "group": "Google", - "pages": [ - "tutorials/partner-nodes/google/gemini", - "tutorials/partner-nodes/google/gemini-omni-flash", - "tutorials/partner-nodes/google/nano-banana-pro", - "tutorials/partner-nodes/google/nano-banana-2", - "tutorials/partner-nodes/google/nano-banana-2-lite" - ] - }, - { - "group": "Anthropic", - "pages": [ - "tutorials/partner-nodes/anthropic/claude" - ] - }, - { - "group": "Ideogram", - "pages": [ - "tutorials/partner-nodes/ideogram/ideogram-v4" - ] - }, - { - "group": "Luma", - "pages": [ - "tutorials/partner-nodes/luma/luma-uni-1", - "tutorials/partner-nodes/luma/luma-text-to-image", - "tutorials/partner-nodes/luma/luma-image-to-image", - "tutorials/partner-nodes/luma/luma-text-to-video", - "tutorials/partner-nodes/luma/luma-image-to-video" - ] - }, - { - "group": "Moonvalley", - "pages": [ - "tutorials/partner-nodes/moonvalley/moonvalley-video-generation" - ] - }, - { - "group": "OpenAI", - "pages": [ - "tutorials/partner-nodes/openai/gpt-image-2", - "tutorials/partner-nodes/openai/gpt-image-1", - "tutorials/partner-nodes/openai/dall-e-2", - "tutorials/partner-nodes/openai/dall-e-3", - "tutorials/partner-nodes/openai/chat" - ] - }, - { - "group": "OpenRouter", - "pages": [ - "tutorials/partner-nodes/openrouter/llm" - ] - }, - { - "group": "Recraft", - "pages": [ - "tutorials/partner-nodes/recraft/recraft-v4", - "tutorials/partner-nodes/recraft/recraft-text-to-image" - ] - }, - { - "group": "Krea 2", - "pages": [ - "tutorials/partner-nodes/krea2/krea2-t2i" - ] - }, - { - "group": "Kling", - "pages": [ - "tutorials/partner-nodes/kling/kling-3-0", - "tutorials/partner-nodes/kling/kling-motion-control" - ] - }, - { - "group": "Runway", - "pages": [ - "tutorials/partner-nodes/runway/image-generation", - "tutorials/partner-nodes/runway/video-generation" - ] - }, - { - "group": "Rodin", - "pages": [ - "tutorials/partner-nodes/rodin/model-generation" - ] - }, - { - "group": "Tripo", - "pages": [ - "tutorials/partner-nodes/tripo/model-generation", - "tutorials/partner-nodes/tripo/tripo-3-1", - "tutorials/partner-nodes/tripo/tripo-p1" - ] - }, - { - "group": "Hunyuan 3D", - "pages": [ - "tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" - ] - }, - { - "group": "Meshy", - "pages": [ - "tutorials/partner-nodes/meshy/meshy-6" - ] - }, - { - "group": "Bria", - "pages": [ - "tutorials/partner-nodes/bria/fibo", - "tutorials/partner-nodes/bria/background-removal" - ] - }, - { - "group": "Reve", - "pages": [ - "tutorials/partner-nodes/reve/reve-image" - ] - }, - { - "group": "Wan", - "pages": [ - "tutorials/partner-nodes/wan/wan2-7" - ] - }, - { - "group": "HappyHorse", - "pages": [ - "tutorials/partner-nodes/happyhorse/happyhorse1-1", - "tutorials/partner-nodes/happyhorse/happyhorse1-0" - ] - }, - { - "group": "Sonilo", - "pages": [ - "tutorials/partner-nodes/sonilo/video-to-music" - ] - }, - { - "group": "Topaz", - "pages": [ - "tutorials/partner-nodes/topaz/astra-2" - ] - } - ] - }, "changelog/index" ] }, { - "tab": "Built-in Nodes", + "tab": "Nodes", "pages": [ - "built-in-nodes/overview", + "nodes/index", { - "group": "Nodes", + "group": "Core Nodes", "pages": [ + "built-in-nodes/overview", { "group": "3D", "pages": [ @@ -2626,113 +2426,324 @@ ] } ] - } - ] - }, - { - "tab": "Development", - "pages": [ - "development/overview", + }, { - "group": "ComfyUI APIs", - "icon": "computer", + "group": "Partner Nodes", + "icon": "handshake", "pages": [ - "development/api-development/overview", + "tutorials/partner-nodes/overview", + "tutorials/partner-nodes/faq", + "tutorials/partner-nodes/pricing", + "tutorials/partner-nodes/concurrency-limits", { - "group": "Cloud API", - "icon": "cloud", + "group": "Black Forest Labs", "pages": [ - "development/cloud/overview", - "development/cloud/api-reference", - "development/cloud/openapi" + "tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", + "tutorials/partner-nodes/black-forest-labs/flux-1-kontext" ] }, { - "group": "ComfyUI Server API", - "icon": "server", + "group": "Beeble", "pages": [ - "development/comfyui-server/comms_overview", - "development/comfyui-server/startup-flags", - "development/comfyui-server/comms_routes", - "development/comfyui-server/api-examples", - "development/comfyui-server/comms_messages", - "development/comfyui-server/execution_model_inversion_guide" + "tutorials/partner-nodes/beeble/beeble-switchx" ] }, - "development/comfyui-server/api-key-integration", - "development/api-development/workflow-api-format", - "development/api-development/getting-an-api-key" - ] - }, - { - "group": "CLI", - "pages": [ - "comfy-cli/getting-started", - "comfy-cli/reference", - "comfy-cli/troubleshooting" - ] - }, - { - "group": "Develop Custom Nodes", - "pages": [ - "custom-nodes/overview", - "custom-nodes/walkthrough", - { - "group": "Backend", - "icon": "python", - "pages": [ - "custom-nodes/backend/server_overview", - "custom-nodes/backend/lifecycle", - "custom-nodes/backend/datatypes", - "custom-nodes/backend/images_and_masks", - "custom-nodes/backend/more_on_inputs", - "custom-nodes/backend/lazy_evaluation", - "custom-nodes/backend/expansion", - "custom-nodes/backend/lists", - "custom-nodes/backend/snippets", - "custom-nodes/backend/tensors", - "custom-nodes/backend/node-replacement" - ] - }, - { - "group": "UI", - "icon": "js", - "pages": [ - "custom-nodes/js/javascript_overview", - "custom-nodes/js/javascript_hooks", - "custom-nodes/js/javascript_objects_and_hijacking", - "custom-nodes/js/javascript_settings", - "custom-nodes/js/javascript_dialog", - "custom-nodes/js/javascript_toast", - "custom-nodes/js/javascript_about_panel_badges", - "custom-nodes/js/javascript_bottom_panel_tabs", - "custom-nodes/js/javascript_sidebar_tabs", - "custom-nodes/js/javascript_selection_toolbox", - "custom-nodes/js/javascript_commands_keybindings", - "custom-nodes/js/javascript_topbar_menu", - "custom-nodes/js/context-menu-migration", - "custom-nodes/js/subgraphs", - "custom-nodes/js/javascript_examples", - "custom-nodes/i18n" - ] - }, - "custom-nodes/v3_migration", - "custom-nodes/help_page", - "custom-nodes/workflow_templates", - "custom-nodes/subgraph_blueprints" - ] - }, - { - "group": "Registry", - "pages": [ - "registry/overview", - "registry/publishing", - "registry/claim-my-node", - "registry/standards", - "registry/cicd", - "registry/specifications", - "registry/api-reference/overview" - ] + { + "group": "ByteDance", + "pages": [ + "tutorials/partner-nodes/bytedance/seedance-2-0", + "tutorials/partner-nodes/bytedance/seedance-2-0-real-human", + "tutorials/partner-nodes/bytedance/seedream-5-pro", + "tutorials/partner-nodes/bytedance/seedream-5-lite", + "tutorials/partner-nodes/bytedance/seed-audio-1-0" + ] + }, + { + "group": "Google", + "pages": [ + "tutorials/partner-nodes/google/gemini", + "tutorials/partner-nodes/google/gemini-omni-flash", + "tutorials/partner-nodes/google/nano-banana-pro", + "tutorials/partner-nodes/google/nano-banana-2", + "tutorials/partner-nodes/google/nano-banana-2-lite" + ] + }, + { + "group": "Anthropic", + "pages": [ + "tutorials/partner-nodes/anthropic/claude" + ] + }, + { + "group": "Ideogram", + "pages": [ + "tutorials/partner-nodes/ideogram/ideogram-v4" + ] + }, + { + "group": "Luma", + "pages": [ + "tutorials/partner-nodes/luma/luma-uni-1", + "tutorials/partner-nodes/luma/luma-text-to-image", + "tutorials/partner-nodes/luma/luma-image-to-image", + "tutorials/partner-nodes/luma/luma-text-to-video", + "tutorials/partner-nodes/luma/luma-image-to-video" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "tutorials/partner-nodes/moonvalley/moonvalley-video-generation" + ] + }, + { + "group": "OpenAI", + "pages": [ + "tutorials/partner-nodes/openai/gpt-image-2", + "tutorials/partner-nodes/openai/gpt-image-1", + "tutorials/partner-nodes/openai/dall-e-2", + "tutorials/partner-nodes/openai/dall-e-3", + "tutorials/partner-nodes/openai/chat" + ] + }, + { + "group": "OpenRouter", + "pages": [ + "tutorials/partner-nodes/openrouter/llm" + ] + }, + { + "group": "Recraft", + "pages": [ + "tutorials/partner-nodes/recraft/recraft-v4", + "tutorials/partner-nodes/recraft/recraft-text-to-image" + ] + }, + { + "group": "Krea 2", + "pages": [ + "tutorials/partner-nodes/krea2/krea2-t2i" + ] + }, + { + "group": "Kling", + "pages": [ + "tutorials/partner-nodes/kling/kling-3-0", + "tutorials/partner-nodes/kling/kling-motion-control" + ] + }, + { + "group": "Runway", + "pages": [ + "tutorials/partner-nodes/runway/image-generation", + "tutorials/partner-nodes/runway/video-generation" + ] + }, + { + "group": "Rodin", + "pages": [ + "tutorials/partner-nodes/rodin/model-generation" + ] + }, + { + "group": "Tripo", + "pages": [ + "tutorials/partner-nodes/tripo/model-generation", + "tutorials/partner-nodes/tripo/tripo-3-1", + "tutorials/partner-nodes/tripo/tripo-p1" + ] + }, + { + "group": "Hunyuan 3D", + "pages": [ + "tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" + ] + }, + { + "group": "Meshy", + "pages": [ + "tutorials/partner-nodes/meshy/meshy-6" + ] + }, + { + "group": "Bria", + "pages": [ + "tutorials/partner-nodes/bria/fibo", + "tutorials/partner-nodes/bria/background-removal" + ] + }, + { + "group": "Reve", + "pages": [ + "tutorials/partner-nodes/reve/reve-image" + ] + }, + { + "group": "Wan", + "pages": [ + "tutorials/partner-nodes/wan/wan2-7" + ] + }, + { + "group": "HappyHorse", + "pages": [ + "tutorials/partner-nodes/happyhorse/happyhorse1-1", + "tutorials/partner-nodes/happyhorse/happyhorse1-0" + ] + }, + { + "group": "Sonilo", + "pages": [ + "tutorials/partner-nodes/sonilo/video-to-music" + ] + }, + { + "group": "Topaz", + "pages": [ + "tutorials/partner-nodes/topaz/astra-2" + ] + } + ] + }, + { + "group": "Custom Nodes", + "pages": [ + "custom-nodes/index", + { + "group": "Install Custom Nodes", + "icon": "puzzle-piece", + "pages": [ + "installation/install_custom_node", + { + "group": "ComfyUI-Manager", + "pages": [ + "manager/overview", + "manager/install", + { + "group": "Node Management", + "pages": [ + "manager/pack-management", + "manager/legacy-ui" + ] + }, + "manager/configuration", + "manager/troubleshooting" + ] + } + ] + }, + { + "group": "Develop Custom Nodes", + "pages": [ + "custom-nodes/overview", + "custom-nodes/walkthrough", + { + "group": "Backend", + "icon": "python", + "pages": [ + "custom-nodes/backend/server_overview", + "custom-nodes/backend/lifecycle", + "custom-nodes/backend/datatypes", + "custom-nodes/backend/images_and_masks", + "custom-nodes/backend/more_on_inputs", + "custom-nodes/backend/lazy_evaluation", + "custom-nodes/backend/expansion", + "custom-nodes/backend/lists", + "custom-nodes/backend/snippets", + "custom-nodes/backend/tensors", + "custom-nodes/backend/node-replacement" + ] + }, + { + "group": "UI", + "icon": "js", + "pages": [ + "custom-nodes/js/javascript_overview", + "custom-nodes/js/javascript_hooks", + "custom-nodes/js/javascript_objects_and_hijacking", + "custom-nodes/js/javascript_settings", + "custom-nodes/js/javascript_dialog", + "custom-nodes/js/javascript_toast", + "custom-nodes/js/javascript_about_panel_badges", + "custom-nodes/js/javascript_bottom_panel_tabs", + "custom-nodes/js/javascript_sidebar_tabs", + "custom-nodes/js/javascript_selection_toolbox", + "custom-nodes/js/javascript_commands_keybindings", + "custom-nodes/js/javascript_topbar_menu", + "custom-nodes/js/context-menu-migration", + "custom-nodes/js/subgraphs", + "custom-nodes/js/javascript_examples", + "custom-nodes/i18n" + ] + }, + "custom-nodes/v3_migration", + "custom-nodes/help_page", + "custom-nodes/workflow_templates", + "custom-nodes/subgraph_blueprints" + ] + }, + { + "group": "Registry", + "pages": [ + "registry/overview", + "registry/publishing", + "registry/claim-my-node", + "registry/standards", + "registry/cicd", + "registry/specifications", + "registry/api-reference/overview", + { + "group": "Registry API Reference", + "openapi": "https://api.comfy.org/openapi" + } + ] + } + ] + } + ] + }, + { + "tab": "Development", + "pages": [ + "development/overview", + { + "group": "ComfyUI APIs", + "icon": "computer", + "pages": [ + "development/api-development/overview", + { + "group": "Cloud API", + "icon": "cloud", + "pages": [ + "development/cloud/overview", + "development/cloud/api-reference", + "development/cloud/openapi" + ] + }, + { + "group": "ComfyUI Server API", + "icon": "server", + "pages": [ + "development/comfyui-server/comms_overview", + "development/comfyui-server/startup-flags", + "development/comfyui-server/comms_routes", + "development/comfyui-server/api-examples", + "development/comfyui-server/comms_messages", + "development/comfyui-server/execution_model_inversion_guide" + ] + }, + "development/comfyui-server/api-key-integration", + "development/api-development/workflow-api-format", + "development/api-development/getting-an-api-key" + ] + }, + { + "group": "CLI", + "pages": [ + "comfy-cli/getting-started", + "comfy-cli/reference", + "comfy-cli/troubleshooting" + ] }, { "group": "Specifications", @@ -2812,10 +2823,6 @@ } ] }, - { - "tab": "Registry API Reference", - "openapi": "https://api.comfy.org/openapi" - }, { "tab": "Cloud API Reference", "openapi": { @@ -2872,29 +2879,6 @@ ] }, "zh/get_started/cloud", - { - "group": "安装自定义节点", - "icon": "puzzle-piece", - "pages": [ - "zh/installation/install_custom_node", - { - "group": "ComfyUI-Manager", - "pages": [ - "zh/manager/overview", - "zh/manager/install", - { - "group": "自定义节点管理", - "pages": [ - "zh/manager/pack-management", - "zh/manager/legacy-ui" - ] - }, - "zh/manager/configuration", - "zh/manager/troubleshooting" - ] - } - ] - }, "zh/get_started/first_generation" ] }, @@ -3196,209 +3180,31 @@ "group": "ACE-Step", "pages": [ "zh/tutorials/audio/ace-step/ace-step-v1", - "zh/tutorials/audio/ace-step/ace-step-v1-5" - ] - } - ] - }, - { - "group": "实用工具", - "pages": [ - "zh/tutorials/utility/preprocessors", - "zh/tutorials/utility/frame-interpolation", - "zh/tutorials/utility/image-upscale", - "zh/tutorials/utility/video-upscale", - "zh/tutorials/utility/void-video-inpainting", - "zh/tutorials/utility/video-segment-sam3", - "zh/tutorials/utility/remove-background-birefnet", - "zh/tutorials/utility/pose-detection-sdpose", - "zh/tutorials/utility/moge", - "zh/tutorials/utility/depth-anything-3", - "zh/tutorials/utility/seedvr2", - { - "group": "人脸检测", - "pages": [ - "zh/tutorials/utility/face-detection/mediapipe" - ] - } - ] - } - ] - }, - { - "group": "合作伙伴节点", - "icon": "handshake", - "pages": [ - "zh/tutorials/partner-nodes/overview", - "zh/tutorials/partner-nodes/faq", - "zh/tutorials/partner-nodes/pricing", - "zh/tutorials/partner-nodes/concurrency-limits", - { - "group": "Black Forest Labs", - "pages": [ - "zh/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", - "zh/tutorials/partner-nodes/black-forest-labs/flux-1-kontext" - ] - }, - { - "group": "Beeble", - "pages": [ - "zh/tutorials/partner-nodes/beeble/beeble-switchx" - ] - }, - { - "group": "ByteDance", - "pages": [ - "zh/tutorials/partner-nodes/bytedance/seedance-2-0", - "zh/tutorials/partner-nodes/bytedance/seedance-2-0-real-human", - "zh/tutorials/partner-nodes/bytedance/seedream-5-pro", - "zh/tutorials/partner-nodes/bytedance/seedream-5-lite", - "zh/tutorials/partner-nodes/bytedance/seed-audio-1-0" - ] - }, - { - "group": "Google", - "pages": [ - "zh/tutorials/partner-nodes/google/gemini", - "zh/tutorials/partner-nodes/google/gemini-omni-flash", - "zh/tutorials/partner-nodes/google/nano-banana-pro", - "zh/tutorials/partner-nodes/google/nano-banana-2", - "zh/tutorials/partner-nodes/google/nano-banana-2-lite" - ] - }, - { - "group": "Anthropic", - "pages": [ - "zh/tutorials/partner-nodes/anthropic/claude" - ] - }, - { - "group": "Ideogram", - "pages": [ - "zh/tutorials/partner-nodes/ideogram/ideogram-v4" - ] - }, - { - "group": "Luma", - "pages": [ - "zh/tutorials/partner-nodes/luma/luma-uni-1", - "zh/tutorials/partner-nodes/luma/luma-text-to-image", - "zh/tutorials/partner-nodes/luma/luma-image-to-image", - "zh/tutorials/partner-nodes/luma/luma-text-to-video", - "zh/tutorials/partner-nodes/luma/luma-image-to-video" - ] - }, - { - "group": "Moonvalley", - "pages": [ - "zh/tutorials/partner-nodes/moonvalley/moonvalley-video-generation" - ] - }, - { - "group": "OpenAI", - "pages": [ - "zh/tutorials/partner-nodes/openai/gpt-image-2", - "zh/tutorials/partner-nodes/openai/gpt-image-1", - "zh/tutorials/partner-nodes/openai/dall-e-2", - "zh/tutorials/partner-nodes/openai/dall-e-3", - "zh/tutorials/partner-nodes/openai/chat" - ] - }, - { - "group": "OpenRouter", - "pages": [ - "zh/tutorials/partner-nodes/openrouter/llm" - ] - }, - { - "group": "Recraft", - "pages": [ - "zh/tutorials/partner-nodes/recraft/recraft-v4", - "zh/tutorials/partner-nodes/recraft/recraft-text-to-image" - ] - }, - { - "group": "Krea 2", - "pages": [ - "zh/tutorials/partner-nodes/krea2/krea2-t2i" - ] - }, - { - "group": "Kling", - "pages": [ - "zh/tutorials/partner-nodes/kling/kling-3-0", - "zh/tutorials/partner-nodes/kling/kling-motion-control" - ] - }, - { - "group": "Runway", - "pages": [ - "zh/tutorials/partner-nodes/runway/image-generation", - "zh/tutorials/partner-nodes/runway/video-generation" - ] - }, - { - "group": "Rodin", - "pages": [ - "zh/tutorials/partner-nodes/rodin/model-generation" - ] - }, - { - "group": "Tripo", - "pages": [ - "zh/tutorials/partner-nodes/tripo/model-generation", - "zh/tutorials/partner-nodes/tripo/tripo-3-1", - "zh/tutorials/partner-nodes/tripo/tripo-p1" - ] - }, - { - "group": "Hunyuan 3D", - "pages": [ - "zh/tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" - ] - }, - { - "group": "Meshy", - "pages": [ - "zh/tutorials/partner-nodes/meshy/meshy-6" - ] - }, - { - "group": "Bria", - "pages": [ - "zh/tutorials/partner-nodes/bria/fibo", - "zh/tutorials/partner-nodes/bria/background-removal" - ] - }, - { - "group": "Reve", - "pages": [ - "zh/tutorials/partner-nodes/reve/reve-image" - ] - }, - { - "group": "Wan", - "pages": [ - "zh/tutorials/partner-nodes/wan/wan2-7" - ] - }, - { - "group": "HappyHorse", - "pages": [ - "zh/tutorials/partner-nodes/happyhorse/happyhorse1-1", - "zh/tutorials/partner-nodes/happyhorse/happyhorse1-0" - ] - }, - { - "group": "Sonilo", - "pages": [ - "zh/tutorials/partner-nodes/sonilo/video-to-music" + "zh/tutorials/audio/ace-step/ace-step-v1-5" + ] + } ] }, { - "group": "Topaz", + "group": "实用工具", "pages": [ - "zh/tutorials/partner-nodes/topaz/astra-2" + "zh/tutorials/utility/preprocessors", + "zh/tutorials/utility/frame-interpolation", + "zh/tutorials/utility/image-upscale", + "zh/tutorials/utility/video-upscale", + "zh/tutorials/utility/void-video-inpainting", + "zh/tutorials/utility/video-segment-sam3", + "zh/tutorials/utility/remove-background-birefnet", + "zh/tutorials/utility/pose-detection-sdpose", + "zh/tutorials/utility/moge", + "zh/tutorials/utility/depth-anything-3", + "zh/tutorials/utility/seedvr2", + { + "group": "人脸检测", + "pages": [ + "zh/tutorials/utility/face-detection/mediapipe" + ] + } ] } ] @@ -3407,12 +3213,12 @@ ] }, { - "tab": "内置节点", + "tab": "节点", "pages": [ - "zh/built-in-nodes/overview", { - "group": "节点", + "group": "核心节点", "pages": [ + "zh/built-in-nodes/overview", { "group": "3D", "pages": [ @@ -5453,6 +5259,278 @@ ] } ] + }, + { + "group": "合作伙伴节点", + "icon": "handshake", + "pages": [ + "zh/tutorials/partner-nodes/overview", + "zh/tutorials/partner-nodes/faq", + "zh/tutorials/partner-nodes/pricing", + "zh/tutorials/partner-nodes/concurrency-limits", + { + "group": "Black Forest Labs", + "pages": [ + "zh/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", + "zh/tutorials/partner-nodes/black-forest-labs/flux-1-kontext" + ] + }, + { + "group": "Beeble", + "pages": [ + "zh/tutorials/partner-nodes/beeble/beeble-switchx" + ] + }, + { + "group": "ByteDance", + "pages": [ + "zh/tutorials/partner-nodes/bytedance/seedance-2-0", + "zh/tutorials/partner-nodes/bytedance/seedance-2-0-real-human", + "zh/tutorials/partner-nodes/bytedance/seedream-5-pro", + "zh/tutorials/partner-nodes/bytedance/seedream-5-lite", + "zh/tutorials/partner-nodes/bytedance/seed-audio-1-0" + ] + }, + { + "group": "Google", + "pages": [ + "zh/tutorials/partner-nodes/google/gemini", + "zh/tutorials/partner-nodes/google/gemini-omni-flash", + "zh/tutorials/partner-nodes/google/nano-banana-pro", + "zh/tutorials/partner-nodes/google/nano-banana-2", + "zh/tutorials/partner-nodes/google/nano-banana-2-lite" + ] + }, + { + "group": "Anthropic", + "pages": [ + "zh/tutorials/partner-nodes/anthropic/claude" + ] + }, + { + "group": "Ideogram", + "pages": [ + "zh/tutorials/partner-nodes/ideogram/ideogram-v4" + ] + }, + { + "group": "Luma", + "pages": [ + "zh/tutorials/partner-nodes/luma/luma-uni-1", + "zh/tutorials/partner-nodes/luma/luma-text-to-image", + "zh/tutorials/partner-nodes/luma/luma-image-to-image", + "zh/tutorials/partner-nodes/luma/luma-text-to-video", + "zh/tutorials/partner-nodes/luma/luma-image-to-video" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "zh/tutorials/partner-nodes/moonvalley/moonvalley-video-generation" + ] + }, + { + "group": "OpenAI", + "pages": [ + "zh/tutorials/partner-nodes/openai/gpt-image-2", + "zh/tutorials/partner-nodes/openai/gpt-image-1", + "zh/tutorials/partner-nodes/openai/dall-e-2", + "zh/tutorials/partner-nodes/openai/dall-e-3", + "zh/tutorials/partner-nodes/openai/chat" + ] + }, + { + "group": "OpenRouter", + "pages": [ + "zh/tutorials/partner-nodes/openrouter/llm" + ] + }, + { + "group": "Recraft", + "pages": [ + "zh/tutorials/partner-nodes/recraft/recraft-v4", + "zh/tutorials/partner-nodes/recraft/recraft-text-to-image" + ] + }, + { + "group": "Krea 2", + "pages": [ + "zh/tutorials/partner-nodes/krea2/krea2-t2i" + ] + }, + { + "group": "Kling", + "pages": [ + "zh/tutorials/partner-nodes/kling/kling-3-0", + "zh/tutorials/partner-nodes/kling/kling-motion-control" + ] + }, + { + "group": "Runway", + "pages": [ + "zh/tutorials/partner-nodes/runway/image-generation", + "zh/tutorials/partner-nodes/runway/video-generation" + ] + }, + { + "group": "Rodin", + "pages": [ + "zh/tutorials/partner-nodes/rodin/model-generation" + ] + }, + { + "group": "Tripo", + "pages": [ + "zh/tutorials/partner-nodes/tripo/model-generation", + "zh/tutorials/partner-nodes/tripo/tripo-3-1", + "zh/tutorials/partner-nodes/tripo/tripo-p1" + ] + }, + { + "group": "Hunyuan 3D", + "pages": [ + "zh/tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" + ] + }, + { + "group": "Meshy", + "pages": [ + "zh/tutorials/partner-nodes/meshy/meshy-6" + ] + }, + { + "group": "Bria", + "pages": [ + "zh/tutorials/partner-nodes/bria/fibo", + "zh/tutorials/partner-nodes/bria/background-removal" + ] + }, + { + "group": "Reve", + "pages": [ + "zh/tutorials/partner-nodes/reve/reve-image" + ] + }, + { + "group": "Wan", + "pages": [ + "zh/tutorials/partner-nodes/wan/wan2-7" + ] + }, + { + "group": "HappyHorse", + "pages": [ + "zh/tutorials/partner-nodes/happyhorse/happyhorse1-1", + "zh/tutorials/partner-nodes/happyhorse/happyhorse1-0" + ] + }, + { + "group": "Sonilo", + "pages": [ + "zh/tutorials/partner-nodes/sonilo/video-to-music" + ] + }, + { + "group": "Topaz", + "pages": [ + "zh/tutorials/partner-nodes/topaz/astra-2" + ] + } + ] + }, + { + "group": "自定义节点", + "pages": [ + { + "group": "安装自定义节点", + "icon": "puzzle-piece", + "pages": [ + "zh/installation/install_custom_node", + { + "group": "ComfyUI-Manager", + "pages": [ + "zh/manager/overview", + "zh/manager/install", + { + "group": "自定义节点管理", + "pages": [ + "zh/manager/pack-management", + "zh/manager/legacy-ui" + ] + }, + "zh/manager/configuration", + "zh/manager/troubleshooting" + ] + } + ] + }, + { + "group": "开发自定义节点", + "pages": [ + "zh/custom-nodes/overview", + "zh/custom-nodes/walkthrough", + { + "group": "后端", + "icon": "python", + "pages": [ + "zh/custom-nodes/backend/server_overview", + "zh/custom-nodes/backend/lifecycle", + "zh/custom-nodes/backend/datatypes", + "zh/custom-nodes/backend/images_and_masks", + "zh/custom-nodes/backend/more_on_inputs", + "zh/custom-nodes/backend/lazy_evaluation", + "zh/custom-nodes/backend/expansion", + "zh/custom-nodes/backend/lists", + "zh/custom-nodes/backend/snippets", + "zh/custom-nodes/backend/tensors", + "zh/custom-nodes/backend/node-replacement" + ] + }, + { + "group": "UI", + "icon": "js", + "pages": [ + "zh/custom-nodes/js/javascript_overview", + "zh/custom-nodes/js/javascript_hooks", + "zh/custom-nodes/js/javascript_objects_and_hijacking", + "zh/custom-nodes/js/javascript_settings", + "zh/custom-nodes/js/javascript_dialog", + "zh/custom-nodes/js/javascript_toast", + "zh/custom-nodes/js/javascript_about_panel_badges", + "zh/custom-nodes/js/javascript_bottom_panel_tabs", + "zh/custom-nodes/js/javascript_sidebar_tabs", + "zh/custom-nodes/js/javascript_selection_toolbox", + "zh/custom-nodes/js/javascript_commands_keybindings", + "zh/custom-nodes/js/javascript_topbar_menu", + "zh/custom-nodes/js/context-menu-migration", + "zh/custom-nodes/js/subgraphs", + "zh/custom-nodes/js/javascript_examples", + "zh/custom-nodes/i18n" + ] + }, + "zh/custom-nodes/v3_migration", + "zh/custom-nodes/help_page", + "zh/custom-nodes/workflow_templates", + "zh/custom-nodes/subgraph_blueprints" + ] + }, + { + "group": "注册表(Registry)", + "pages": [ + "zh/registry/overview", + "zh/registry/publishing", + "zh/registry/claim-my-node", + "zh/registry/standards", + "zh/registry/cicd", + "zh/registry/specifications", + "zh/registry/api-reference/overview", + { + "group": "Registry API Reference", + "openapi": "https://api.comfy.org/openapi" + } + ] + } + ] } ] }, @@ -5495,70 +5573,8 @@ "group": "CLI", "pages": [ "zh/comfy-cli/getting-started", - "zh/comfy-cli/reference", - "zh/comfy-cli/troubleshooting" - ] - }, - { - "group": "开发自定义节点", - "pages": [ - "zh/custom-nodes/overview", - "zh/custom-nodes/walkthrough", - { - "group": "后端", - "icon": "python", - "pages": [ - "zh/custom-nodes/backend/server_overview", - "zh/custom-nodes/backend/lifecycle", - "zh/custom-nodes/backend/datatypes", - "zh/custom-nodes/backend/images_and_masks", - "zh/custom-nodes/backend/more_on_inputs", - "zh/custom-nodes/backend/lazy_evaluation", - "zh/custom-nodes/backend/expansion", - "zh/custom-nodes/backend/lists", - "zh/custom-nodes/backend/snippets", - "zh/custom-nodes/backend/tensors", - "zh/custom-nodes/backend/node-replacement" - ] - }, - { - "group": "UI", - "icon": "js", - "pages": [ - "zh/custom-nodes/js/javascript_overview", - "zh/custom-nodes/js/javascript_hooks", - "zh/custom-nodes/js/javascript_objects_and_hijacking", - "zh/custom-nodes/js/javascript_settings", - "zh/custom-nodes/js/javascript_dialog", - "zh/custom-nodes/js/javascript_toast", - "zh/custom-nodes/js/javascript_about_panel_badges", - "zh/custom-nodes/js/javascript_bottom_panel_tabs", - "zh/custom-nodes/js/javascript_sidebar_tabs", - "zh/custom-nodes/js/javascript_selection_toolbox", - "zh/custom-nodes/js/javascript_commands_keybindings", - "zh/custom-nodes/js/javascript_topbar_menu", - "zh/custom-nodes/js/context-menu-migration", - "zh/custom-nodes/js/subgraphs", - "zh/custom-nodes/js/javascript_examples", - "zh/custom-nodes/i18n" - ] - }, - "zh/custom-nodes/v3_migration", - "zh/custom-nodes/help_page", - "zh/custom-nodes/workflow_templates", - "zh/custom-nodes/subgraph_blueprints" - ] - }, - { - "group": "注册表(Registry)", - "pages": [ - "zh/registry/overview", - "zh/registry/publishing", - "zh/registry/claim-my-node", - "zh/registry/standards", - "zh/registry/cicd", - "zh/registry/specifications", - "zh/registry/api-reference/overview" + "zh/comfy-cli/reference", + "zh/comfy-cli/troubleshooting" ] }, { @@ -5639,10 +5655,6 @@ } ] }, - { - "tab": "Registry API Reference", - "openapi": "https://api.comfy.org/openapi" - }, { "tab": "Cloud API 参考文档", "openapi": { @@ -5699,29 +5711,6 @@ ] }, "ja/get_started/cloud", - { - "group": "カスタムノードのインストール", - "icon": "puzzle-piece", - "pages": [ - "ja/installation/install_custom_node", - { - "group": "ComfyUI-Manager", - "pages": [ - "ja/manager/overview", - "ja/manager/install", - { - "group": "カスタムノード管理", - "pages": [ - "ja/manager/pack-management", - "ja/manager/legacy-ui" - ] - }, - "ja/manager/configuration", - "ja/manager/troubleshooting" - ] - } - ] - }, "ja/get_started/first_generation" ] }, @@ -5992,247 +5981,63 @@ }, { "group": "Kandinsky", - "pages": [ - "ja/tutorials/video/kandinsky/kandinsky-5" - ] - }, - { - "group": "ZAI", - "pages": [ - "ja/tutorials/video/zai/scail2" - ] - }, - "ja/tutorials/video/bytedance/bernini-r" - ] - }, - { - "group": "オーディオ", - "pages": [ - { - "group": "Stable Audio 1.0", - "pages": [ - "ja/tutorials/audio/stable-audio/stable-audio-1" - ] - }, - { - "group": "Stable Audio 3", - "pages": [ - "ja/tutorials/audio/stable-audio/stable-audio-3" - ] - }, - { - "group": "ACE-Step", - "pages": [ - "ja/tutorials/audio/ace-step/ace-step-v1", - "ja/tutorials/audio/ace-step/ace-step-v1-5" - ] - } - ] - }, - { - "group": "ユーティリティ", - "pages": [ - "ja/tutorials/utility/preprocessors", - "ja/tutorials/utility/frame-interpolation", - "ja/tutorials/utility/image-upscale", - "ja/tutorials/utility/video-upscale", - "ja/tutorials/utility/void-video-inpainting", - "ja/tutorials/utility/video-segment-sam3", - "ja/tutorials/utility/remove-background-birefnet", - "ja/tutorials/utility/pose-detection-sdpose", - "ja/tutorials/utility/moge", - "ja/tutorials/utility/depth-anything-3", - "ja/tutorials/utility/seedvr2", - { - "group": "顔検出", - "pages": [ - "ja/tutorials/utility/face-detection/mediapipe" - ] - } - ] - } - ] - }, - { - "group": "パートナーノード", - "icon": "handshake", - "pages": [ - "ja/tutorials/partner-nodes/overview", - "ja/tutorials/partner-nodes/faq", - "ja/tutorials/partner-nodes/pricing", - "ja/tutorials/partner-nodes/concurrency-limits", - { - "group": "Black Forest Labs", - "pages": [ - "ja/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", - "ja/tutorials/partner-nodes/black-forest-labs/flux-1-kontext" - ] - }, - { - "group": "Beeble", - "pages": [ - "ja/tutorials/partner-nodes/beeble/beeble-switchx" - ] - }, - { - "group": "ByteDance", - "pages": [ - "ja/tutorials/partner-nodes/bytedance/seedance-2-0", - "ja/tutorials/partner-nodes/bytedance/seedance-2-0-real-human", - "ja/tutorials/partner-nodes/bytedance/seedream-5-pro", - "ja/tutorials/partner-nodes/bytedance/seedream-5-lite", - "ja/tutorials/partner-nodes/bytedance/seed-audio-1-0" - ] - }, - { - "group": "Google", - "pages": [ - "ja/tutorials/partner-nodes/google/gemini", - "ja/tutorials/partner-nodes/google/gemini-omni-flash", - "ja/tutorials/partner-nodes/google/nano-banana-pro", - "ja/tutorials/partner-nodes/google/nano-banana-2", - "ja/tutorials/partner-nodes/google/nano-banana-2-lite" - ] - }, - { - "group": "Anthropic", - "pages": [ - "ja/tutorials/partner-nodes/anthropic/claude" - ] - }, - { - "group": "Ideogram", - "pages": [ - "ja/tutorials/partner-nodes/ideogram/ideogram-v4" - ] - }, - { - "group": "Luma", - "pages": [ - "ja/tutorials/partner-nodes/luma/luma-uni-1", - "ja/tutorials/partner-nodes/luma/luma-text-to-image", - "ja/tutorials/partner-nodes/luma/luma-image-to-image", - "ja/tutorials/partner-nodes/luma/luma-text-to-video", - "ja/tutorials/partner-nodes/luma/luma-image-to-video" - ] - }, - { - "group": "Moonvalley", - "pages": [ - "ja/tutorials/partner-nodes/moonvalley/moonvalley-video-generation" - ] - }, - { - "group": "OpenAI", - "pages": [ - "ja/tutorials/partner-nodes/openai/gpt-image-2", - "ja/tutorials/partner-nodes/openai/gpt-image-1", - "ja/tutorials/partner-nodes/openai/dall-e-2", - "ja/tutorials/partner-nodes/openai/dall-e-3", - "ja/tutorials/partner-nodes/openai/chat" - ] - }, - { - "group": "OpenRouter", - "pages": [ - "ja/tutorials/partner-nodes/openrouter/llm" - ] - }, - { - "group": "Recraft", - "pages": [ - "ja/tutorials/partner-nodes/recraft/recraft-v4", - "ja/tutorials/partner-nodes/recraft/recraft-text-to-image" - ] - }, - { - "group": "Krea 2", - "pages": [ - "ja/tutorials/partner-nodes/krea2/krea2-t2i" - ] - }, - { - "group": "Kling", - "pages": [ - "ja/tutorials/partner-nodes/kling/kling-3-0", - "ja/tutorials/partner-nodes/kling/kling-motion-control" - ] - }, - { - "group": "Runway", - "pages": [ - "ja/tutorials/partner-nodes/runway/image-generation", - "ja/tutorials/partner-nodes/runway/video-generation" - ] - }, - { - "group": "Rodin", - "pages": [ - "ja/tutorials/partner-nodes/rodin/model-generation" - ] - }, - { - "group": "Tripo", - "pages": [ - "ja/tutorials/partner-nodes/tripo/model-generation", - "ja/tutorials/partner-nodes/tripo/tripo-3-1", - "ja/tutorials/partner-nodes/tripo/tripo-p1" - ] - }, - { - "group": "Hunyuan 3D", - "pages": [ - "ja/tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" - ] - }, - { - "group": "Meshy", - "pages": [ - "ja/tutorials/partner-nodes/meshy/meshy-6" - ] - }, - { - "group": "Bria", - "pages": [ - "ja/tutorials/partner-nodes/bria/fibo", - "ja/tutorials/partner-nodes/bria/background-removal" - ] - }, - { - "group": "Reve", - "pages": [ - "ja/tutorials/partner-nodes/reve/reve-image" - ] - }, - { - "group": "Wan", - "pages": [ - "ja/tutorials/partner-nodes/wan/wan2-7" - ] - }, - { - "group": "HappyHorse", - "pages": [ - "ja/tutorials/partner-nodes/happyhorse/happyhorse1-1", - "ja/tutorials/partner-nodes/happyhorse/happyhorse1-0" - ] - }, - { - "group": "Sonilo", - "pages": [ - "ja/tutorials/partner-nodes/sonilo/video-to-music" + "pages": [ + "ja/tutorials/video/kandinsky/kandinsky-5" + ] + }, + { + "group": "ZAI", + "pages": [ + "ja/tutorials/video/zai/scail2" + ] + }, + "ja/tutorials/video/bytedance/bernini-r" ] }, { - "group": "Topaz", + "group": "オーディオ", "pages": [ - "ja/tutorials/partner-nodes/topaz/astra-2" + { + "group": "Stable Audio 1.0", + "pages": [ + "ja/tutorials/audio/stable-audio/stable-audio-1" + ] + }, + { + "group": "Stable Audio 3", + "pages": [ + "ja/tutorials/audio/stable-audio/stable-audio-3" + ] + }, + { + "group": "ACE-Step", + "pages": [ + "ja/tutorials/audio/ace-step/ace-step-v1", + "ja/tutorials/audio/ace-step/ace-step-v1-5" + ] + } ] }, { - "group": "Krea 2", + "group": "ユーティリティ", "pages": [ - "ko/tutorials/partner-nodes/krea2/krea2-t2i" + "ja/tutorials/utility/preprocessors", + "ja/tutorials/utility/frame-interpolation", + "ja/tutorials/utility/image-upscale", + "ja/tutorials/utility/video-upscale", + "ja/tutorials/utility/void-video-inpainting", + "ja/tutorials/utility/video-segment-sam3", + "ja/tutorials/utility/remove-background-birefnet", + "ja/tutorials/utility/pose-detection-sdpose", + "ja/tutorials/utility/moge", + "ja/tutorials/utility/depth-anything-3", + "ja/tutorials/utility/seedvr2", + { + "group": "顔検出", + "pages": [ + "ja/tutorials/utility/face-detection/mediapipe" + ] + } ] } ] @@ -6240,12 +6045,12 @@ ] }, { - "tab": "組み込みノード", + "tab": "ノード", "pages": [ - "ja/built-in-nodes/overview", { - "group": "ノード", + "group": "コアノード", "pages": [ + "ja/built-in-nodes/overview", { "group": "3D", "pages": [ @@ -8286,6 +8091,284 @@ ] } ] + }, + { + "group": "パートナーノード", + "icon": "handshake", + "pages": [ + "ja/tutorials/partner-nodes/overview", + "ja/tutorials/partner-nodes/faq", + "ja/tutorials/partner-nodes/pricing", + "ja/tutorials/partner-nodes/concurrency-limits", + { + "group": "Black Forest Labs", + "pages": [ + "ja/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", + "ja/tutorials/partner-nodes/black-forest-labs/flux-1-kontext" + ] + }, + { + "group": "Beeble", + "pages": [ + "ja/tutorials/partner-nodes/beeble/beeble-switchx" + ] + }, + { + "group": "ByteDance", + "pages": [ + "ja/tutorials/partner-nodes/bytedance/seedance-2-0", + "ja/tutorials/partner-nodes/bytedance/seedance-2-0-real-human", + "ja/tutorials/partner-nodes/bytedance/seedream-5-pro", + "ja/tutorials/partner-nodes/bytedance/seedream-5-lite", + "ja/tutorials/partner-nodes/bytedance/seed-audio-1-0" + ] + }, + { + "group": "Google", + "pages": [ + "ja/tutorials/partner-nodes/google/gemini", + "ja/tutorials/partner-nodes/google/gemini-omni-flash", + "ja/tutorials/partner-nodes/google/nano-banana-pro", + "ja/tutorials/partner-nodes/google/nano-banana-2", + "ja/tutorials/partner-nodes/google/nano-banana-2-lite" + ] + }, + { + "group": "Anthropic", + "pages": [ + "ja/tutorials/partner-nodes/anthropic/claude" + ] + }, + { + "group": "Ideogram", + "pages": [ + "ja/tutorials/partner-nodes/ideogram/ideogram-v4" + ] + }, + { + "group": "Luma", + "pages": [ + "ja/tutorials/partner-nodes/luma/luma-uni-1", + "ja/tutorials/partner-nodes/luma/luma-text-to-image", + "ja/tutorials/partner-nodes/luma/luma-image-to-image", + "ja/tutorials/partner-nodes/luma/luma-text-to-video", + "ja/tutorials/partner-nodes/luma/luma-image-to-video" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "ja/tutorials/partner-nodes/moonvalley/moonvalley-video-generation" + ] + }, + { + "group": "OpenAI", + "pages": [ + "ja/tutorials/partner-nodes/openai/gpt-image-2", + "ja/tutorials/partner-nodes/openai/gpt-image-1", + "ja/tutorials/partner-nodes/openai/dall-e-2", + "ja/tutorials/partner-nodes/openai/dall-e-3", + "ja/tutorials/partner-nodes/openai/chat" + ] + }, + { + "group": "OpenRouter", + "pages": [ + "ja/tutorials/partner-nodes/openrouter/llm" + ] + }, + { + "group": "Recraft", + "pages": [ + "ja/tutorials/partner-nodes/recraft/recraft-v4", + "ja/tutorials/partner-nodes/recraft/recraft-text-to-image" + ] + }, + { + "group": "Krea 2", + "pages": [ + "ja/tutorials/partner-nodes/krea2/krea2-t2i" + ] + }, + { + "group": "Kling", + "pages": [ + "ja/tutorials/partner-nodes/kling/kling-3-0", + "ja/tutorials/partner-nodes/kling/kling-motion-control" + ] + }, + { + "group": "Runway", + "pages": [ + "ja/tutorials/partner-nodes/runway/image-generation", + "ja/tutorials/partner-nodes/runway/video-generation" + ] + }, + { + "group": "Rodin", + "pages": [ + "ja/tutorials/partner-nodes/rodin/model-generation" + ] + }, + { + "group": "Tripo", + "pages": [ + "ja/tutorials/partner-nodes/tripo/model-generation", + "ja/tutorials/partner-nodes/tripo/tripo-3-1", + "ja/tutorials/partner-nodes/tripo/tripo-p1" + ] + }, + { + "group": "Hunyuan 3D", + "pages": [ + "ja/tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" + ] + }, + { + "group": "Meshy", + "pages": [ + "ja/tutorials/partner-nodes/meshy/meshy-6" + ] + }, + { + "group": "Bria", + "pages": [ + "ja/tutorials/partner-nodes/bria/fibo", + "ja/tutorials/partner-nodes/bria/background-removal" + ] + }, + { + "group": "Reve", + "pages": [ + "ja/tutorials/partner-nodes/reve/reve-image" + ] + }, + { + "group": "Wan", + "pages": [ + "ja/tutorials/partner-nodes/wan/wan2-7" + ] + }, + { + "group": "HappyHorse", + "pages": [ + "ja/tutorials/partner-nodes/happyhorse/happyhorse1-1", + "ja/tutorials/partner-nodes/happyhorse/happyhorse1-0" + ] + }, + { + "group": "Sonilo", + "pages": [ + "ja/tutorials/partner-nodes/sonilo/video-to-music" + ] + }, + { + "group": "Topaz", + "pages": [ + "ja/tutorials/partner-nodes/topaz/astra-2" + ] + }, + { + "group": "Krea 2", + "pages": [ + "ko/tutorials/partner-nodes/krea2/krea2-t2i" + ] + } + ] + }, + { + "group": "カスタムノード", + "pages": [ + { + "group": "カスタムノードのインストール", + "icon": "puzzle-piece", + "pages": [ + "ja/installation/install_custom_node", + { + "group": "ComfyUI-Manager", + "pages": [ + "ja/manager/overview", + "ja/manager/install", + { + "group": "カスタムノード管理", + "pages": [ + "ja/manager/pack-management", + "ja/manager/legacy-ui" + ] + }, + "ja/manager/configuration", + "ja/manager/troubleshooting" + ] + } + ] + }, + { + "group": "カスタムノード開発", + "pages": [ + "ja/custom-nodes/overview", + "ja/custom-nodes/walkthrough", + { + "group": "バックエンド", + "icon": "python", + "pages": [ + "ja/custom-nodes/backend/server_overview", + "ja/custom-nodes/backend/lifecycle", + "ja/custom-nodes/backend/datatypes", + "ja/custom-nodes/backend/images_and_masks", + "ja/custom-nodes/backend/more_on_inputs", + "ja/custom-nodes/backend/lazy_evaluation", + "ja/custom-nodes/backend/expansion", + "ja/custom-nodes/backend/lists", + "ja/custom-nodes/backend/snippets", + "ja/custom-nodes/backend/tensors", + "ja/custom-nodes/backend/node-replacement" + ] + }, + { + "group": "UI", + "icon": "js", + "pages": [ + "ja/custom-nodes/js/javascript_overview", + "ja/custom-nodes/js/javascript_hooks", + "ja/custom-nodes/js/javascript_objects_and_hijacking", + "ja/custom-nodes/js/javascript_settings", + "ja/custom-nodes/js/javascript_dialog", + "ja/custom-nodes/js/javascript_toast", + "ja/custom-nodes/js/javascript_about_panel_badges", + "ja/custom-nodes/js/javascript_bottom_panel_tabs", + "ja/custom-nodes/js/javascript_sidebar_tabs", + "ja/custom-nodes/js/javascript_selection_toolbox", + "ja/custom-nodes/js/javascript_commands_keybindings", + "ja/custom-nodes/js/javascript_topbar_menu", + "ja/custom-nodes/js/context-menu-migration", + "ja/custom-nodes/js/subgraphs", + "ja/custom-nodes/js/javascript_examples", + "ja/custom-nodes/i18n" + ] + }, + "ja/custom-nodes/v3_migration", + "ja/custom-nodes/help_page", + "ja/custom-nodes/workflow_templates", + "ja/custom-nodes/subgraph_blueprints" + ] + }, + { + "group": "レジストリ(Registry)", + "pages": [ + "ja/registry/overview", + "ja/registry/publishing", + "ja/registry/claim-my-node", + "ja/registry/standards", + "ja/registry/cicd", + "ja/registry/specifications", + "ja/registry/api-reference/overview", + { + "group": "Registry APIリファレンス", + "openapi": "https://api.comfy.org/openapi" + } + ] + } + ] } ] }, @@ -8332,68 +8415,6 @@ "ja/comfy-cli/troubleshooting" ] }, - { - "group": "カスタムノード開発", - "pages": [ - "ja/custom-nodes/overview", - "ja/custom-nodes/walkthrough", - { - "group": "バックエンド", - "icon": "python", - "pages": [ - "ja/custom-nodes/backend/server_overview", - "ja/custom-nodes/backend/lifecycle", - "ja/custom-nodes/backend/datatypes", - "ja/custom-nodes/backend/images_and_masks", - "ja/custom-nodes/backend/more_on_inputs", - "ja/custom-nodes/backend/lazy_evaluation", - "ja/custom-nodes/backend/expansion", - "ja/custom-nodes/backend/lists", - "ja/custom-nodes/backend/snippets", - "ja/custom-nodes/backend/tensors", - "ja/custom-nodes/backend/node-replacement" - ] - }, - { - "group": "UI", - "icon": "js", - "pages": [ - "ja/custom-nodes/js/javascript_overview", - "ja/custom-nodes/js/javascript_hooks", - "ja/custom-nodes/js/javascript_objects_and_hijacking", - "ja/custom-nodes/js/javascript_settings", - "ja/custom-nodes/js/javascript_dialog", - "ja/custom-nodes/js/javascript_toast", - "ja/custom-nodes/js/javascript_about_panel_badges", - "ja/custom-nodes/js/javascript_bottom_panel_tabs", - "ja/custom-nodes/js/javascript_sidebar_tabs", - "ja/custom-nodes/js/javascript_selection_toolbox", - "ja/custom-nodes/js/javascript_commands_keybindings", - "ja/custom-nodes/js/javascript_topbar_menu", - "ja/custom-nodes/js/context-menu-migration", - "ja/custom-nodes/js/subgraphs", - "ja/custom-nodes/js/javascript_examples", - "ja/custom-nodes/i18n" - ] - }, - "ja/custom-nodes/v3_migration", - "ja/custom-nodes/help_page", - "ja/custom-nodes/workflow_templates", - "ja/custom-nodes/subgraph_blueprints" - ] - }, - { - "group": "レジストリ(Registry)", - "pages": [ - "ja/registry/overview", - "ja/registry/publishing", - "ja/registry/claim-my-node", - "ja/registry/standards", - "ja/registry/cicd", - "ja/registry/specifications", - "ja/registry/api-reference/overview" - ] - }, { "group": "仕様", "pages": [ @@ -8472,10 +8493,6 @@ } ] }, - { - "tab": "Registry APIリファレンス", - "openapi": "https://api.comfy.org/openapi" - }, { "tab": "Cloud APIリファレンス", "openapi": { @@ -8610,29 +8627,6 @@ ] }, "ko/get_started/cloud", - { - "group": "커스텀 노드 설치", - "icon": "puzzle-piece", - "pages": [ - "ko/installation/install_custom_node", - { - "group": "ComfyUI 매니저", - "pages": [ - "ko/manager/overview", - "ko/manager/install", - { - "group": "노드 관리", - "pages": [ - "ko/manager/pack-management", - "ko/manager/legacy-ui" - ] - }, - "ko/manager/configuration", - "ko/manager/troubleshooting" - ] - } - ] - }, "ko/get_started/first_generation" ] }, @@ -8926,209 +8920,38 @@ { "group": "Stable Audio 3", "pages": [ - "ko/tutorials/audio/stable-audio/stable-audio-3" - ] - }, - { - "group": "ACE-Step", - "pages": [ - "ko/tutorials/audio/ace-step/ace-step-v1", - "ko/tutorials/audio/ace-step/ace-step-v1-5" - ] - } - ] - }, - { - "group": "유틸리티", - "pages": [ - "ko/tutorials/utility/preprocessors", - "ko/tutorials/utility/frame-interpolation", - "ko/tutorials/utility/image-upscale", - "ko/tutorials/utility/video-upscale", - "ko/tutorials/utility/void-video-inpainting", - "ko/tutorials/utility/video-segment-sam3", - "ko/tutorials/utility/remove-background-birefnet", - "ko/tutorials/utility/pose-detection-sdpose", - "ko/tutorials/utility/moge", - "ko/tutorials/utility/depth-anything-3", - "ko/tutorials/utility/seedvr2", - { - "group": "얼굴 감지", - "pages": [ - "ko/tutorials/utility/face-detection/mediapipe" - ] - } - ] - } - ] - }, - { - "group": "파트너 노드", - "icon": "handshake", - "pages": [ - "ko/tutorials/partner-nodes/overview", - "ko/tutorials/partner-nodes/faq", - "ko/tutorials/partner-nodes/pricing", - "ko/tutorials/partner-nodes/concurrency-limits", - { - "group": "Black Forest Labs", - "pages": [ - "ko/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", - "ko/tutorials/partner-nodes/black-forest-labs/flux-1-kontext" - ] - }, - { - "group": "Beeble", - "pages": [ - "ko/tutorials/partner-nodes/beeble/beeble-switchx" - ] - }, - { - "group": "ByteDance", - "pages": [ - "ko/tutorials/partner-nodes/bytedance/seedance-2-0", - "ko/tutorials/partner-nodes/bytedance/seedance-2-0-real-human", - "ko/tutorials/partner-nodes/bytedance/seedream-5-pro", - "ko/tutorials/partner-nodes/bytedance/seedream-5-lite", - "ko/tutorials/partner-nodes/bytedance/seed-audio-1-0" - ] - }, - { - "group": "Google", - "pages": [ - "ko/tutorials/partner-nodes/google/gemini", - "ko/tutorials/partner-nodes/google/gemini-omni-flash", - "ko/tutorials/partner-nodes/google/nano-banana-pro", - "ko/tutorials/partner-nodes/google/nano-banana-2", - "ko/tutorials/partner-nodes/google/nano-banana-2-lite" - ] - }, - { - "group": "Anthropic", - "pages": [ - "ko/tutorials/partner-nodes/anthropic/claude" - ] - }, - { - "group": "Ideogram", - "pages": [ - "ko/tutorials/partner-nodes/ideogram/ideogram-v4" - ] - }, - { - "group": "Luma", - "pages": [ - "ko/tutorials/partner-nodes/luma/luma-uni-1", - "ko/tutorials/partner-nodes/luma/luma-text-to-image", - "ko/tutorials/partner-nodes/luma/luma-image-to-image", - "ko/tutorials/partner-nodes/luma/luma-text-to-video", - "ko/tutorials/partner-nodes/luma/luma-image-to-video" - ] - }, - { - "group": "Moonvalley", - "pages": [ - "ko/tutorials/partner-nodes/moonvalley/moonvalley-video-generation" - ] - }, - { - "group": "OpenAI", - "pages": [ - "ko/tutorials/partner-nodes/openai/gpt-image-2", - "ko/tutorials/partner-nodes/openai/gpt-image-1", - "ko/tutorials/partner-nodes/openai/dall-e-2", - "ko/tutorials/partner-nodes/openai/dall-e-3", - "ko/tutorials/partner-nodes/openai/chat" - ] - }, - { - "group": "OpenRouter", - "pages": [ - "ko/tutorials/partner-nodes/openrouter/llm" - ] - }, - { - "group": "Recraft", - "pages": [ - "ko/tutorials/partner-nodes/recraft/recraft-v4", - "ko/tutorials/partner-nodes/recraft/recraft-text-to-image" - ] - }, - { - "group": "Kling", - "pages": [ - "ko/tutorials/partner-nodes/kling/kling-3-0", - "ko/tutorials/partner-nodes/kling/kling-motion-control" - ] - }, - { - "group": "Runway", - "pages": [ - "ko/tutorials/partner-nodes/runway/image-generation", - "ko/tutorials/partner-nodes/runway/video-generation" - ] - }, - { - "group": "Rodin", - "pages": [ - "ko/tutorials/partner-nodes/rodin/model-generation" - ] - }, - { - "group": "Tripo", - "pages": [ - "ko/tutorials/partner-nodes/tripo/model-generation", - "ko/tutorials/partner-nodes/tripo/tripo-3-1" - ] - }, - { - "group": "Hunyuan 3D", - "pages": [ - "ko/tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" - ] - }, - { - "group": "Meshy", - "pages": [ - "ko/tutorials/partner-nodes/meshy/meshy-6" - ] - }, - { - "group": "Bria", - "pages": [ - "ko/tutorials/partner-nodes/bria/fibo", - "ko/tutorials/partner-nodes/bria/background-removal" - ] - }, - { - "group": "Reve", - "pages": [ - "ko/tutorials/partner-nodes/reve/reve-image" - ] - }, - { - "group": "Wan", - "pages": [ - "ko/tutorials/partner-nodes/wan/wan2-7" - ] - }, - { - "group": "HappyHorse", - "pages": [ - "ko/tutorials/partner-nodes/happyhorse/happyhorse1-1", - "ko/tutorials/partner-nodes/happyhorse/happyhorse1-0" - ] - }, - { - "group": "Sonilo", - "pages": [ - "ko/tutorials/partner-nodes/sonilo/video-to-music" + "ko/tutorials/audio/stable-audio/stable-audio-3" + ] + }, + { + "group": "ACE-Step", + "pages": [ + "ko/tutorials/audio/ace-step/ace-step-v1", + "ko/tutorials/audio/ace-step/ace-step-v1-5" + ] + } ] }, { - "group": "Topaz", + "group": "유틸리티", "pages": [ - "ko/tutorials/partner-nodes/topaz/astra-2" + "ko/tutorials/utility/preprocessors", + "ko/tutorials/utility/frame-interpolation", + "ko/tutorials/utility/image-upscale", + "ko/tutorials/utility/video-upscale", + "ko/tutorials/utility/void-video-inpainting", + "ko/tutorials/utility/video-segment-sam3", + "ko/tutorials/utility/remove-background-birefnet", + "ko/tutorials/utility/pose-detection-sdpose", + "ko/tutorials/utility/moge", + "ko/tutorials/utility/depth-anything-3", + "ko/tutorials/utility/seedvr2", + { + "group": "얼굴 감지", + "pages": [ + "ko/tutorials/utility/face-detection/mediapipe" + ] + } ] } ] @@ -9137,12 +8960,12 @@ ] }, { - "tab": "내장 노드 (Built-in Nodes)", + "tab": "노드", "pages": [ - "ko/built-in-nodes/overview", { - "group": "노드", + "group": "코어 노드", "pages": [ + "ko/built-in-nodes/overview", { "group": "3D", "pages": [ @@ -11063,6 +10886,271 @@ ] } ] + }, + { + "group": "파트너 노드", + "icon": "handshake", + "pages": [ + "ko/tutorials/partner-nodes/overview", + "ko/tutorials/partner-nodes/faq", + "ko/tutorials/partner-nodes/pricing", + "ko/tutorials/partner-nodes/concurrency-limits", + { + "group": "Black Forest Labs", + "pages": [ + "ko/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image", + "ko/tutorials/partner-nodes/black-forest-labs/flux-1-kontext" + ] + }, + { + "group": "Beeble", + "pages": [ + "ko/tutorials/partner-nodes/beeble/beeble-switchx" + ] + }, + { + "group": "ByteDance", + "pages": [ + "ko/tutorials/partner-nodes/bytedance/seedance-2-0", + "ko/tutorials/partner-nodes/bytedance/seedance-2-0-real-human", + "ko/tutorials/partner-nodes/bytedance/seedream-5-pro", + "ko/tutorials/partner-nodes/bytedance/seedream-5-lite", + "ko/tutorials/partner-nodes/bytedance/seed-audio-1-0" + ] + }, + { + "group": "Google", + "pages": [ + "ko/tutorials/partner-nodes/google/gemini", + "ko/tutorials/partner-nodes/google/gemini-omni-flash", + "ko/tutorials/partner-nodes/google/nano-banana-pro", + "ko/tutorials/partner-nodes/google/nano-banana-2", + "ko/tutorials/partner-nodes/google/nano-banana-2-lite" + ] + }, + { + "group": "Anthropic", + "pages": [ + "ko/tutorials/partner-nodes/anthropic/claude" + ] + }, + { + "group": "Ideogram", + "pages": [ + "ko/tutorials/partner-nodes/ideogram/ideogram-v4" + ] + }, + { + "group": "Luma", + "pages": [ + "ko/tutorials/partner-nodes/luma/luma-uni-1", + "ko/tutorials/partner-nodes/luma/luma-text-to-image", + "ko/tutorials/partner-nodes/luma/luma-image-to-image", + "ko/tutorials/partner-nodes/luma/luma-text-to-video", + "ko/tutorials/partner-nodes/luma/luma-image-to-video" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "ko/tutorials/partner-nodes/moonvalley/moonvalley-video-generation" + ] + }, + { + "group": "OpenAI", + "pages": [ + "ko/tutorials/partner-nodes/openai/gpt-image-2", + "ko/tutorials/partner-nodes/openai/gpt-image-1", + "ko/tutorials/partner-nodes/openai/dall-e-2", + "ko/tutorials/partner-nodes/openai/dall-e-3", + "ko/tutorials/partner-nodes/openai/chat" + ] + }, + { + "group": "OpenRouter", + "pages": [ + "ko/tutorials/partner-nodes/openrouter/llm" + ] + }, + { + "group": "Recraft", + "pages": [ + "ko/tutorials/partner-nodes/recraft/recraft-v4", + "ko/tutorials/partner-nodes/recraft/recraft-text-to-image" + ] + }, + { + "group": "Kling", + "pages": [ + "ko/tutorials/partner-nodes/kling/kling-3-0", + "ko/tutorials/partner-nodes/kling/kling-motion-control" + ] + }, + { + "group": "Runway", + "pages": [ + "ko/tutorials/partner-nodes/runway/image-generation", + "ko/tutorials/partner-nodes/runway/video-generation" + ] + }, + { + "group": "Rodin", + "pages": [ + "ko/tutorials/partner-nodes/rodin/model-generation" + ] + }, + { + "group": "Tripo", + "pages": [ + "ko/tutorials/partner-nodes/tripo/model-generation", + "ko/tutorials/partner-nodes/tripo/tripo-3-1" + ] + }, + { + "group": "Hunyuan 3D", + "pages": [ + "ko/tutorials/partner-nodes/hunyuan3d/hunyuan3d-3-0" + ] + }, + { + "group": "Meshy", + "pages": [ + "ko/tutorials/partner-nodes/meshy/meshy-6" + ] + }, + { + "group": "Bria", + "pages": [ + "ko/tutorials/partner-nodes/bria/fibo", + "ko/tutorials/partner-nodes/bria/background-removal" + ] + }, + { + "group": "Reve", + "pages": [ + "ko/tutorials/partner-nodes/reve/reve-image" + ] + }, + { + "group": "Wan", + "pages": [ + "ko/tutorials/partner-nodes/wan/wan2-7" + ] + }, + { + "group": "HappyHorse", + "pages": [ + "ko/tutorials/partner-nodes/happyhorse/happyhorse1-1", + "ko/tutorials/partner-nodes/happyhorse/happyhorse1-0" + ] + }, + { + "group": "Sonilo", + "pages": [ + "ko/tutorials/partner-nodes/sonilo/video-to-music" + ] + }, + { + "group": "Topaz", + "pages": [ + "ko/tutorials/partner-nodes/topaz/astra-2" + ] + } + ] + }, + { + "group": "커스텀 노드", + "pages": [ + { + "group": "커스텀 노드 설치", + "icon": "puzzle-piece", + "pages": [ + "ko/installation/install_custom_node", + { + "group": "ComfyUI 매니저", + "pages": [ + "ko/manager/overview", + "ko/manager/install", + { + "group": "노드 관리", + "pages": [ + "ko/manager/pack-management", + "ko/manager/legacy-ui" + ] + }, + "ko/manager/configuration", + "ko/manager/troubleshooting" + ] + } + ] + }, + { + "group": "커스텀 노드 개발", + "pages": [ + "ko/custom-nodes/overview", + "ko/custom-nodes/walkthrough", + { + "group": "백엔드", + "icon": "python", + "pages": [ + "ko/custom-nodes/backend/server_overview", + "ko/custom-nodes/backend/lifecycle", + "ko/custom-nodes/backend/datatypes", + "ko/custom-nodes/backend/images_and_masks", + "ko/custom-nodes/backend/more_on_inputs", + "ko/custom-nodes/backend/lazy_evaluation", + "ko/custom-nodes/backend/expansion", + "ko/custom-nodes/backend/lists", + "ko/custom-nodes/backend/snippets", + "ko/custom-nodes/backend/tensors", + "ko/custom-nodes/backend/node-replacement" + ] + }, + { + "group": "UI", + "icon": "js", + "pages": [ + "ko/custom-nodes/js/javascript_overview", + "ko/custom-nodes/js/javascript_hooks", + "ko/custom-nodes/js/javascript_objects_and_hijacking", + "ko/custom-nodes/js/javascript_settings", + "ko/custom-nodes/js/javascript_dialog", + "ko/custom-nodes/js/javascript_toast", + "ko/custom-nodes/js/javascript_about_panel_badges", + "ko/custom-nodes/js/javascript_bottom_panel_tabs", + "ko/custom-nodes/js/javascript_sidebar_tabs", + "ko/custom-nodes/js/javascript_selection_toolbox", + "ko/custom-nodes/js/javascript_commands_keybindings", + "ko/custom-nodes/js/javascript_topbar_menu", + "ko/custom-nodes/js/context-menu-migration", + "ko/custom-nodes/js/subgraphs", + "ko/custom-nodes/js/javascript_examples", + "ko/custom-nodes/i18n" + ] + }, + "ko/custom-nodes/v3_migration", + "ko/custom-nodes/help_page", + "ko/custom-nodes/workflow_templates", + "ko/custom-nodes/subgraph_blueprints" + ] + }, + { + "group": "레지스트리", + "pages": [ + "ko/registry/overview", + "ko/registry/publishing", + "ko/registry/claim-my-node", + "ko/registry/standards", + "ko/registry/cicd", + "ko/registry/specifications", + "ko/registry/api-reference/overview", + { + "group": "Registry API 참조", + "openapi": "https://api.comfy.org/openapi" + } + ] + } + ] } ] }, @@ -11109,68 +11197,6 @@ "ko/comfy-cli/troubleshooting" ] }, - { - "group": "커스텀 노드 개발", - "pages": [ - "ko/custom-nodes/overview", - "ko/custom-nodes/walkthrough", - { - "group": "백엔드", - "icon": "python", - "pages": [ - "ko/custom-nodes/backend/server_overview", - "ko/custom-nodes/backend/lifecycle", - "ko/custom-nodes/backend/datatypes", - "ko/custom-nodes/backend/images_and_masks", - "ko/custom-nodes/backend/more_on_inputs", - "ko/custom-nodes/backend/lazy_evaluation", - "ko/custom-nodes/backend/expansion", - "ko/custom-nodes/backend/lists", - "ko/custom-nodes/backend/snippets", - "ko/custom-nodes/backend/tensors", - "ko/custom-nodes/backend/node-replacement" - ] - }, - { - "group": "UI", - "icon": "js", - "pages": [ - "ko/custom-nodes/js/javascript_overview", - "ko/custom-nodes/js/javascript_hooks", - "ko/custom-nodes/js/javascript_objects_and_hijacking", - "ko/custom-nodes/js/javascript_settings", - "ko/custom-nodes/js/javascript_dialog", - "ko/custom-nodes/js/javascript_toast", - "ko/custom-nodes/js/javascript_about_panel_badges", - "ko/custom-nodes/js/javascript_bottom_panel_tabs", - "ko/custom-nodes/js/javascript_sidebar_tabs", - "ko/custom-nodes/js/javascript_selection_toolbox", - "ko/custom-nodes/js/javascript_commands_keybindings", - "ko/custom-nodes/js/javascript_topbar_menu", - "ko/custom-nodes/js/context-menu-migration", - "ko/custom-nodes/js/subgraphs", - "ko/custom-nodes/js/javascript_examples", - "ko/custom-nodes/i18n" - ] - }, - "ko/custom-nodes/v3_migration", - "ko/custom-nodes/help_page", - "ko/custom-nodes/workflow_templates", - "ko/custom-nodes/subgraph_blueprints" - ] - }, - { - "group": "레지스트리", - "pages": [ - "ko/registry/overview", - "ko/registry/publishing", - "ko/registry/claim-my-node", - "ko/registry/standards", - "ko/registry/cicd", - "ko/registry/specifications", - "ko/registry/api-reference/overview" - ] - }, { "group": "스펙", "pages": [ @@ -11249,10 +11275,6 @@ } ] }, - { - "tab": "Registry API 참조", - "openapi": "https://api.comfy.org/openapi" - }, { "tab": "Cloud API 참조", "openapi": { @@ -11786,4 +11808,4 @@ "destination": "/ko/tutorials/partner-nodes/overview" } ] -} \ No newline at end of file +} diff --git a/nodes/index.mdx b/nodes/index.mdx new file mode 100644 index 000000000..d6f4e49c2 --- /dev/null +++ b/nodes/index.mdx @@ -0,0 +1,31 @@ +--- +title: "Nodes" +description: "The three kinds of nodes in ComfyUI: core nodes, partner nodes, and custom nodes." +sidebarTitle: "Overview" +--- + +A node is a single unit of work in a workflow. It takes inputs, does something with them (load a model, encode a prompt, sample, save an image), and passes its outputs to the next node. Workflows are built by connecting nodes together. + +## Core nodes + +Built-in nodes maintained by the Comfy Org team. They ship with every ComfyUI install and run on your own hardware. + + + Reference for every built-in node, grouped by category. + + +## Partner nodes + +Nodes that provide access to third-party models (Nano Banana, Seedance, Kling, and others). They are included with ComfyUI, run on the provider's infrastructure, and cost [credits](/interface/credits) to run. + + + Prerequisites, pricing, and per-model guides. + + +## Custom nodes + +Community-built nodes you install yourself from the [Comfy Registry](https://registry.comfy.org), usually through ComfyUI Manager. You can also write and publish your own. + + + Installing, managing, developing, and publishing custom nodes. +