diff --git a/.github/scripts/validate-links.py b/.github/scripts/validate-links.py index d7894f3d2..e0cbaaf65 100644 --- a/.github/scripts/validate-links.py +++ b/.github/scripts/validate-links.py @@ -1,312 +1,645 @@ #!/usr/bin/env python3 """ -Link validation script for bilingual documentation. +Link validation script for multilingual documentation. -This script validates links in a bilingual documentation project to ensure: -1. Chinese documents don't use English links -2. English documents don't use Chinese links -3. English documents don't use Chinese images -4. Chinese documents can use English images (allowed) +Validates that each locale's documents link to matching locale content: +- zh / ja / ko docs must not use English internal links or snippet imports +- English docs must not use localized (zh / ja / ko) links or images +- Localized docs may use shared English images under /images/ (not /images/zh/) + +Usage: + python3 validate-links.py # CI: auto-fix .mdx extensions & slashes, then validate + python3 validate-links.py --fix # Also fix locale links and snippet imports + python3 validate-links.py --check # Validate only (no file modifications) """ -import os +import argparse +import glob import re import sys -import glob -from pathlib import Path -from typing import List, Dict, Any, Tuple - -# Configuration rules -RULES = { - 'ZH_CN_DIR': 'zh', - 'ZH_SNIPPETS_DIR': 'snippets/zh', - 'ZH_IMAGES_DIR': 'images/zh', - 'COMMON_IMAGES_DIR': 'images' +from typing import Any, Dict, List, Optional, Tuple + +LOCALES = { + 'zh': { + 'name': 'Chinese', + 'doc_dirs': ('zh', 'snippets/zh'), + 'link_prefixes': ('/zh/', '/snippets/zh/', '/images/zh/'), + }, + 'ja': { + 'name': 'Japanese', + 'doc_dirs': ('ja', 'snippets/ja'), + 'link_prefixes': ('/ja/', '/snippets/ja/'), + }, + 'ko': { + 'name': 'Korean', + 'doc_dirs': ('ko', 'snippets/ko'), + 'link_prefixes': ('/ko/', '/snippets/ko/'), + }, } -# Error collector -errors = [] -# Fixed files collector -fixed_files = [] - -def is_chinese_doc(file_path: str) -> bool: - """Check if file is a Chinese document.""" - return (f"/{RULES['ZH_CN_DIR']}/" in file_path or - f"{RULES['ZH_SNIPPETS_DIR']}/" in file_path or - file_path.startswith(RULES['ZH_CN_DIR']) or - file_path.startswith(RULES['ZH_SNIPPETS_DIR'])) - -def is_english_doc(file_path: str) -> bool: - """Check if file is an English document.""" - return not is_chinese_doc(file_path) - -def is_chinese_link(link: str) -> bool: - """Check if link points to Chinese content.""" - return (f"/{RULES['ZH_CN_DIR']}/" in link or - f"/{RULES['ZH_SNIPPETS_DIR']}/" in link or - f"/{RULES['ZH_IMAGES_DIR']}/" in link) - -def is_english_link(link: str) -> bool: - """Check if link points to English content.""" - return (not is_chinese_link(link) and - not link.startswith('http') and - not link.startswith('mailto:') and - not link.startswith('#') and - not link.startswith('./') and - not link.startswith('../')) - -def is_chinese_image(image_path: str) -> bool: - """Check if image is in Chinese image directory.""" - return f"/{RULES['ZH_IMAGES_DIR']}/" in image_path +DOC_PATH_PATTERNS = ( + 'zh/', 'ja/', 'ko/', + 'tutorials/', 'built-in-nodes/', 'interface/', 'installation/', + 'development/', 'custom-nodes/', 'troubleshooting/', 'registry/', 'specs/', + 'get_started/', 'changelog/', 'comfy-cli/', 'snippets/', 'community/', + 'desktop/', 'cloud/', 'manager/', 'account/', +) -def extract_links(content: str, file_path: str) -> List[Dict[str, Any]]: - """Extract links from file content.""" - links = [] - - # Match markdown links [text](link) - markdown_links = re.findall(r'\[([^\]]+)\]\(([^)]+)\)', content) - for text, url in markdown_links: +# Shared asset paths that localized docs may reference without a locale prefix. +SHARED_PATH_PREFIXES = ('/images/',) + +FENCE_LINE_RE = re.compile(r'^(```+|~~~+)') + +errors: List[Dict[str, Any]] = [] +fixed_files: List[str] = [] + + +def iter_prose_segments(content: str): + """Yield content outside fenced code blocks (``` or ~~~).""" + lines = content.split('\n') + chunk: List[str] = [] + in_fence = False + fence_marker = '' + + for line in lines: + stripped = line.lstrip() + if not in_fence: + match = FENCE_LINE_RE.match(stripped) + if match: + if chunk: + yield '\n'.join(chunk) + chunk = [] + in_fence = True + fence_marker = match.group(1) + continue + chunk.append(line) + continue + + if FENCE_LINE_RE.match(stripped): + in_fence = False + fence_marker = '' + + if chunk: + yield '\n'.join(chunk) + + +def transform_outside_code_fences(content: str, transform_fn) -> Tuple[str, bool]: + """Apply transform_fn only to prose (non-fenced) segments.""" + lines = content.split('\n') + result: List[str] = [] + chunk: List[str] = [] + in_fence = False + changed = False + + def flush_chunk() -> None: + nonlocal changed + if not chunk: + return + block = '\n'.join(chunk) + new_block = transform_fn(block) + if new_block != block: + changed = True + result.append(new_block) + chunk.clear() + + for line in lines: + stripped = line.lstrip() + if not in_fence: + match = FENCE_LINE_RE.match(stripped) + if match: + flush_chunk() + in_fence = True + result.append(line) + continue + chunk.append(line) + continue + + result.append(line) + if FENCE_LINE_RE.match(stripped): + in_fence = False + + flush_chunk() + return '\n'.join(result), changed + + +def normalize_path(file_path: str) -> str: + return file_path.replace('\\', '/') + + +def get_doc_locale(file_path: str) -> Optional[str]: + """Return locale code for a localized doc, or None for English.""" + normalized = normalize_path(file_path) + for code, config in LOCALES.items(): + for doc_dir in config['doc_dirs']: + if f'/{doc_dir}/' in normalized or normalized.startswith(f'{doc_dir}/'): + return code + return None + + +def is_external_or_special(link: str) -> bool: + return ( + link.startswith('http') + or link.startswith('mailto:') + or link.startswith('#') + or link.startswith('./') + or link.startswith('../') + or not link.strip() + ) + + +def get_link_locale(link: str) -> Optional[str]: + """Return locale code if link points to localized content.""" + for code, config in LOCALES.items(): + if any(prefix in link for prefix in config['link_prefixes']): + return code + return None + + +def is_doc_internal_path(path: str) -> bool: + """Absolute in-repo doc/snippet path (not JS modules like fs/promises).""" + normalized = path.replace('\\', '/') + if not normalized.startswith('/'): + return False + if is_external_or_special(path): + return False + if normalized.startswith('/snippets/'): + return True + without_slash = normalized[1:] + return any(without_slash.startswith(pattern) for pattern in DOC_PATH_PATTERNS) + + +def is_english_internal_link(link: str) -> bool: + """Internal doc/snippet link that is not localized.""" + if not is_doc_internal_path(link): + return False + if is_shared_asset_path(link): + return False + if get_link_locale(link) is not None: + return False + return True + + +def is_shared_asset_path(path: str) -> bool: + """Paths that stay un-prefixed in localized docs (e.g. shared /images/).""" + normalized = path.replace('\\', '/') + return any(normalized.startswith(prefix) for prefix in SHARED_PATH_PREFIXES) + + +def is_english_snippet_import(import_path: str) -> bool: + """Snippet import under /snippets/ without a locale subdirectory.""" + normalized = import_path.replace('\\', '/') + if not normalized.startswith('/snippets/'): + return False + remainder = normalized[len('/snippets/'):] + return not remainder.startswith(('zh/', 'ja/', 'ko/')) + + +def _extract_links_from_segment(segment: str) -> List[Dict[str, Any]]: + links: List[Dict[str, Any]] = [] + + for text, url in re.findall(r'\[([^\]]+)\]\(([^)]+)\)', segment): links.append({ 'type': 'markdown', 'text': text, 'url': url, - 'match': f'[{text}]({url})' + 'match': f'[{text}]({url})', }) - - # Match HTML links - html_links = re.findall(r']+href\s*=\s*["\']([^"\']+)["\'][^>]*>', content) - for url in html_links: + + for url in re.findall(r']+href\s*=\s*["\']([^"\']+)["\'][^>]*>', segment): links.append({ 'type': 'html', 'url': url, - 'match': f'href="{url}"' + 'match': f'href="{url}"', }) - - # Match component href attributes (but not src attributes) - component_hrefs = re.findall(r'href\s*=\s*["\']([^"\']+)["\']', content) - for url in component_hrefs: + + for url in re.findall(r'href\s*=\s*["\']([^"\']+)["\']', segment): links.append({ 'type': 'component', 'url': url, - 'match': f'href="{url}"' + 'match': f'href="{url}"', }) - + + return links + + +def extract_links(content: str, file_path: str) -> List[Dict[str, Any]]: + """Extract links from prose (outside fenced code blocks).""" + links: List[Dict[str, Any]] = [] + for segment in iter_prose_segments(content): + links.extend(_extract_links_from_segment(segment)) return links + +def _extract_imports_from_segment(segment: str) -> List[Dict[str, Any]]: + """Only MDX snippet imports (/snippets/...), not JS/TS module imports.""" + imports: List[Dict[str, Any]] = [] + pattern = r'import\s+[^"\']+\s+from\s+["\'](/snippets/[^"\']+)["\']' + for url in re.findall(pattern, segment): + imports.append({ + 'type': 'import', + 'url': url, + 'match': f'from "{url}"', + }) + return imports + + +def extract_imports(content: str) -> List[Dict[str, Any]]: + """Extract MDX snippet import paths from prose only.""" + imports: List[Dict[str, Any]] = [] + for segment in iter_prose_segments(content): + imports.extend(_extract_imports_from_segment(segment)) + return imports + + def extract_images(content: str, file_path: str) -> List[Dict[str, Any]]: """Extract images from file content.""" - images = [] - - # Match markdown images ![alt](src) - markdown_images = re.findall(r'!\[([^\]]*)\]\(([^)]+)\)', content) - for alt, src in markdown_images: + images: List[Dict[str, Any]] = [] + + for alt, src in re.findall(r'!\[([^\]]*)\]\(([^)]+)\)', content): images.append({ 'type': 'markdown', 'alt': alt, 'src': src, - 'match': f'![{alt}]({src})' + 'match': f'![{alt}]({src})', }) - - # Match HTML images - html_images = re.findall(r']+src\s*=\s*["\']([^"\']+)["\'][^>]*>', content) - for src in html_images: + + for src in re.findall(r']+src\s*=\s*["\']([^"\']+)["\'][^>]*>', content): images.append({ 'type': 'html', 'src': src, - 'match': f'src="{src}"' + 'match': f'src="{src}"', }) - - # Match component src attributes (only for images, not links) - component_srcs = re.findall(r'src\s*=\s*["\']([^"\']+)["\']', content) - for src in component_srcs: + + for src in re.findall(r'src\s*=\s*["\']([^"\']+)["\']', content): images.append({ 'type': 'component', 'src': src, - 'match': f'src="{src}"' + 'match': f'src="{src}"', }) - + return images + +def add_error(file_path: str, error_type: str, error: str, details: str, match: str) -> None: + errors.append({ + 'file': file_path, + 'type': error_type, + 'error': error, + 'details': details, + 'match': match, + }) + + +def _fix_mdx_extensions_in_segment(segment: str) -> str: + segment = re.sub(r'\[([^\]]+)\]\(([^)]+)\.mdx\)', r'[\1](\2)', segment) + return re.sub(r'href\s*=\s*["\']([^"\']+)\.mdx["\']', r'href="\1"', segment) + + def fix_mdx_extensions(file_path: str, content: str) -> Tuple[str, bool]: - """Fix .mdx extensions in links and return modified content and whether changes were made.""" - original_content = content - - # Fix markdown links [text](link.mdx) -> [text](link) - content = re.sub(r'\[([^\]]+)\]\(([^)]+)\.mdx\)', r'[\1](\2)', content) - - # Fix HTML links -> - content = re.sub(r'href\s*=\s*["\']([^"\']+)\.mdx["\']', r'href="\1"', content) - - # Fix component href attributes href="link.mdx" -> href="link" - content = re.sub(r'href\s*=\s*["\']([^"\']+)\.mdx["\']', r'href="\1"', content) - - return content, content != original_content + """Fix .mdx extensions in links (prose only).""" + return transform_outside_code_fences(content, _fix_mdx_extensions_in_segment) -def fix_missing_leading_slash(file_path: str, content: str) -> Tuple[str, bool]: - """Fix links that should start with / but don't, and return modified content and whether changes were made.""" - original_content = content - + +def _fix_missing_leading_slash_in_segment(segment: str) -> str: def should_add_slash(link: str) -> bool: - """Check if a link should have a leading slash added.""" - # Skip if already starts with /, ./, ../, #, http, mailto, or is empty - if (link.startswith('/') or link.startswith('./') or link.startswith('../') or - link.startswith('#') or link.startswith('http') or link.startswith('mailto:') or - not link.strip()): + if is_external_or_special(link): return False - - # Check if it looks like a documentation path (contains common doc patterns) - doc_patterns = [ - 'zh/', 'tutorials/', 'built-in-nodes/', 'interface/', 'installation/', - 'development/', 'custom-nodes/', 'troubleshooting/', 'registry/', 'specs/', - 'get_started/', 'changelog/', 'comfy-cli/', 'snippets/', 'community/' - ] - - return any(link.startswith(pattern) for pattern in doc_patterns) - - # Fix markdown links [text](link) -> [text](/link) for internal links - def fix_markdown_link(match): + return any(link.startswith(pattern) for pattern in DOC_PATH_PATTERNS) + + def fix_markdown_link(match: re.Match[str]) -> str: text = match.group(1) link = match.group(2) if should_add_slash(link): return f'[{text}](/{link})' return match.group(0) - - content = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', fix_markdown_link, content) - - # Fix HTML links -> - def fix_html_link(match): - quote = match.group(1) # " or ' + + segment = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', fix_markdown_link, segment) + + def fix_html_link(match: re.Match[str]) -> str: + quote = match.group(1) link = match.group(2) if should_add_slash(link): return f'href={quote}/{link}{quote}' return match.group(0) - - content = re.sub(r'href\s*=\s*(["\'])([^"\']+)\1', fix_html_link, content) - - return content, content != original_content + + return re.sub(r'href\s*=\s*(["\'])([^"\']+)\1', fix_html_link, segment) + + +def fix_missing_leading_slash(file_path: str, content: str) -> Tuple[str, bool]: + """Fix internal links that should start with / but don't (prose only).""" + return transform_outside_code_fences(content, _fix_missing_leading_slash_in_segment) + + +def fix_path_for_locale(locale: str, path: str) -> Optional[str]: + """ + Return a locale-corrected doc path, or None if no change is needed. + + Only touches absolute in-repo paths (/tutorials/..., /snippets/...). + Never modifies JS module imports (fs/promises, react, etc.). + """ + if not is_doc_internal_path(path) or is_shared_asset_path(path): + return None + + normalized = path.replace('\\', '/') + current_locale = get_link_locale(normalized) + + if current_locale == locale: + return None + + if current_locale is not None: + wrong = current_locale + snippet_prefix = f'/snippets/{wrong}/' + image_prefix = f'/images/{wrong}/' + doc_prefix = f'/{wrong}/' + + if normalized.startswith(snippet_prefix): + return f'/snippets/{locale}/{normalized[len(snippet_prefix):]}' + if normalized.startswith(image_prefix): + return f'/images/{locale}/{normalized[len(image_prefix):]}' + if normalized.startswith(doc_prefix): + return f'/{locale}/{normalized[len(doc_prefix):]}' + + if not is_english_internal_link(normalized): + return None + + if normalized.startswith('/snippets/'): + return f'/snippets/{locale}/{normalized[len("/snippets/"):]}' + return f'/{locale}{normalized}' + + +def _fix_locale_paths_in_segment(segment: str, locale: str) -> str: + def apply_fix(path: str) -> str: + fixed = fix_path_for_locale(locale, path) + return fixed if fixed is not None else path + + def fix_markdown_link(match: re.Match[str]) -> str: + text, url = match.group(1), match.group(2) + new_url = apply_fix(url) + if new_url != url: + return f'[{text}]({new_url})' + return match.group(0) + + segment = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', fix_markdown_link, segment) + + def fix_href(match: re.Match[str]) -> str: + quote, url = match.group(1), match.group(2) + new_url = apply_fix(url) + if new_url != url: + return f'href={quote}{new_url}{quote}' + return match.group(0) + + segment = re.sub(r'href\s*=\s*(["\'])([^"\']+)\1', fix_href, segment) + + def fix_snippet_import(match: re.Match[str]) -> str: + prefix, url, suffix = match.group(1), match.group(2), match.group(3) + new_url = apply_fix(url) + if new_url != url: + return f'{prefix}{new_url}{suffix}' + return match.group(0) + + return re.sub( + r'(import\s+[^"\']+\s+from\s+["\'])(/snippets/[^"\']+)(["\'])', + fix_snippet_import, + segment, + ) + + +def fix_locale_paths(file_path: str, content: str) -> Tuple[str, bool]: + """Fix locale mismatches in links and /snippets/ imports for localized docs.""" + locale = get_doc_locale(file_path) + if locale is None: + return content, False + + return transform_outside_code_fences( + content, + lambda segment: _fix_locale_paths_in_segment(segment, locale), + ) + + +def validate_localized_link(file_path: str, locale: str, link: str, match: str) -> None: + """Localized docs must not point to English internal paths or other locales.""" + locale_name = LOCALES[locale]['name'] + link_locale = get_link_locale(link) + + if link_locale is not None and link_locale != locale: + other_name = LOCALES[link_locale]['name'] + add_error( + file_path, + 'link', + f'{locale_name} document uses {other_name} link', + f'Link "{link}" in {locale_name} document should use /{locale}/ paths', + match, + ) + return + + if is_english_internal_link(link): + add_error( + file_path, + 'link', + f'{locale_name} document uses English link', + f'Link "{link}" in {locale_name} document should not point to English content', + match, + ) + + +def validate_localized_import(file_path: str, locale: str, import_path: str, match: str) -> None: + """Localized docs must import snippets from their locale directory.""" + locale_name = LOCALES[locale]['name'] + + if not import_path.startswith('/snippets/'): + return + + if is_english_snippet_import(import_path): + add_error( + file_path, + 'import', + f'{locale_name} document uses English snippet import', + f'Import "{import_path}" should use /snippets/{locale}/ instead of /snippets/', + match, + ) + return + + import_locale = get_link_locale(import_path) + if import_locale is not None and import_locale != locale: + other_name = LOCALES[import_locale]['name'] + add_error( + file_path, + 'import', + f'{locale_name} document uses {other_name} snippet import', + f'Import "{import_path}" in {locale_name} document should use /snippets/{locale}/', + match, + ) + def validate_file_links(file_path: str, content: str) -> None: - """Validate links in a file.""" + """Validate links, imports, and images in a file.""" + locale = get_doc_locale(file_path) links = extract_links(content, file_path) + imports = extract_imports(content) images = extract_images(content, file_path) - - # Create a set of image sources to exclude from link checking image_sources = {image['src'] for image in images} - - # Check link errors (excluding image sources) + for link in links: - # Skip if this link is actually an image source if link['url'] in image_sources: continue - - # Check for .mdx extension in links (should not be present) + if link['url'].endswith('.mdx'): - errors.append({ - 'file': file_path, - 'type': 'link', - 'error': 'Link contains .mdx extension', - 'details': f'Link "{link["url"]}" should not end with .mdx extension', - 'match': link['match'] - }) + add_error( + file_path, + 'link', + 'Link contains .mdx extension', + f'Link "{link["url"]}" should not end with .mdx extension', + link['match'], + ) continue - - if is_chinese_doc(file_path): - # Chinese documents should not use English links - if is_english_link(link['url']): - errors.append({ - 'file': file_path, - 'type': 'link', - 'error': 'Chinese document uses English link', - 'details': f'Link "{link["url"]}" in Chinese document should not point to English content', - 'match': link['match'] - }) - elif is_english_doc(file_path): - # English documents should not use Chinese links - if is_chinese_link(link['url']): - errors.append({ - 'file': file_path, - 'type': 'link', - 'error': 'English document uses Chinese link', - 'details': f'Link "{link["url"]}" in English document should not point to Chinese content', - 'match': link['match'] - }) - - # Check image errors - for image in images: - if is_english_doc(file_path): - # English documents should not use Chinese images - if is_chinese_image(image['src']): - errors.append({ - 'file': file_path, - 'type': 'image', - 'error': 'English document uses Chinese image', - 'details': f'Image "{image["src"]}" in English document should not point to Chinese image directory', - 'match': image['match'] - }) - # Chinese documents can use English images - no validation needed for Chinese docs using English images - -def main(): + + if locale is not None: + validate_localized_link(file_path, locale, link['url'], link['match']) + elif get_link_locale(link['url']) is not None: + link_locale = get_link_locale(link['url']) + locale_name = LOCALES[link_locale]['name'] + add_error( + file_path, + 'link', + f'English document uses {locale_name} link', + f'Link "{link["url"]}" in English document should not point to {locale_name} content', + link['match'], + ) + + for imp in imports: + if locale is not None: + validate_localized_import(file_path, locale, imp['url'], imp['match']) + elif get_link_locale(imp['url']) is not None: + link_locale = get_link_locale(imp['url']) + locale_name = LOCALES[link_locale]['name'] + add_error( + file_path, + 'import', + f'English document uses {locale_name} snippet import', + f'Import "{imp["url"]}" in English document should not point to {locale_name} snippets', + imp['match'], + ) + + if locale is None: + for image in images: + if '/images/zh/' in image['src']: + add_error( + file_path, + 'image', + 'English document uses Chinese image', + f'Image "{image["src"]}" in English document should not point to Chinese image directory', + image['match'], + ) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description='Validate and optionally fix documentation links.', + ) + mode = parser.add_mutually_exclusive_group() + mode.add_argument( + '--fix', + action='store_true', + help='Fix .mdx extensions, slashes, and locale links/imports', + ) + mode.add_argument( + '--check', + action='store_true', + help='Validate only; do not modify any files', + ) + return parser.parse_args() + + +def collect_doc_files() -> List[str]: + files: List[str] = [] + for pattern in ('**/*.mdx', '**/*.md'): + files.extend(glob.glob(pattern, recursive=True)) + return [ + f for f in files + if not any(exclude in f for exclude in ('node_modules/', '.git/', '.github/')) + ] + + +def apply_auto_fixes(file_path: str, content: str, fix_locale: bool) -> Tuple[str, List[str]]: + """Apply automatic fixes and return updated content plus fix labels.""" + applied: List[str] = [] + + content, mdx_fixed = fix_mdx_extensions(file_path, content) + if mdx_fixed: + applied.append('.mdx extensions') + + content, slash_fixed = fix_missing_leading_slash(file_path, content) + if slash_fixed: + applied.append('missing leading slashes') + + if fix_locale: + content, locale_fixed = fix_locale_paths(file_path, content) + if locale_fixed: + applied.append('locale links/imports') + + return content, applied + + +def main() -> None: """Main function to validate all documentation files.""" + global errors, fixed_files + errors = [] + fixed_files = [] + + args = parse_args() + fix_locale = args.fix + write_files = not args.check + try: - # Find all .mdx and .md files - files = [] - for pattern in ['**/*.mdx', '**/*.md']: - files.extend(glob.glob(pattern, recursive=True)) - - # Filter out unwanted directories - files = [f for f in files if not any(exclude in f for exclude in [ - 'node_modules/', '.git/', '.github/' - ])] - - print(f"Found {len(files)} documentation files") - - # First pass: Fix .mdx extensions and missing leading slashes + files = collect_doc_files() + print(f'Found {len(files)} documentation files') + + if args.check: + print('Mode: check only (no modifications)') + elif args.fix: + print('Mode: fix formatting + locale links/imports') + else: + print('Mode: fix formatting (.mdx extensions, slashes)') + for file_path in files: try: with open(file_path, 'r', encoding='utf-8') as f: content = f.read() - - # Fix .mdx extensions - fixed_content, mdx_fixed = fix_mdx_extensions(file_path, content) - - # Fix missing leading slashes - fixed_content, slash_fixed = fix_missing_leading_slash(file_path, fixed_content) - - if mdx_fixed or slash_fixed: - # Write the fixed content back to the file + + if not write_files: + continue + + fixed_content, applied = apply_auto_fixes( + file_path, + content, + fix_locale=fix_locale, + ) + + if applied: with open(file_path, 'w', encoding='utf-8') as f: f.write(fixed_content) fixed_files.append(file_path) - - fixes = [] - if mdx_fixed: - fixes.append(".mdx extensions") - if slash_fixed: - fixes.append("missing leading slashes") - - print(f"Fixed {' and '.join(fixes)} in: {file_path}") - + print(f"Fixed {' and '.join(applied)} in: {file_path}") + except Exception as e: - print(f"Error processing file {file_path}: {e}") - - # Second pass: Validate links after fixes + print(f'Error processing file {file_path}: {e}') + for file_path in files: try: with open(file_path, 'r', encoding='utf-8') as f: content = f.read() validate_file_links(file_path, content) except Exception as e: - print(f"Error reading file {file_path}: {e}") - - # Output results + print(f'Error reading file {file_path}: {e}') + if fixed_files: - print(f"\n✅ Fixed link issues in {len(fixed_files)} files:") + print(f'\n✅ Fixed link issues in {len(fixed_files)} files:') for file in fixed_files: - print(f" - {file}") - + print(f' - {file}') + if errors: - print(f"\nFound {len(errors)} remaining link errors:\n") - + print(f'\nFound {len(errors)} remaining link errors:\n') + error_report = [] for error in errors: error_report.append(f"""❌ **{error['file']}** @@ -317,21 +650,21 @@ def main(): {error['match']} ``` """) - + report = '\n'.join(error_report) print(report) - - # Write errors to file for GitHub Action + with open('/tmp/link-errors.txt', 'w', encoding='utf-8') as f: f.write(report) - + sys.exit(1) - else: - print('✅ All link validations passed!') - + + print('✅ All link validations passed!') + except Exception as e: print(f'Error during validation: {e}') sys.exit(1) + if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/.gitignore b/.gitignore index 3a139e550..51514bbd8 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ docs.bak # Translation run logs (translate-i18n.ts) .github/i18n-logs/ tmp/ +# Python bytecode +__pycache__/ +*.py[cod] diff --git a/ja/account/create-account.mdx b/ja/account/create-account.mdx index 6fedac6a2..586b96257 100644 --- a/ja/account/create-account.mdx +++ b/ja/account/create-account.mdx @@ -27,7 +27,7 @@ ComfyUI 用の Comfy アカウントは、Comfy Cloud 上から直接作成で 1. ローカルマシンで ComfyUI を起動します 2. インターフェース内の **設定** に移動します -3. **ユーザー** セクションへ進みます(詳細は [ユーザー設定](/interface/user) をご参照ください) +3. **ユーザー** セクションへ進みます(詳細は [ユーザー設定](/ja/interface/user) をご参照ください) 4. **アカウントを作成** または **サインアップ** をクリックします 5. 以下のログイン方法のいずれかを選択します: - **メールアドレス**:メールアドレスを入力し、パスワードを作成します @@ -40,7 +40,7 @@ ComfyUI 用の Comfy アカウントは、Comfy Cloud 上から直接作成で ## 次のステップ アカウントの作成およびメール確認が完了したら、以下の操作を行ってください: -- [アカウントにログインする](/account/login) +- [アカウントにログインする](/ja/account/login) - プロフィールの設定や好みの環境を調整する - ComfyUI の各種機能の利用を開始する - 教材やドキュメントを参照して学習を深める diff --git a/ja/account/login.mdx b/ja/account/login.mdx index eec9cdce9..ecb6cf6ee 100644 --- a/ja/account/login.mdx +++ b/ja/account/login.mdx @@ -6,7 +6,7 @@ translationSourceHash: 31b0c6ca translationFrom: account/login.mdx --- -import GetApiKey from '/snippets/get-api-key.mdx' +import GetApiKey from '/snippets/ja/get-api-key.mdx' Comfy アカウントを利用すると、[パートナーノード(Partner Node)](/ja/tutorials/partner-nodes/overview)および[クラウドサブスクリプション](https://www.comfy.org/cloud)にアクセスでき、ComfyUI プラットフォーム全体でプレミアム機能やサービスをご利用いただけます。 @@ -34,7 +34,7 @@ Comfy Cloud 上で ComfyUI を使用するための Comfy アカウントにア 1. ローカルマシン上で ComfyUI を起動します 2. インターフェース内の **設定** へ移動します -3. **ユーザー** セクションへ進みます(詳細は [ユーザー設定](/interface/user) をご参照ください) +3. **ユーザー** セクションへ進みます(詳細は [ユーザー設定](/ja/interface/user) をご参照ください) 4. ログイン方法を選択します: - **メールアドレス**:メールアドレスとパスワードを入力します - **Google**:Google ログインボタンをクリックして認証を行います diff --git a/ja/agent-tools/partner-mcp.mdx b/ja/agent-tools/partner-mcp.mdx index 59c8c5665..fe81e2431 100644 --- a/ja/agent-tools/partner-mcp.mdx +++ b/ja/agent-tools/partner-mcp.mdx @@ -26,7 +26,7 @@ Comfy Partner MCP は、AI エージェントに **30以上のパートナープ - **Node.js 20+** - **pnpm 10** -- **[Comfy API キー](/development/api-development/getting-an-api-key)**(`comfyui-` で始まる)— Comfy パートナーダッシュボードから取得 +- **[Comfy API キー](/ja/development/api-development/getting-an-api-key)**(`comfyui-` で始まる)— Comfy パートナーダッシュボードから取得 --- diff --git a/ja/built-in-nodes/partner-node/image/bfl/flux-1-1-pro-ultra-image.mdx b/ja/built-in-nodes/partner-node/image/bfl/flux-1-1-pro-ultra-image.mdx index d981626da..6f07c9bf5 100644 --- a/ja/built-in-nodes/partner-node/image/bfl/flux-1-1-pro-ultra-image.mdx +++ b/ja/built-in-nodes/partner-node/image/bfl/flux-1-1-pro-ultra-image.mdx @@ -45,7 +45,7 @@ Flux 1.1 [pro] Ultra Image ノードは、テキストプロンプトを用い ## 使用例 対応する使用例については、以下のチュートリアルをご覧ください。 -- [Flux 1.1 Pro Ultra Image API ノード ComfyUI 公式サンプルワークフロー](/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image) +- [Flux 1.1 Pro Ultra Image API ノード ComfyUI 公式サンプルワークフロー](/ja/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image) ## 動作原理 diff --git a/ja/cloud/import-models.mdx b/ja/cloud/import-models.mdx index 29182827d..41d101e28 100644 --- a/ja/cloud/import-models.mdx +++ b/ja/cloud/import-models.mdx @@ -5,7 +5,7 @@ translationSourceHash: b6574f59 translationFrom: cloud/import-models.mdx --- -import CloudFeature from '/snippets/cloud-feature.mdx' +import CloudFeature from '/snippets/ja/cloud-feature.mdx' diff --git a/ja/cloud/share-workflow.mdx b/ja/cloud/share-workflow.mdx index c1c64bac3..2758e787e 100644 --- a/ja/cloud/share-workflow.mdx +++ b/ja/cloud/share-workflow.mdx @@ -5,7 +5,7 @@ translationSourceHash: c12df158 translationFrom: cloud/share-workflow.mdx --- -import CloudFeature from '/snippets/cloud-feature.mdx' +import CloudFeature from '/snippets/ja/cloud-feature.mdx' diff --git a/ja/comfy-cli/reference.mdx b/ja/comfy-cli/reference.mdx index 44526e85e..2f063cc07 100644 --- a/ja/comfy-cli/reference.mdx +++ b/ja/comfy-cli/reference.mdx @@ -3,9 +3,9 @@ title: "リファレンス" translationSourceHash: d3b02585 translationFrom: comfy-cli/reference.mdx --- -import GenerateCliReference from '/snippets/cli-reference/generate.mdx' -import NodesCliReference from '/snippets/cli-reference/nodes.mdx' -import ModelsReference from '/snippets/cli-reference/models.mdx' +import GenerateCliReference from '/snippets/ja/cli-reference/generate.mdx' +import NodesCliReference from '/snippets/ja/cli-reference/nodes.mdx' +import ModelsReference from '/snippets/ja/cli-reference/models.mdx' # CLI diff --git a/ja/community/contributing.mdx b/ja/community/contributing.mdx index 6fe48b32d..52b3bc163 100644 --- a/ja/community/contributing.mdx +++ b/ja/community/contributing.mdx @@ -8,4 +8,4 @@ translationFrom: community/contributing.mdx あらゆる種類のコントリビューションを歓迎しています。当社の [GitHub 組織](https://github.com/Comfy-Org) でサポートしているさまざまなリポジトリをご確認ください。 -また、ワークフローの共有や、[カスタムノード](/custom-nodes/overview) の開発を通じてコントリビューションすることもできます。 \ No newline at end of file +また、ワークフローの共有や、[カスタムノード](/ja/custom-nodes/overview) の開発を通じてコントリビューションすることもできます。 \ No newline at end of file diff --git a/ja/custom-nodes/backend/expansion.mdx b/ja/custom-nodes/backend/expansion.mdx index 4d3fc783a..be836630b 100644 --- a/ja/custom-nodes/backend/expansion.mdx +++ b/ja/custom-nodes/backend/expansion.mdx @@ -51,4 +51,4 @@ def load_and_merge_checkpoints(self, checkpoint_path1, checkpoint_path2, ratio): ## 関連資料 -- [サブグラフ(開発者ガイド)](/custom-nodes/js/subgraphs) — 拡張機能開発者向けのフロントエンドガイド \ No newline at end of file +- [サブグラフ(開発者ガイド)](/ja/custom-nodes/js/subgraphs) — 拡張機能開発者向けのフロントエンドガイド \ No newline at end of file diff --git a/ja/custom-nodes/backend/interface.mdx b/ja/custom-nodes/backend/interface.mdx index a45624474..ecf7fbd26 100644 --- a/ja/custom-nodes/backend/interface.mdx +++ b/ja/custom-nodes/backend/interface.mdx @@ -110,7 +110,7 @@ CATEGORY = "loaders" この属性は Web ディレクトリを設定します。そのディレクトリ内の任意の `.js` ファイルは、フロントエンド拡張機能としてロードされます。 -カスタムノードには、`WEB_DIRECTORY/docs` フォルダに Markdown ドキュメントを含めることもできます。ノードに豊富なドキュメントを追加する方法の詳細については、[ヘルプページ](/custom-nodes/help_page) セクションを参照してください。 +カスタムノードには、`WEB_DIRECTORY/docs` フォルダに Markdown ドキュメントを含めることもできます。ノードに豊富なドキュメントを追加する方法の詳細については、[ヘルプページ](/ja/custom-nodes/help_page) セクションを参照してください。 #### NODE_CLASS_MAPPINGS diff --git a/ja/custom-nodes/backend/manager.mdx b/ja/custom-nodes/backend/manager.mdx index dd00cf479..8d105f8f2 100644 --- a/ja/custom-nodes/backend/manager.mdx +++ b/ja/custom-nodes/backend/manager.mdx @@ -14,7 +14,7 @@ description: "カスタムノードを ComfyUI Manager データベースに公 Comfy の素晴らしい点の一つは、ノードベースのアプローチにより、提供されているノードを異なる方法で組み合わせることで、新しいワークフローを開発できることです。組み込みノードは幅広い機能を提供しますが、コアノードでは提供されていない機能が必要だと気づくかもしれません。 -カスタムノードはコミュニティによって開発されたノードです。これにより、新機能を実装し、より広いコミュニティと共有することができます。カスタムノードの開発に興味がある場合は、[こちら](/custom-nodes/overview) で詳しく読むことができます。 +カスタムノードはコミュニティによって開発されたノードです。これにより、新機能を実装し、より広いコミュニティと共有することができます。カスタムノードの開発に興味がある場合は、[こちら](/ja/custom-nodes/overview) で詳しく読むことができます。 ## ComfyUI Manager diff --git a/ja/custom-nodes/backend/more_on_inputs.mdx b/ja/custom-nodes/backend/more_on_inputs.mdx index 5f221b3e6..6b3f42e68 100644 --- a/ja/custom-nodes/backend/more_on_inputs.mdx +++ b/ja/custom-nodes/backend/more_on_inputs.mdx @@ -25,10 +25,10 @@ def INPUT_TYPES(s): ``` ### UNIQUE_ID -`UNIQUE_ID` はノードの一意の識別子であり、クライアント側のノードの `id` プロパティと一致します。これは通常、クライアント - サーバー間の通信で使用されます([メッセージ](/development/comfyui-server/comms_messages#getting-node-id) を参照)。 +`UNIQUE_ID` はノードの一意の識別子であり、クライアント側のノードの `id` プロパティと一致します。これは通常、クライアント - サーバー間の通信で使用されます([メッセージ](/ja/development/comfyui-server/comms_messages#getting-node-id) を参照)。 ### PROMPT -`PROMPT` はクライアントからサーバーに送信された完全なプロンプトです。詳細な説明については [プロンプトオブジェクト](/custom-nodes/js/javascript_objects_and_hijacking#prompt) を参照してください。 +`PROMPT` はクライアントからサーバーに送信された完全なプロンプトです。詳細な説明については [プロンプトオブジェクト](/ja/custom-nodes/js/javascript_objects_and_hijacking#prompt) を参照してください。 ### EXTRA_PNGINFO `EXTRA_PNGINFO` は、保存されるすべての `.png` ファイルのメタデータにコピーされる辞書です。カスタムノードは、保存用の追加情報をこの辞書に格納できます(または下流のノードとの通信手段として)。 @@ -36,7 +36,7 @@ def INPUT_TYPES(s): Comfy が `disable_metadata` オプション付きで起動された場合、このデータは保存されないことに注意してください。 ### DYNPROMPT -`DYNPROMPT` は `comfy_execution.graph.DynamicPrompt` のインスタンスです。これは `PROMPT` と異なり、[ノード拡張](/custom-nodes/backend/expansion) に応じて実行中に変更される可能性があります。 +`DYNPROMPT` は `comfy_execution.graph.DynamicPrompt` のインスタンスです。これは `PROMPT` と異なり、[ノード拡張](/ja/custom-nodes/backend/expansion) に応じて実行中に変更される可能性があります。 `DYNPROMPT` は高度なケース(カスタムノード内にループを実装するなど)でのみ使用すべきです。 ## 柔軟な入力 diff --git a/ja/custom-nodes/i18n.mdx b/ja/custom-nodes/i18n.mdx index 175d7119a..015ec9b35 100644 --- a/ja/custom-nodes/i18n.mdx +++ b/ja/custom-nodes/i18n.mdx @@ -6,7 +6,7 @@ translationSourceHash: af21fb42 translationFrom: custom-nodes/i18n.mdx --- -import SupportedLanguages from '/snippets/interface/supported-languages.mdx' +import SupportedLanguages from '/snippets/ja/interface/supported-languages.mdx' 複数の言語サポートを追加したい場合は、このドキュメントを参考にして多言語サポートの実装方法を確認できます。 diff --git a/ja/custom-nodes/js/javascript_examples.mdx b/ja/custom-nodes/js/javascript_examples.mdx index 55b96a544..2525ad534 100644 --- a/ja/custom-nodes/js/javascript_examples.mdx +++ b/ja/custom-nodes/js/javascript_examples.mdx @@ -119,7 +119,7 @@ import { api } from "../../scripts/api.js"; ## ワークフローの中断を検出 -**非推奨:** 以下に示す API ハイジャックパターンは非推奨であり、近い将来いつでも変更される可能性があります。可能な場合は、公式の [拡張フック](/custom-nodes/js/javascript_hooks) および API イベントリスナーを使用してください。 +**非推奨:** 以下に示す API ハイジャックパターンは非推奨であり、近い将来いつでも変更される可能性があります。可能な場合は、公式の [拡張フック](/ja/custom-nodes/js/javascript_hooks) および API イベントリスナーを使用してください。 api をハイジャックする簡単な例: @@ -138,7 +138,7 @@ import { api } from "../../scripts/api.js"; ## ノードのクリックをキャプチャ -**非推奨:** 以下に示すノードメソッドハイジャックパターンは非推奨であり、近い将来いつでも変更される可能性があります。可能な場合は、公式の [拡張フック](/custom-nodes/js/javascript_hooks) を使用してください。 +**非推奨:** 以下に示すノードメソッドハイジャックパターンは非推奨であり、近い将来いつでも変更される可能性があります。可能な場合は、公式の [拡張フック](/ja/custom-nodes/js/javascript_hooks) を使用してください。 `node` にはハイジャックできる `mouseDown` メソッドがあります。 diff --git a/ja/custom-nodes/js/javascript_hooks.mdx b/ja/custom-nodes/js/javascript_hooks.mdx index 89caf763f..457dc143a 100644 --- a/ja/custom-nodes/js/javascript_hooks.mdx +++ b/ja/custom-nodes/js/javascript_hooks.mdx @@ -41,7 +41,7 @@ async beforeRegisterNodeDef(nodeType, nodeData, app) `beforeRegisterNodeDef` において非常に一般的なパターンは、既存のメソッドを「ハイジャック」することです。 -**非推奨:** 以下に示すプロトタイプハイジャックパターンは非推奨であり、近い将来いつでも変更される可能性があります。コンテキストメニューについては、公式の [コンテキストメニュー API](/custom-nodes/js/context-menu-migration) を使用してください。他のユースケースについては、利用可能な場合は公式の [拡張機能フック](/custom-nodes/js/javascript_hooks) を使用することを推奨します。 +**非推奨:** 以下に示すプロトタイプハイジャックパターンは非推奨であり、近い将来いつでも変更される可能性があります。コンテキストメニューについては、公式の [コンテキストメニュー API](/ja/custom-nodes/js/context-menu-migration) を使用してください。他のユースケースについては、利用可能な場合は公式の [拡張機能フック](/ja/custom-nodes/js/javascript_hooks) を使用することを推奨します。 ```Javascript diff --git a/ja/custom-nodes/js/javascript_objects_and_hijacking.mdx b/ja/custom-nodes/js/javascript_objects_and_hijacking.mdx index c86413f12..8ba0a5abc 100644 --- a/ja/custom-nodes/js/javascript_objects_and_hijacking.mdx +++ b/ja/custom-nodes/js/javascript_objects_and_hijacking.mdx @@ -14,7 +14,7 @@ Comfy の機能の多くは LiteGraph によって提供されているため、 `app` オブジェクト(`import { app } from "../../scripts/app.js";` で常にアクセス可能)は、ブラウザ上で実行されている Comfy アプリケーションを表し、以下にリストするものを含む、多くの有用なプロパティと関数を含んでいます。 -**非推奨:** `app` 上の関数やプロトタイプをハイジャック/モンキーパッチすることは非推奨であり、近い将来いつでも変更される可能性があります。代わりに、公式の [拡張フック](/custom-nodes/js/javascript_hooks) および [コンテキストメニュー API](/custom-nodes/js/context-menu-migration) を使用してください。 +**非推奨:** `app` 上の関数やプロトタイプをハイジャック/モンキーパッチすることは非推奨であり、近い将来いつでも変更される可能性があります。代わりに、公式の [拡張フック](/ja/custom-nodes/js/javascript_hooks) および [コンテキストメニュー API](/ja/custom-nodes/js/context-menu-migration) を使用してください。 `app` 上の関数をハイジャックすることは推奨されません。Comfy は継続的に開発されており、コアの動作が変更される可能性があるためです。 @@ -81,7 +81,7 @@ ComfyNode_object_for_my_node.inputs.forEach(input => { `ComfyNode` オブジェクトは現在のワークフロー内のノードを表します。これには、利用したい多くの重要なプロパティ、および動作を変更するために使用またはハイジャックしたい非常に多くの関数があります。 -**非推奨:** `ComfyNode` または `LGraphNode` 上のプロトタイプメソッドをハイジャックすることは非推奨であり、近い将来いつでも変更される可能性があります。利用可能な場合は、コンテキストメニュー用の `getNodeMenuItems` などの公式の [拡張フック](/custom-nodes/js/javascript_hooks) を使用してください。例については [コンテキストメニュー移行ガイド](/custom-nodes/js/context-menu-migration) を参照してください。 +**非推奨:** `ComfyNode` または `LGraphNode` 上のプロトタイプメソッドをハイジャックすることは非推奨であり、近い将来いつでも変更される可能性があります。利用可能な場合は、コンテキストメニュー用の `getNodeMenuItems` などの公式の [拡張フック](/ja/custom-nodes/js/javascript_hooks) を使用してください。例については [コンテキストメニュー移行ガイド](/ja/custom-nodes/js/context-menu-migration) を参照してください。 ノードオブジェクトをより完全に理解するには、以下のコードを拡張機能に挿入し、`console.log` コマンドにブレークポイントを設定することをお勧めします。その後、新しいノードを作成すると、お気に入りのデバッガーを使用してノードを調べることができます。 diff --git a/ja/custom-nodes/js/javascript_overview.mdx b/ja/custom-nodes/js/javascript_overview.mdx index d7f203570..dc83b98d5 100644 --- a/ja/custom-nodes/js/javascript_overview.mdx +++ b/ja/custom-nodes/js/javascript_overview.mdx @@ -12,7 +12,7 @@ Comfy は拡張機制を通じて変更できます。拡張を追加するに - 1 つ以上の `.js` ファイルをそのディレクトリに配置し、 - `app.registerExtension` を使用して拡張を登録します。 -これら 3 つのステップは以下に記載します。拡張の追加方法を確認したら、コードを呼び出すために利用可能な [hooks](/custom-nodes/js/javascript_hooks) を確認するか、必要に応じて様々な [Comfy objects](/custom-nodes/js/javascript_objects_and_hijacking) の説明を確認するか、あるいは直接 [example code snippets](/custom-nodes/js/javascript_examples) にジャンプしてください。 +これら 3 つのステップは以下に記載します。拡張の追加方法を確認したら、コードを呼び出すために利用可能な [hooks](/ja/custom-nodes/js/javascript_hooks) を確認するか、必要に応じて様々な [Comfy objects](/ja/custom-nodes/js/javascript_objects_and_hijacking) の説明を確認するか、あるいは直接 [example code snippets](/ja/custom-nodes/js/javascript_examples) にジャンプしてください。 ### `WEB_DIRECTORY` のエクスポート diff --git a/ja/custom-nodes/js/subgraphs.mdx b/ja/custom-nodes/js/subgraphs.mdx index 55961a67b..0d333fefe 100644 --- a/ja/custom-nodes/js/subgraphs.mdx +++ b/ja/custom-nodes/js/subgraphs.mdx @@ -7,7 +7,7 @@ translationFrom: custom-nodes/js/subgraphs.mdx ## 概要 -サブグラフを使用すると、ユーザーはノードを再利用可能でネスト可能なコンポーネントとしてグループ化できます。各サブグラフは UUID を持つ独自の `LGraph` です。ユーザー向けガイドについては、[Subgraphs](/interface/features/subgraph) を参照してください。 +サブグラフを使用すると、ユーザーはノードを再利用可能でネスト可能なコンポーネントとしてグループ化できます。各サブグラフは UUID を持つ独自の `LGraph` です。ユーザー向けガイドについては、[Subgraphs](/ja/interface/features/subgraph) を参照してください。 ## ノード識別子 @@ -215,5 +215,5 @@ app.registerExtension({ ## 関連項目 -- [Subgraphs (User Guide)](/interface/features/subgraph) -- [Extension Hooks](/custom-nodes/js/javascript_hooks) \ No newline at end of file +- [Subgraphs (User Guide)](/ja/interface/features/subgraph) +- [Extension Hooks](/ja/custom-nodes/js/javascript_hooks) \ No newline at end of file diff --git a/ja/custom-nodes/subgraph_blueprints.mdx b/ja/custom-nodes/subgraph_blueprints.mdx index 2daa2be6c..f3bc70c1e 100644 --- a/ja/custom-nodes/subgraph_blueprints.mdx +++ b/ja/custom-nodes/subgraph_blueprints.mdx @@ -30,6 +30,6 @@ translationFrom: custom-nodes/subgraph_blueprints.mdx ## 関連項目 -- [サブグラフ(ユーザーガイド)](/interface/features/subgraph) - ユーザーがサブグラフとどのように対話するか -- [サブグラフ開発者ガイド](/custom-nodes/js/subgraphs) - サブグラフのフロントエンド拡張開発 -- [ワークフローテンプレート](/custom-nodes/workflow_templates) - カスタムノードにサンプルワークフローを追加する \ No newline at end of file +- [サブグラフ(ユーザーガイド)](/ja/interface/features/subgraph) - ユーザーがサブグラフとどのように対話するか +- [サブグラフ開発者ガイド](/ja/custom-nodes/js/subgraphs) - サブグラフのフロントエンド拡張開発 +- [ワークフローテンプレート](/ja/custom-nodes/workflow_templates) - カスタムノードにサンプルワークフローを追加する \ No newline at end of file diff --git a/ja/custom-nodes/walkthrough.mdx b/ja/custom-nodes/walkthrough.mdx index ae530fa18..da690ff7d 100644 --- a/ja/custom-nodes/walkthrough.mdx +++ b/ja/custom-nodes/walkthrough.mdx @@ -16,8 +16,8 @@ translationFrom: custom-nodes/walkthrough.mdx ### 前提条件 -- 動作する ComfyUI の [インストール](/installation/manual_install) 環境。開発には、ComfyUI を手動でインストールすることを推奨します。 -- 動作する comfy-cli の [インストール](/comfy-cli/getting-started) 環境。 +- 動作する ComfyUI の [インストール](/ja/installation/manual_install) 環境。開発には、ComfyUI を手動でインストールすることを推奨します。 +- 動作する comfy-cli の [インストール](/ja/comfy-cli/getting-started) 環境。 ### 環境構築 @@ -65,9 +65,9 @@ class ImageSelector: FUNCTION = "choose_image" ``` -カスタムノードの基本構造については、[こちら](/custom-nodes/backend/server_overview) で詳しく説明されています。 +カスタムノードの基本構造については、[こちら](/ja/custom-nodes/backend/server_overview) で詳しく説明されています。 -カスタムノードは Python クラスを使用して定義され、次の 4 つを含む必要があります:`CATEGORY`(カスタムノードが新規追加ノードメニューのどこに配置されるかを指定)、`INPUT_TYPES`(ノードが受け取る入力を定義するクラスメソッド。返される辞書の詳細は [後述](/custom-nodes/backend/server_overview#input-types) を参照)、`RETURN_TYPES`(ノードが生成する出力を定義)、および `FUNCTION`(ノード実行時に呼び出される関数名)。 +カスタムノードは Python クラスを使用して定義され、次の 4 つを含む必要があります:`CATEGORY`(カスタムノードが新規追加ノードメニューのどこに配置されるかを指定)、`INPUT_TYPES`(ノードが受け取る入力を定義するクラスメソッド。返される辞書の詳細は [後述](/ja/custom-nodes/backend/server_overview#input-types) を参照)、`RETURN_TYPES`(ノードが生成する出力を定義)、および `FUNCTION`(ノード実行時に呼び出される関数名)。 入力と出力のデータタイプが `IMAGE`(単数形)であることに注意してください。画像バッチを受け取り、1 枚のみを返す場合でも同様です。Comfy では、`IMAGE` は画像バッチを意味し、単一の画像はサイズ 1 のバッチとして扱われます。 @@ -112,7 +112,7 @@ NODE_DISPLAY_NAME_MAPPINGS = { } ``` -ComfyUI がカスタムノードをどのように発見しロードするかについての詳しい説明は、[ノードライフサイクルドキュメント](/custom-nodes/backend/lifecycle) を参照してください。 +ComfyUI がカスタムノードをどのように発見しロードするかについての詳しい説明は、[ノードライフサイクルドキュメント](/ja/custom-nodes/backend/lifecycle) を参照してください。 ## オプションの追加 diff --git a/ja/development/cloud/api-reference.mdx b/ja/development/cloud/api-reference.mdx index 30a5c2e80..066c91c90 100644 --- a/ja/development/cloud/api-reference.mdx +++ b/ja/development/cloud/api-reference.mdx @@ -6,9 +6,9 @@ translationSourceHash: 5ec787f8 translationFrom: development/cloud/api-reference.mdx --- -import PollJobCompletion from '/snippets/cloud/poll-job-completion.mdx' -import WebSocketProgress from '/snippets/cloud/websocket-progress.mdx' -import DownloadOutputs from '/snippets/cloud/download-outputs.mdx' +import PollJobCompletion from '/snippets/ja/cloud/poll-job-completion.mdx' +import WebSocketProgress from '/snippets/ja/cloud/websocket-progress.mdx' +import DownloadOutputs from '/snippets/ja/cloud/download-outputs.mdx' **実験的 API:** この API は実験的であり、変更される可能性があります。エンドポイント、リクエスト/レスポンス形式、および動作は予告なしに変更される場合があります。一部のエンドポイントはローカル ComfyUI との互換性のために維持されていますが、異なるセマンティクスを持つ場合があります(例:無視されるフィールド)。 @@ -262,7 +262,7 @@ def upload_mask(file_path: str, original_ref: dict) -> dict: 実行のためにワークフローを送信します。 - **同時送信をサポート:** サブスクリプションティアに応じて、前のジョブの完了を待たずに複数のワークフローを送信できます。ジョブはティアの制限まで並列で実行されます—追加のジョブは自動的にキューイングされます。詳細と同時実行制限については[並列実行](/development/cloud/overview#parallel-execution-concurrent-jobs)をご覧ください。 + **同時送信をサポート:** サブスクリプションティアに応じて、前のジョブの完了を待たずに複数のワークフローを送信できます。ジョブはティアの制限まで並列で実行されます—追加のジョブは自動的にキューイングされます。詳細と同時実行制限については[並列実行](/ja/development/cloud/overview#parallel-execution-concurrent-jobs)をご覧ください。 ### ワークフローの送信 @@ -541,7 +541,7 @@ workflow = set_workflow_input(workflow, "6", "text", "a beautiful landscape") - 各 JSON メッセージタイプの完全なスキーマ定義については、[OpenAPI 仕様](/development/cloud/openapi)をご覧ください。 + 各 JSON メッセージタイプの完全なスキーマ定義については、[OpenAPI 仕様](/ja/development/cloud/openapi)をご覧ください。 --- diff --git a/ja/development/cloud/openapi.mdx b/ja/development/cloud/openapi.mdx index 7cd122f2d..a5397ae93 100644 --- a/ja/development/cloud/openapi.mdx +++ b/ja/development/cloud/openapi.mdx @@ -72,4 +72,4 @@ X-API-Key: your-api-key wss://cloud.comfy.org/ws?clientId={uuid}&token={api_key} ``` -メッセージタイプと処理については、[API リファレンス](/development/cloud/api-reference#websocket-for-real-time-progress) を参照してください。 \ No newline at end of file +メッセージタイプと処理については、[API リファレンス](/ja/development/cloud/api-reference#websocket-for-real-time-progress) を参照してください。 \ No newline at end of file diff --git a/ja/development/cloud/overview.mdx b/ja/development/cloud/overview.mdx index 586795c15..9f8ae8836 100644 --- a/ja/development/cloud/overview.mdx +++ b/ja/development/cloud/overview.mdx @@ -5,11 +5,11 @@ translationSourceHash: d9316708 translationFrom: development/cloud/overview.mdx --- -import PollJobCompletion from '/snippets/cloud/poll-job-completion.mdx' -import WebSocketProgress from '/snippets/cloud/websocket-progress.mdx' -import DownloadOutputs from '/snippets/cloud/download-outputs.mdx' -import CompleteExample from '/snippets/cloud/complete-example.mdx' -import GetApiKey from '/snippets/get-api-key.mdx' +import PollJobCompletion from '/snippets/ja/cloud/poll-job-completion.mdx' +import WebSocketProgress from '/snippets/ja/cloud/websocket-progress.mdx' +import DownloadOutputs from '/snippets/ja/cloud/download-outputs.mdx' +import CompleteExample from '/snippets/ja/cloud/complete-example.mdx' +import GetApiKey from '/snippets/ja/get-api-key.mdx' **実験的 API:** この API は実験的であり、変更される可能性があります。エンドポイント、リクエスト/レスポンス形式、および動作は予告なく変更される場合があります。 @@ -274,7 +274,7 @@ print(f"Job submitted: {prompt_id}") - 詳細なメッセージタイプとバイナリプレビュー画像の処理については、[WebSocket リファレンス](/development/cloud/api-reference#websocket-for-real-time-progress)をご覧ください。 + 詳細なメッセージタイプとバイナリプレビュー画像の処理については、[WebSocket リファレンス](/ja/development/cloud/api-reference#websocket-for-real-time-progress)をご覧ください。 ### ステップ 3:出力のダウンロード @@ -314,22 +314,22 @@ print(f"Job submitted: {prompt_id}") | カテゴリ | 説明 | |----------|-------------| -| [ワークフロー](/development/cloud/api-reference#running-workflows) | ワークフローの送信、ステータスの確認 | -| [ジョブ](/development/cloud/api-reference#checking-job-status) | ジョブのステータスとキューの監視 | -| [入力](/development/cloud/api-reference#uploading-inputs) | 画像、マスク、その他の入力のアップロード | -| [出力](/development/cloud/api-reference#downloading-outputs) | 生成されたコンテンツのダウンロード | -| [WebSocket](/development/cloud/api-reference#websocket-for-real-time-progress) | リアルタイムの進捗更新 | -| [オブジェクト情報](/development/cloud/api-reference#object-info) | 利用可能なノードとその定義 | +| [ワークフロー](/ja/development/cloud/api-reference#running-workflows) | ワークフローの送信、ステータスの確認 | +| [ジョブ](/ja/development/cloud/api-reference#checking-job-status) | ジョブのステータスとキューの監視 | +| [入力](/ja/development/cloud/api-reference#uploading-inputs) | 画像、マスク、その他の入力のアップロード | +| [出力](/ja/development/cloud/api-reference#downloading-outputs) | 生成されたコンテンツのダウンロード | +| [WebSocket](/ja/development/cloud/api-reference#websocket-for-real-time-progress) | リアルタイムの進捗更新 | +| [オブジェクト情報](/ja/development/cloud/api-reference#object-info) | 利用可能なノードとその定義 | ## 次のステップ -上記のクイックスタートでは、ワークフローの送信と結果の取得の基礎をカバーしています。より高度なユースケースについては、[Cloud API リファレンス](/development/cloud/api-reference)を参照してください: +上記のクイックスタートでは、ワークフローの送信と結果の取得の基礎をカバーしています。より高度なユースケースについては、[Cloud API リファレンス](/ja/development/cloud/api-reference)を参照してください: -- **[入力ファイルのアップロード](/development/cloud/api-reference#uploading-inputs)** - 外部入力を必要とするワークフローのために、画像、マスク、またはその他のユーザー提供コンテンツをアップロード -- **[ワークフロー入力の修正](/development/cloud/api-reference#modify-workflow-inputs)** - 送信前にプロンプト、シード、またはノード設定などのワークフローパラメーターを動的に変更 -- **[パートナーノードの使用](/development/cloud/api-reference#using-partner-nodes)** - 追加の API キー設定を必要とする外部 AI サービス(Flux Pro、Ideogram など)を呼び出す -- **[キュー管理](/development/cloud/api-reference#queue-management)** - キューのステータスの監視、ジョブのキャンセル、または実行中の実行の中断 -- **[エラー処理](/development/cloud/api-reference#error-handling)** - HTTP エラー、実行失敗の処理、および例外タイプの理解 +- **[入力ファイルのアップロード](/ja/development/cloud/api-reference#uploading-inputs)** - 外部入力を必要とするワークフローのために、画像、マスク、またはその他のユーザー提供コンテンツをアップロード +- **[ワークフロー入力の修正](/ja/development/cloud/api-reference#modify-workflow-inputs)** - 送信前にプロンプト、シード、またはノード設定などのワークフローパラメーターを動的に変更 +- **[パートナーノードの使用](/ja/development/cloud/api-reference#using-partner-nodes)** - 追加の API キー設定を必要とする外部 AI サービス(Flux Pro、Ideogram など)を呼び出す +- **[キュー管理](/ja/development/cloud/api-reference#queue-management)** - キューのステータスの監視、ジョブのキャンセル、または実行中の実行の中断 +- **[エラー処理](/ja/development/cloud/api-reference#error-handling)** - HTTP エラー、実行失敗の処理、および例外タイプの理解 追加リソース: -- [OpenAPI 仕様](/development/cloud/openapi) - コード生成用の機械可読 API 仕様 \ No newline at end of file +- [OpenAPI 仕様](/ja/development/cloud/openapi) - コード生成用の機械可読 API 仕様 \ No newline at end of file diff --git a/ja/development/comfyui-server/api-key-integration.mdx b/ja/development/comfyui-server/api-key-integration.mdx index a8cc71576..5b7b47bee 100644 --- a/ja/development/comfyui-server/api-key-integration.mdx +++ b/ja/development/comfyui-server/api-key-integration.mdx @@ -25,7 +25,7 @@ ComfyUI アカウント API キーを使用して有料パートナーノード - 十分なアカウントクレジット - **重要:** このページでは、ワークフロー内の有料パートナーノードへのアクセスに使用される **ComfyUI アカウント API キー** について説明します。代わりにカスタムノードをレジストリに公開したい場合は、[ノードの公開](/registry/publishing) を参照してください。 + **重要:** このページでは、ワークフロー内の有料パートナーノードへのアクセスに使用される **ComfyUI アカウント API キー** について説明します。代わりにカスタムノードをレジストリに公開したい場合は、[ノードの公開](/ja/registry/publishing) を参照してください。 有料パートナーノードを呼び出すために ComfyUI アカウント API キーを使用するには、まず [ComfyUI Platform](https://platform.comfy.org/login) でアカウントを登録し、[API キーを作成する](/ja/development/api-development/getting-an-api-key)必要があります。 diff --git a/ja/development/comfyui-server/execution_model_inversion_guide.mdx b/ja/development/comfyui-server/execution_model_inversion_guide.mdx index adfce32e7..111e5242c 100644 --- a/ja/development/comfyui-server/execution_model_inversion_guide.mdx +++ b/ja/development/comfyui-server/execution_model_inversion_guide.mdx @@ -20,7 +20,7 @@ translationFrom: development/comfyui-server/execution_model_inversion_guide.mdx 以下に、検証失敗の原因となり得る事項と推奨される解決策をいくつか示します。 -- カスタムウィジェットを設定するために、比較できないタイプ(例:辞書)上で `min` や `max` などの予約済み [追加パラメータ](/custom-nodes/backend/datatypes#additional-parameters) を使用すること。 +- カスタムウィジェットを設定するために、比較できないタイプ(例:辞書)上で `min` や `max` などの予約済み [追加パラメータ](/ja/custom-nodes/backend/datatypes#additional-parameters) を使用すること。 - 使用している追加パラメータを、`uiMin` や `uiMax` などの予約されていないキーに変更します。*(推奨ソリューション)* ```python @classmethod @@ -32,7 +32,7 @@ translationFrom: development/comfyui-server/execution_model_inversion_guide.mdx } ``` - - この入力に対してカスタムの [VALIDATE_INPUTS](/custom-nodes/backend/server_overview#validate-inputs) 関数を定義し、その検証をスキップするようにします。*(簡易ソリューション)* + - この入力に対してカスタムの [VALIDATE_INPUTS](/ja/custom-nodes/backend/server_overview#validate-inputs) 関数を定義し、その検証をスキップするようにします。*(簡易ソリューション)* ```python @classmethod def VALIDATE_INPUTS(cls, my_size): @@ -56,7 +56,7 @@ translationFrom: development/comfyui-server/execution_model_inversion_guide.mdx # ... ``` - - (入力として使用する場合)`input_types` 引数を受け取るカスタムの [VALIDATE_INPUTS](/custom-nodes/backend/server_overview#validate-inputs) 関数を定義し、タイプ検証をスキップするようにします。 + - (入力として使用する場合)`input_types` 引数を受け取るカスタムの [VALIDATE_INPUTS](/ja/custom-nodes/backend/server_overview#validate-inputs) 関数を定義し、タイプ検証をスキップするようにします。 ```python @classmethod def VALIDATE_INPUTS(cls, input_types): @@ -101,12 +101,12 @@ translationFrom: development/comfyui-server/execution_model_inversion_guide.mdx - `VALIDATE_INPUTS` 関数は `**kwargs` を受け取ることができるようになりました。これにより、すべての入力がノード作成者によって検証済みとして扱われます。 - `VALIDATE_INPUTS` 関数は `input_types` という名前の入力を受け取ることができます。この入力は、各入力(リンクを介して接続された)を接続された出力のタイプにマッピングする辞書になります。この引数が存在する場合、ノードの入力に対するタイプ検証はスキップされます。 -詳細は [VALIDATE_INPUTS](/custom-nodes/backend/server_overview#validate-inputs) をご覧ください。 +詳細は [VALIDATE_INPUTS](/ja/custom-nodes/backend/server_overview#validate-inputs) をご覧ください。 ### 遅延評価 -入力は遅延評価(Lazy Evaluation)できるようになりました(つまり、接続されたノードとそのすべての祖先ノードを評価する前に、それらが必要かどうかを確認するために待機できます)。詳細は [遅延評価](/custom-nodes/backend/lazy_evaluation) をご覧ください。 +入力は遅延評価(Lazy Evaluation)できるようになりました(つまり、接続されたノードとそのすべての祖先ノードを評価する前に、それらが必要かどうかを確認するために待機できます)。詳細は [遅延評価](/ja/custom-nodes/backend/lazy_evaluation) をご覧ください。 ### ノード展開 -実行時において、ノードはノードのサブグラフに展開できます。これにより、ループの実装(末尾再帰を介して)が可能になります。詳細は [ノード展開](/custom-nodes/backend/expansion) をご覧ください。 \ No newline at end of file +実行時において、ノードはノードのサブグラフに展開できます。これにより、ループの実装(末尾再帰を介して)が可能になります。詳細は [ノード展開](/ja/custom-nodes/backend/expansion) をご覧ください。 \ No newline at end of file diff --git a/ja/development/core-concepts/custom-nodes.mdx b/ja/development/core-concepts/custom-nodes.mdx index b71499fb5..512b79ef7 100644 --- a/ja/development/core-concepts/custom-nodes.mdx +++ b/ja/development/core-concepts/custom-nodes.mdx @@ -160,7 +160,7 @@ git clone https://github.com/Comfy-Org/ComfyUI-Manager ただし、状況によっては ComfyUI Manager を使用してカスタムノードをスムーズにインストールできない場合もあるため、このより詳細な依存関係インストールガイドを提供しています。 -[依存関係](/development/core-concepts/dependencies) 章では、ComfyUI における依存関係に関する関連コンテンツを紹介しました。ComfyUI は **Python** ベースのプロジェクトであり、ComfyUI を実行するための独立した **Python** ランタイム環境を構築しています。すべての関連する依存関係は、この独立した **Python** ランタイム環境にインストールする必要があります。 +[依存関係](/ja/development/core-concepts/dependencies) 章では、ComfyUI における依存関係に関する関連コンテンツを紹介しました。ComfyUI は **Python** ベースのプロジェクトであり、ComfyUI を実行するための独立した **Python** ランタイム環境を構築しています。すべての関連する依存関係は、この独立した **Python** ランタイム環境にインストールする必要があります。 システムレベルのターミナルで直接 `pip install -r requirements.txt` を実行すると、対応する依存関係がシステムレベルの **Python** 環境にインストールされる可能性があり、ComfyUI の環境で依存関係が仍然として欠落し、対応するカスタムノードが正常に実行できなくなります。 @@ -304,7 +304,7 @@ git checkout ![ComfyUI Manager インターフェース](/images/concepts/core-concepts_nodes_manager.png) -このツールは現在 [Desktop バージョン](/installation/desktop/windows) にデフォルトで含まれており、[Portable バージョン](/installation/comfyui_portable_windows) では、このドキュメントの [Manager のインストール](#installing-custom-nodes) セクションのインストール手順を参照する必要があります。 +このツールは現在 [Desktop バージョン](/ja/installation/desktop/windows) にデフォルトで含まれており、[Portable バージョン](/ja/installation/comfyui_portable_windows) では、このドキュメントの [Manager のインストール](#installing-custom-nodes) セクションのインストール手順を参照する必要があります。 ComfyUI の開発に伴い、ComfyUI Manager は ComfyUI においてますます重要な役割を果たしています。現在、ComfyUI-Manager は正式に Comfy Org 組織に参加し、ComfyUI のコア依存関係の一部となり、元の作者 [Dr.Lt.Data](https://github.com/ltdrdata) によって引き続きメンテナンスされています。詳細については [このブログ投稿](https://blog.comfy.org/p/comfyui-manager-joins-comfy-org) を読むことができます。 diff --git a/ja/development/core-concepts/dependencies.mdx b/ja/development/core-concepts/dependencies.mdx index 1e8a403ea..8b55d3601 100644 --- a/ja/development/core-concepts/dependencies.mdx +++ b/ja/development/core-concepts/dependencies.mdx @@ -96,7 +96,7 @@ ComfyUI コミュニティの多くの作者の努力のおかげで、異なる ComfyUI Python 環境で対応するプラグインディレクトリに移動し、`pip install -r requirements.txt` を実行して依存関係をインストールする必要があります。 -[Windows ポータブル版](/installation/comfyui_portable_windows) を使用している場合は、`ComfyUI_windows_portable` ディレクトリで以下のコマンドを使用できます: +[Windows ポータブル版](/ja/installation/comfyui_portable_windows) を使用している場合は、`ComfyUI_windows_portable` ディレクトリで以下のコマンドを使用できます: ``` python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\\requirements.txt ``` diff --git a/ja/development/core-concepts/nodes.mdx b/ja/development/core-concepts/nodes.mdx index 32d84ce51..395c8407f 100644 --- a/ja/development/core-concepts/nodes.mdx +++ b/ja/development/core-concepts/nodes.mdx @@ -39,7 +39,7 @@ ComfyUI では、ノードには複数の状態があります。以下にいく ## ノード間の接続 -ComfyUI では、ノードは[リンク](/development/core-concepts/links)を通じて接続され、同じタイプのデータが異なる処理ユニット間を流れて最終結果を達成できます。 +ComfyUI では、ノードは[リンク](/ja/development/core-concepts/links)を通じて接続され、同じタイプのデータが異なる処理ユニット間を流れて最終結果を達成できます。 ![ComfyUI ノードリンク](/images/concepts/node/inpaint.jpg) diff --git a/ja/development/core-concepts/workflow.mdx b/ja/development/core-concepts/workflow.mdx index 14acd4732..ff87c6f73 100644 --- a/ja/development/core-concepts/workflow.mdx +++ b/ja/development/core-concepts/workflow.mdx @@ -19,7 +19,7 @@ ComfyUI のワークフローは、画像、動画、音声、AI モデル、AI ## サンプルワークフロー -始めるには、組み込みの [ワークフローテンプレート](/interface/features/template) を使用してください。メニューの `Workflow` → `Browse Workflow Templates` から開けます。これらのテンプレートは ComfyUI インストールに含まれるコアノードのみを使用し、必要なモデルがあれば自動的にダウンロードを促します。活発な開発者コミュニティが、ComfyUI の機能を拡張するためのカスタムノードの豊富な [エコシステム](https://registry.comfy.org) を作成しています。 +始めるには、組み込みの [ワークフローテンプレート](/ja/interface/features/template) を使用してください。メニューの `Workflow` → `Browse Workflow Templates` から開けます。これらのテンプレートは ComfyUI インストールに含まれるコアノードのみを使用し、必要なモデルがあれば自動的にダウンロードを促します。活発な開発者コミュニティが、ComfyUI の機能を拡張するためのカスタムノードの豊富な [エコシステム](https://registry.comfy.org) を作成しています。 ### シンプルな例 ![シンプルなワークフロー](/images/simple_workflow.jpg) diff --git a/ja/get_started/cloud.mdx b/ja/get_started/cloud.mdx index e7babd385..3b60deba5 100644 --- a/ja/get_started/cloud.mdx +++ b/ja/get_started/cloud.mdx @@ -48,7 +48,7 @@ ComfyUI には、公式クラウドバージョンである [Comfy Cloud](https: | **カスタムノード** | プリインストールされたカスタムノードを使用でき、互換性の問題を心配する必要はありません。 | 任意のカスタムノードをインストールできますが、自分で管理する必要があります。 | | **モデル** | プリインストールされたモデルを使用します。Civitai から LoRA モデルをインポートできます。Hugging Face からモデルをインポートできます(近日公開)。 | 任意のモデルを使用できますが、まずダウンロードする必要があります。 | | **主な違い** | チームのオンボーディングが容易 | オフライン動作、無限にカスタマイズ可能 | -| **始める** | [ComfyUI Cloud を実行](https://comfy.org/cloud) | [ComfyUI をローカルにインストール](/installation/system_requirements) | +| **始める** | [ComfyUI Cloud を実行](https://comfy.org/cloud) | [ComfyUI をローカルにインストール](/ja/installation/system_requirements) | ## 料金とサブスクリプション diff --git a/ja/get_started/first_generation.mdx b/ja/get_started/first_generation.mdx index 71d4eb7a7..51809e325 100644 --- a/ja/get_started/first_generation.mdx +++ b/ja/get_started/first_generation.mdx @@ -29,13 +29,13 @@ import InstallLink from "/snippets/ja/install/install-link.mdx" ## テキストから画像への生成(Text-to-Image)について -テキストから画像への生成(Text-to-Image)は、テキストによる説明に基づいて画像を生成するAI描画の基本機能であり、AIアート生成において最も一般的に使用される機能の一つです。これは、要件(ポジティブプロンプトおよびネガティブプロンプト)を「画家(描画モデル)」に伝える作業と捉えることができます。その「画家」が、あなたの指示通りに画像を作成します。Text-to-Imageの詳細な解説については、[Text to Image](/tutorials/basic/text-to-image)章で取り上げます。 +テキストから画像への生成(Text-to-Image)は、テキストによる説明に基づいて画像を生成するAI描画の基本機能であり、AIアート生成において最も一般的に使用される機能の一つです。これは、要件(ポジティブプロンプトおよびネガティブプロンプト)を「画家(描画モデル)」に伝える作業と捉えることができます。その「画家」が、あなたの指示通りに画像を作成します。Text-to-Imageの詳細な解説については、[Text to Image](/ja/tutorials/basic/text-to-image)章で取り上げます。 ## ComfyUIにおけるText-to-Imageワークフローチュートリアル ### 1. ComfyUIの起動 -ComfyUIを起動し、正常にComfyUIのインターフェースにアクセスできることを確認してください。そのためには、まず[インストールガイド](/installation/system_requirements)に従ってセットアップを完了しておく必要があります。あるいは、インストール不要でComfyUIを利用できる[Comfy Cloud](/get_started/cloud)もご利用いただけます。 +ComfyUIを起動し、正常にComfyUIのインターフェースにアクセスできることを確認してください。そのためには、まず[インストールガイド](/ja/installation/system_requirements)に従ってセットアップを完了しておく必要があります。あるいは、インストール不要でComfyUIを利用できる[Comfy Cloud](/ja/get_started/cloud)もご利用いただけます。 ![ComfyUIインターフェース](/images/desktop/comfyui-interface.jpg) diff --git a/ja/installation/desktop/usage/manage.mdx b/ja/installation/desktop/usage/manage.mdx index a210d3fa3..4e06aa453 100644 --- a/ja/installation/desktop/usage/manage.mdx +++ b/ja/installation/desktop/usage/manage.mdx @@ -47,7 +47,7 @@ translationFrom: installation/desktop/usage/manage.mdx - **環境変数**:**+ 変数を追加** ボタンでカスタム環境変数を追加。 - + Startup Arguments で使用可能な ComfyUI 起動フラグの完全リストを参照。 diff --git a/ja/installation/install_custom_node.mdx b/ja/installation/install_custom_node.mdx index dafd43fd8..435b997da 100644 --- a/ja/installation/install_custom_node.mdx +++ b/ja/installation/install_custom_node.mdx @@ -120,8 +120,8 @@ Git や Manager を使用できないユーザー向けです ## カスタムノードリソース ComfyUI では、基本的なノード拡張機能に加えて、カスタムノードには以下の追加リソースを含めることができます: -- [ノードドキュメント](/custom-nodes/help_page): この機能はすべてのカスタムノードと基本ノードをサポートしています。ノードドキュメントを表示して、ノードの目的と使用方法を理解することができます。また、作者に PR を送信してドキュメントを貢献することもできます。 -- [カスタムノードワークフローテンプレート](/custom-nodes/workflow_templates): ノード作者が提供するサンプルワークフローとしてのワークフローテンプレート。ComfyUI テンプレートから閲覧およびロードできます。 -- [多言語サポート](/custom-nodes/i18n) +- [ノードドキュメント](/ja/custom-nodes/help_page): この機能はすべてのカスタムノードと基本ノードをサポートしています。ノードドキュメントを表示して、ノードの目的と使用方法を理解することができます。また、作者に PR を送信してドキュメントを貢献することもできます。 +- [カスタムノードワークフローテンプレート](/ja/custom-nodes/workflow_templates): ノード作者が提供するサンプルワークフローとしてのワークフローテンプレート。ComfyUI テンプレートから閲覧およびロードできます。 +- [多言語サポート](/ja/custom-nodes/i18n) カスタムノード開発者の場合、これらのリソースを追加して、カスタムノードをよりユーザーフレンドリーにすることができます。 \ No newline at end of file diff --git a/ja/installation/manual_install.mdx b/ja/installation/manual_install.mdx index a63047de8..4f804e1fd 100644 --- a/ja/installation/manual_install.mdx +++ b/ja/installation/manual_install.mdx @@ -19,7 +19,7 @@ ComfyUI のインストールは、主に以下のいくつかのステップに 3. 依存関係をインストールする 4. ComfyUI を起動する -ComfyUI のインストールには、[ComfyUI CLI](/comfy-cli/getting-started) を参照することもできます。これは、ComfyUI を簡単にインストールし、その依存関係を管理できるコマンドラインツールです。 +ComfyUI のインストールには、[ComfyUI CLI](/ja/comfy-cli/getting-started) を参照することもできます。これは、ComfyUI を簡単にインストールし、その依存関係を管理できるコマンドラインツールです。 ## 仮想環境の作成 diff --git a/ja/interface/features/subgraph.mdx b/ja/interface/features/subgraph.mdx index 8a50b3ff1..9544ed9f9 100644 --- a/ja/interface/features/subgraph.mdx +++ b/ja/interface/features/subgraph.mdx @@ -8,13 +8,13 @@ translationFrom: interface/features/subgraph.mdx --- - サブグラフ機能には ComfyUI フロントエンドバージョン 1.24.3 以降が必要です。この機能が表示されない場合は、以下を参照してください:[ComfyUI の更新方法](/installation/update_comfyui) + サブグラフ機能には ComfyUI フロントエンドバージョン 1.24.3 以降が必要です。この機能が表示されない場合は、以下を参照してください:[ComfyUI の更新方法](/ja/installation/update_comfyui) - 本文書の画像は nightly バージョンのフロントエンドで作成されています。実際のインターフェースを参照してください - サブグラフをノードに戻すような一部の機能は、将来サポートされる予定です -プログラムでサブグラフを操作するための開発者ドキュメントについては、[サブグラフ開発者ガイド](/custom-nodes/js/subgraphs) を参照してください。 +プログラムでサブグラフを操作するための開発者ドキュメントについては、[サブグラフ開発者ガイド](/ja/custom-nodes/js/subgraphs) を参照してください。 diff --git a/ja/tutorials/flux/flux-2-klein.mdx b/ja/tutorials/flux/flux-2-klein.mdx index d24560d8b..d38c45532 100644 --- a/ja/tutorials/flux/flux-2-klein.mdx +++ b/ja/tutorials/flux/flux-2-klein.mdx @@ -6,7 +6,7 @@ translationSourceHash: e790eb10 translationFrom: tutorials/flux/flux-2-klein.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/flux/flux1-krea-dev.mdx b/ja/tutorials/flux/flux1-krea-dev.mdx index 5eb96cfc9..827438849 100644 --- a/ja/tutorials/flux/flux1-krea-dev.mdx +++ b/ja/tutorials/flux/flux1-krea-dev.mdx @@ -6,7 +6,7 @@ translationSourceHash: e4ac73ab translationFrom: tutorials/flux/flux1-krea-dev.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' ![Flux.1 Krea Dev ポスター](/images/tutorial/flux/flux_1_krea_dev_poster.jpg) diff --git a/ja/tutorials/image/cosmos/cosmos-predict2-t2i.mdx b/ja/tutorials/image/cosmos/cosmos-predict2-t2i.mdx index 4b87cc227..7b1f7a47c 100644 --- a/ja/tutorials/image/cosmos/cosmos-predict2-t2i.mdx +++ b/ja/tutorials/image/cosmos/cosmos-predict2-t2i.mdx @@ -6,7 +6,7 @@ translationSourceHash: 01df14e7 translationFrom: tutorials/image/cosmos/cosmos-predict2-t2i.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' Cosmos-Predict2 は、NVIDIA が開発した次世代の物理世界向け基礎モデルであり、物理AIシナリオにおける高品質な視覚生成および予測タスクに特化して設計されています。 このモデルは、卓越した物理的正確性、環境との相互作用能力、および細部の再現性能を備えており、複雑な物理現象や動的なシーンをリアルにシミュレートすることが可能です。 diff --git a/ja/tutorials/image/hidream/hidream-e1.mdx b/ja/tutorials/image/hidream/hidream-e1.mdx index ccdab3372..d89576434 100644 --- a/ja/tutorials/image/hidream/hidream-e1.mdx +++ b/ja/tutorials/image/hidream/hidream-e1.mdx @@ -6,14 +6,14 @@ translationSourceHash: fa93c685 translationFrom: tutorials/image/hidream/hidream-e1.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' ![HiDream-E1 デモ](https://raw.githubusercontent.com/HiDream-ai/HiDream-E1/refs/heads/main/assets/demo.jpg) HiDream-E1 は、HiDream-ai 社が公式にオープンソース化したインタラクティブな画像編集用大規模モデルであり、HiDream-I1 を基盤として構築されています。 自然言語による画像編集が可能です。本モデルは [MIT ライセンス](https://github.com/HiDream-ai/HiDream-E1?tab=MIT-1-ov-file) の下で公開されており、個人プロジェクト、学術研究、商用利用のいずれにも対応しています。 -以前にリリースされた [hidream-i1](/tutorials/image/hidream/hidream-i1) と組み合わせることで、**画像生成から画像編集までの一貫したクリエイティブな機能**を実現します。 +以前にリリースされた [hidream-i1](/ja/tutorials/image/hidream/hidream-i1) と組み合わせることで、**画像生成から画像編集までの一貫したクリエイティブな機能**を実現します。 | 名称 | 更新日 | 推論ステップ数 | 解像度 | HuggingFace リポジトリ | |-------------------|-------------------|----------------|---------------------|------------------------------| diff --git a/ja/tutorials/image/hidream/hidream-o1.mdx b/ja/tutorials/image/hidream/hidream-o1.mdx index 464eab77a..c371f63fd 100644 --- a/ja/tutorials/image/hidream/hidream-o1.mdx +++ b/ja/tutorials/image/hidream/hidream-o1.mdx @@ -6,7 +6,7 @@ translationSourceHash: 51a684c4 translationFrom: tutorials/image/hidream/hidream-o1.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/image/newbie-image/newbie-image-exp-0-1.mdx b/ja/tutorials/image/newbie-image/newbie-image-exp-0-1.mdx index e956ac72a..43457849c 100644 --- a/ja/tutorials/image/newbie-image/newbie-image-exp-0-1.mdx +++ b/ja/tutorials/image/newbie-image/newbie-image-exp-0-1.mdx @@ -6,7 +6,7 @@ translationSourceHash: 6b4cf086 translationFrom: tutorials/image/newbie-image/newbie-image-exp-0-1.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **NewBie-image-Exp0.1** は、NewBieAI Lab が開発した 35 億パラメータの DiT(Diffusion Transformer)モデルで、アニメスタイルの文生成画像タスク専用に設計されています。Next-DiT アーキテクチャを採用しており、非常に詳細で視覚的に印象的なアニメ画像を生成できます。 diff --git a/ja/tutorials/image/omnigen/omnigen2.mdx b/ja/tutorials/image/omnigen/omnigen2.mdx index 75f8db69a..ba50f7e8e 100644 --- a/ja/tutorials/image/omnigen/omnigen2.mdx +++ b/ja/tutorials/image/omnigen/omnigen2.mdx @@ -6,7 +6,7 @@ translationSourceHash: 6a3fb274 translationFrom: tutorials/image/omnigen/omnigen2.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' ## OmniGen2 について diff --git a/ja/tutorials/image/ovis/ovis-image.mdx b/ja/tutorials/image/ovis/ovis-image.mdx index f50bb0e49..ecbad6885 100644 --- a/ja/tutorials/image/ovis/ovis-image.mdx +++ b/ja/tutorials/image/ovis/ovis-image.mdx @@ -6,7 +6,7 @@ translationSourceHash: 64c10a35 translationFrom: tutorials/image/ovis/ovis-image.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Ovis-Image** は、[Ovis-U1](https://github.com/AIDC-AI/Ovis-U1) を基盤として構築された7B規模のテキストから画像を生成するモデルで、特に高品質なテキストレンダリングに最適化されています。このモデルは、Qwen-Image などのより大規模な20Bクラスのシステムと同等のテキストレンダリング品質を実現しつつ、広く普及しているハードウェア上で実行可能なほどコンパクトなサイズを維持しています。 diff --git a/ja/tutorials/image/qwen/qwen-image-2512.mdx b/ja/tutorials/image/qwen/qwen-image-2512.mdx index f8c3605ef..70e7f625f 100644 --- a/ja/tutorials/image/qwen/qwen-image-2512.mdx +++ b/ja/tutorials/image/qwen/qwen-image-2512.mdx @@ -6,7 +6,7 @@ translationSourceHash: a18022ab translationFrom: tutorials/image/qwen/qwen-image-2512.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Qwen-Image-2512** は、Qwen-Image のテキストから画像を生成する基盤モデルの12月アップデート版です。8月にリリースされたベース版 Qwen-Image モデルと比較して、Qwen-Image-2512 は画像品質およびリアリズムにおいて大幅な向上を実現しています。 diff --git a/ja/tutorials/image/qwen/qwen-image-edit-2511.mdx b/ja/tutorials/image/qwen/qwen-image-edit-2511.mdx index f71ffed59..946f5c718 100644 --- a/ja/tutorials/image/qwen/qwen-image-edit-2511.mdx +++ b/ja/tutorials/image/qwen/qwen-image-edit-2511.mdx @@ -6,7 +6,7 @@ translationSourceHash: be665671 translationFrom: tutorials/image/qwen/qwen-image-edit-2511.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Qwen-Image-Edit-2511** は、Qwen-Image-Edit-2509 の強化版であり、一貫性の大幅な向上を含む複数の改良が施されています。このモデルは、Qwen-Image 固有のテキストレンダリング機能を編集タスクへと拡張し、意味的および外観的な両面から精密なテキスト編集を可能にします。 diff --git a/ja/tutorials/image/qwen/qwen-image-edit.mdx b/ja/tutorials/image/qwen/qwen-image-edit.mdx index 6ef0151fe..7b42c346a 100644 --- a/ja/tutorials/image/qwen/qwen-image-edit.mdx +++ b/ja/tutorials/image/qwen/qwen-image-edit.mdx @@ -6,7 +6,7 @@ translationSourceHash: d1302b40 translationFrom: tutorials/image/qwen/qwen-image-edit.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Qwen-Image-Edit** は、Qwen-Image の画像編集専用バージョンです。20B規模の Qwen-Image モデルを基に追加学習が行われており、Qwen-Image の特徴的なテキストレンダリング能力を編集タスクへと成功裏に拡張し、高精度なテキスト編集を実現しています。さらに、Qwen-Image-Edit では入力画像を Qwen2.5-VL(視覚的意味制御用)および VAE エンコーダ(視覚的外観制御用)の両方に同時に供給することで、意味と外観の両方を独立して制御可能な「二重編集機能」を実現しています。 diff --git a/ja/tutorials/image/qwen/qwen-image-layered.mdx b/ja/tutorials/image/qwen/qwen-image-layered.mdx index 2b81e722f..9fc5ebdbe 100644 --- a/ja/tutorials/image/qwen/qwen-image-layered.mdx +++ b/ja/tutorials/image/qwen/qwen-image-layered.mdx @@ -6,7 +6,7 @@ translationSourceHash: 66298fd2 translationFrom: tutorials/image/qwen/qwen-image-layered.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Qwen-Image-Layered** は、アリババ社の通義千問(Qwen)チームが開発したモデルで、入力画像を複数の RGBA レイヤーに分解することができます。このレイヤー化された表現により、本質的な編集可能性が実現されます:各レイヤーを他のコンテンツに影響を与えることなく独立して操作できます。 @@ -66,7 +66,7 @@ import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' - [qwen_image_layered_fp8mixed.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-Layered_ComfyUI/blob/main/split_files/diffusion_models/qwen_image_layered_fp8mixed.safetensors) -その後、[サブグラフ](/interface/features/subgraph)内の **Load Diffusion model** ノードを更新し、このファイルを使用するように設定してください。 +その後、[サブグラフ](/ja/interface/features/subgraph)内の **Load Diffusion model** ノードを更新し、このファイルを使用するように設定してください。 ## ワークフローの設定 diff --git a/ja/tutorials/image/qwen/qwen-image.mdx b/ja/tutorials/image/qwen/qwen-image.mdx index 175a45437..81795665b 100644 --- a/ja/tutorials/image/qwen/qwen-image.mdx +++ b/ja/tutorials/image/qwen/qwen-image.mdx @@ -6,7 +6,7 @@ translationSourceHash: 21412018 translationFrom: tutorials/image/qwen/qwen-image.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Qwen-Image** は、アリババのQwenチームがリリースした初の画像生成基盤モデルです。これは、Apache 2.0ライセンスのもとでオープンソース化された20BパラメータのMMDiT(マルチモーダル拡散トランスフォーマー)モデルです。このモデルは、**複雑なテキストレンダリング**および**精密な画像編集**において顕著な進展を遂げており、英語や中国語など複数の言語において高忠実度の出力を実現しています。 @@ -271,10 +271,10 @@ ControlNet関連のワークフローを初めて使用する場合、制御用 **InpaintモデルのControlNet使用手順** ![Inpaintワークフロー](/images/tutorial/image/qwen/image_qwen_image_controlnet_patch-inpaint.jpg) -Inpaintモデルでは、[マスクエディター](/interface/maskeditor)を使用してマスクを描画し、それを入力制御条件として使用します。 +Inpaintモデルでは、[マスクエディター](/ja/interface/maskeditor)を使用してマスクを描画し、それを入力制御条件として使用します。 1. `ModelPatchLoader`が`qwen_image_inpaint_diffsynth_controlnet.safetensors`を正しく読み込んでいることを確認してください -2. 画像をアップロードし、[マスクエディター](/interface/maskeditor)でマスクを描画します。対応する`Load Image`ノードの`mask`出力を`QwenImageDiffsynthControlnet`の`mask`入力に接続することで、適切なマスクが読み込まれることを保証してください +2. 画像をアップロードし、[マスクエディター](/ja/interface/maskeditor)でマスクを描画します。対応する`Load Image`ノードの`mask`出力を`QwenImageDiffsynthControlnet`の`mask`入力に接続することで、適切なマスクが読み込まれることを保証してください 3. `Ctrl-B`ショートカットを使用して、ワークフロー内の元のCannyノードをバイパスモードに設定し、Cannyノードによる処理を無効化します 4. `CLIP Text Encoder`で、マスク領域を変更したい内容を入力してください 5. 必要に応じて、`QwenImageDiffsynthControlnet`ノードの`strength`を調整して、対応する制御強度を制御できます diff --git a/ja/tutorials/image/z-image/z-image-turbo.mdx b/ja/tutorials/image/z-image/z-image-turbo.mdx index ba64299ec..f175a0839 100644 --- a/ja/tutorials/image/z-image/z-image-turbo.mdx +++ b/ja/tutorials/image/z-image/z-image-turbo.mdx @@ -6,7 +6,7 @@ translationSourceHash: 62f35c71 translationFrom: tutorials/image/z-image/z-image-turbo.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/image/z-image/z-image.mdx b/ja/tutorials/image/z-image/z-image.mdx index 5618f4315..733137ed1 100644 --- a/ja/tutorials/image/z-image/z-image.mdx +++ b/ja/tutorials/image/z-image/z-image.mdx @@ -6,7 +6,7 @@ translationSourceHash: abbd9629 translationFrom: tutorials/image/z-image/z-image.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Z-Image(造相)** は、アリババグループの通義実験室(Tongyi Lab)が開発した、強力かつ極めて効率的な画像生成モデルで、**60 億(6B)パラメータ**を有します。このモデルは **スケーラブルな単一ストリーム DiT**(S3-DiT)アーキテクチャを採用しており、テキスト、視覚的セマンティクストークン、および画像 VAE トークンをシーケンスレベルで連結し、統一された入力ストリームとして処理することで、パラメータ効率を最大化しています。 diff --git a/ja/tutorials/llm/qwen/qwen3.mdx b/ja/tutorials/llm/qwen/qwen3.mdx index 936e77fe0..88ab70778 100644 --- a/ja/tutorials/llm/qwen/qwen3.mdx +++ b/ja/tutorials/llm/qwen/qwen3.mdx @@ -6,7 +6,7 @@ translationSourceHash: 33e7bb56 translationFrom: tutorials/llm/qwen/qwen3.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/llm/qwen/qwen3_5.mdx b/ja/tutorials/llm/qwen/qwen3_5.mdx index 36e4dcaec..b901d4ad1 100644 --- a/ja/tutorials/llm/qwen/qwen3_5.mdx +++ b/ja/tutorials/llm/qwen/qwen3_5.mdx @@ -6,7 +6,7 @@ translationSourceHash: fd10f69e translationFrom: tutorials/llm/qwen/qwen3_5.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/partner-nodes/ideogram/ideogram-v3.mdx b/ja/tutorials/partner-nodes/ideogram/ideogram-v3.mdx index a1343cb9b..cb5f64df3 100644 --- a/ja/tutorials/partner-nodes/ideogram/ideogram-v3.mdx +++ b/ja/tutorials/partner-nodes/ideogram/ideogram-v3.mdx @@ -1,48 +1,42 @@ --- -title: "ComfyUI Ideogram 3.0 API ノード 公式サンプル" -description: "本ガイドでは、ComfyUI における Ideogram 3.0 パートナーノードの使用方法について説明します" +title: "ComfyUI Ideogram 3.0 パートナーノード公式サンプル" +description: "本ガイドでは、ComfyUI での Ideogram 3.0 パートナーノードの使用方法を解説します" sidebarTitle: "Ideogram 3.0" -translationSourceHash: d2cedd33 +translationSourceHash: 13e120c5 translationFrom: tutorials/partner-nodes/ideogram/ideogram-v3.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -Ideogram 3.0 は、Ideogram 社が開発した強力なテキストから画像を生成するモデルであり、写真のような高精細な画質、正確なテキスト描画、および一貫したスタイル制御が特徴です。 +Ideogram 3.0 は、Ideogram 社による強力なテキスト画像生成モデルで、その写実的な品質、正確なテキストレンダリング、一貫したスタイル制御で知られています。 -現在、[Ideogram V3](/built-in-nodes/partner-node/image/ideogram/ideogram-v3) ノードは以下の2つのモードをサポートしています: -- テキストから画像を生成するモード(Text-to-Image モード) -- 画像編集モード(画像入力とマスク入力の両方が提供された場合) +Ideogram V3 ノードは現在以下の 2 つのモードをサポートしています: +- テキスト画像生成モード +- 画像編集モード (画像とマスクの入力が両方提供された場合) -## Ideogram 3.0 ノードのドキュメント +## Ideogram 3.0 パートナーノード:テキスト画像生成モード -ノードの各パラメータ設定に関する詳細については、以下のドキュメントをご参照ください: - -- [Ideogram V3](/built-in-nodes/partner-node/image/ideogram/ideogram-v3) - -## Ideogram 3.0 API ノード:テキストから画像を生成するモード - -画像入力およびマスク入力を行わずに [Ideogram V3](/built-in-nodes/partner-node/image/ideogram/ideogram-v3) を使用する場合、ノードはテキストから画像を生成するモードで動作します。 +画像とマスクの入力なしで Ideogram V3 を使用する場合、ノードはテキスト画像生成モードで動作します。 ### 1. ワークフローファイルのダウンロード -以下のファイルをダウンロードし、ComfyUI にドラッグ&ドロップすることで、ワークフローを読み込めます: +以下のファイルをダウンロードし、ComfyUI にドラッグ&ドロップしてワークフローを読み込みます: ![Ideogram 3.0 ComfyUI ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/ideogram/v3/ideogram_v3_t2i.png) -### 2. ワークフロー実行手順の完了 +### 2. ワークフロー手順の完了 -![Ideogram 3.0 ワークフロー実行手順](/images/tutorial/api_nodes/ideogram/ideogram_v3_t2i.jpg) +![Ideogram 3.0 ワークフロー手順](/images/tutorial/api_nodes/ideogram/ideogram_v3_t2i.jpg) -番号付きの手順に従って、基本的なワークフローを実行してください: -1. `Ideogram V3` ノードの `prompt` フィールドに、生成したい画像の説明文を入力します -2. `Run` ボタンをクリックするか、ショートカットキー `Ctrl(Mac の場合は Cmd)+ Enter` を押して画像を生成します -3. API からの応答を受け取った後、`Save Image` ノードで生成された画像を確認できます。画像は `ComfyUI/output/` ディレクトリに保存されます +番号付きの手順に従って、基本的なワークフローを完了させます: +1. `Ideogram V3` ノードの `prompt` フィールドに画像の説明を入力します。 +2. `Run` をクリックするか、ショートカット `Ctrl (Cmd) + Enter` を使用して画像を生成します。 +3. API が結果を返した後、`Save Image` ノードで生成された画像を確認します。画像は `ComfyUI/output/` ディレクトリに保存されます。 -## Ideogram 3.0 API ノード:画像編集モード +## Ideogram 3.0 パートナーノード:画像編集モード [今後更新予定] \ No newline at end of file diff --git a/ja/tutorials/partner-nodes/luma/luma-image-to-image.mdx b/ja/tutorials/partner-nodes/luma/luma-image-to-image.mdx index eb01159e9..9771e7a65 100644 --- a/ja/tutorials/partner-nodes/luma/luma-image-to-image.mdx +++ b/ja/tutorials/partner-nodes/luma/luma-image-to-image.mdx @@ -1,30 +1,20 @@ --- -title: "Luma Image to Image パートナーノード|ComfyUI 公式サンプル" -description: "本ガイドでは、ComfyUI における Luma Image to Image パートナーノードの使用方法について説明します" +title: "Luma Image to Image パートナーノード ComfyUI 公式サンプル" +description: "本ガイドでは、ComfyUI での Luma Image to Image パートナーノードの使用方法について説明します" sidebarTitle: "Luma Image to Image" -translationSourceHash: 6eadbdbe +translationSourceHash: 7b3e8dc6 translationFrom: tutorials/partner-nodes/luma/luma-image-to-image.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -[Luma Image to Image](/built-in-nodes/partner-node/image/luma/luma-image-to-image) ノードは、Luma AI の技術を活用してテキストプロンプトに基づき既存の画像を編集する機能を提供します。この際、元の画像の特定の特徴や構造を保持することが可能です。 - -本ガイドでは、このノードを用いた「画像から画像へ(Image-to-Image)」のワークフローを設定する手順を解説します。 +Luma Image to Image ノードは、Luma AI の技術を使用し、テキストプロンプトに基づいて既存の画像を編集することを可能にします。この際、元の画像の特定の特徴や構造を保持できます。本ガイドでは、このノードを使用して画像から画像へのワークフローをセットアップする方法を紹介します。 -## Luma Image to Image ノードのドキュメント - -各パラメーターの詳細な設定については、以下のドキュメントをご参照ください: - - -Luma Image to Image ノードのドキュメント - - -## Luma Image to Image ノードによる画像から画像へ(Image-to-Image)ワークフロー +## Luma Image to Image パートナーノードのワークフロー この機能は、物体や形状の変更に非常に適していますが、色調の変更にはやや不向きです。推奨される `image_weight` 値は 0.0~0.1 程度の低めの数値です。 diff --git a/ja/tutorials/partner-nodes/luma/luma-image-to-video.mdx b/ja/tutorials/partner-nodes/luma/luma-image-to-video.mdx index 0837e92f6..bcc49eb94 100644 --- a/ja/tutorials/partner-nodes/luma/luma-image-to-video.mdx +++ b/ja/tutorials/partner-nodes/luma/luma-image-to-video.mdx @@ -1,34 +1,22 @@ --- -title: "Luma Image to Video API ノード ComfyUI 公式サンプル" +title: "Luma Image to Video パートナーノード ComfyUI 公式サンプル" description: "ComfyUI で Luma Image to Video パートナーノードを活用する方法を学びましょう" sidebarTitle: "Luma Image to Video" -translationSourceHash: c16eec4f +translationSourceHash: d1417e7a translationFrom: tutorials/partner-nodes/luma/luma-image-to-video.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -[Luma Image to Video](/built-in-nodes/partner-node/video/luma/luma-image-to-video) ノードは、Luma AI の先進技術を活用して静止画を滑らかでダイナミックな動画に変換できる機能を提供し、画像に生命と動きを付与します。 +Luma Image to Video ノードは、Luma AI の先進技術を活用して静止画を滑らかでダイナミックな動画に変換し、画像に命と動きを与えます。 本ガイドでは、このノードを用いた画像から動画への変換ワークフローの構築手順を解説します。 -## Luma Image to Video ノードのドキュメント - -ノードのパラメーターについて詳しく知るには、以下のドキュメントをご参照ください: - - -Luma Image to Video パートナーノードのドキュメント - - - -Luma Concepts パートナーノードのドキュメント - - -## Luma API ノードを用いた画像→動画ワークフロー +## Luma パートナーノードを使用した画像から動画へのワークフロー Luma Image to Video ノードは、動画のモーション効果を決定するためのテキストプロンプトに加え、最低限 `first_image` または `last_image` のいずれか 1 つの画像入力が必要です。本ガイドでは、`first_image` と `luma_concepts` を組み合わせたサンプルを用意し、Luma AI の動画生成能力を実際に体験できるようにしています。 diff --git a/ja/tutorials/partner-nodes/luma/luma-text-to-image.mdx b/ja/tutorials/partner-nodes/luma/luma-text-to-image.mdx index a22f9a4a3..41a3e9d8b 100644 --- a/ja/tutorials/partner-nodes/luma/luma-text-to-image.mdx +++ b/ja/tutorials/partner-nodes/luma/luma-text-to-image.mdx @@ -2,35 +2,23 @@ title: "Luma Text to Image パートナーノード ComfyUI 公式サンプル" description: "本ガイドでは、ComfyUI で Luma Text to Image パートナーノードを使用する方法について説明します" sidebarTitle: "Luma Text to Image" -translationSourceHash: f0284d80 +translationSourceHash: 189b15fc translationFrom: tutorials/partner-nodes/luma/luma-text-to-image.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -[Luma Text to Image](/built-in-nodes/partner-node/image/luma/luma-text-to-image) ノードは、Luma AI の先進技術を活用してテキストプロンプトから高品質な画像を生成する機能を提供します。写真のようにリアルなコンテンツやアーティスティックなスタイルの画像を作成できます。 +Luma Text to Image ノードは、Luma AI の先進技術を活用して、テキストプロンプトから高品質な画像を生成します。写真のようにリアルなコンテンツやアーティスティックなスタイルの画像を作成できます。 本ガイドでは、このノードを用いたテキストから画像を生成するワークフローの設定方法を紹介します。 -## Luma Text to Image ノードのドキュメント +## Luma Text to Image パートナーノードのワークフロー -詳細なパラメーター設定については、以下のドキュメントをご参照ください: - - -Luma Text to Image ノードのドキュメント - - - -Luma Reference ノードのドキュメント - - -## Luma Text to Image ノードによるテキストから画像を生成するワークフロー - -`Luma Text to Image` ノードに画像入力が一切ない状態で使用すると、これはテキストから画像を生成する(text-to-image)ワークフローとして機能します。本ガイドでは、`style_image` および `image_luma_ref` を用いた例を作成し、Luma AI の優れた画像処理能力を体験できるようにしています。 +`Luma Text to Image` ノードに画像入力が一切ない状態で使用すると、これはテキストから画像を生成する(text-to-image)ワークフローとして機能します。本ガイドでは、`style_image` と `image_luma_ref` を用いた例を作成し、Luma AI の優れた画像処理能力を紹介しています。 ### 1. ワークフローファイルのダウンロード @@ -48,6 +36,7 @@ Luma Reference ノードのドキュメント ![Luma Text to Image ワークフロー実行手順](/images/tutorial/api_nodes/luma/luma_t2i_step_guide.jpg) 画像中の番号順に従って、基本的なワークフローを完了してください: + 1. `Load image` ノードで参照用画像をアップロードする 2. `Load image (renamed to styleref)` ノードでスタイル参照用画像をアップロードする 3. (任意)`Luma Text to Image` ノード内のプロンプトを編集する @@ -59,5 +48,5 @@ Luma Reference ノードのドキュメント ### 3. 補足事項 -- [このノード](/built-in-nodes/partner-node/image/luma/luma-text-to-image) では、最大で同時に 4 枚の参照画像とキャラクター参照を入力できます。 +- このノードでは、最大で同時に 4 枚の参照画像とキャラクター参照を入力できます。 - 複数の画像入力を有効化するには、紫色の「Bypassed(バイパス済み)」ノードを右クリックし、その `mode` を `always` に設定してください \ No newline at end of file diff --git a/ja/tutorials/partner-nodes/luma/luma-text-to-video.mdx b/ja/tutorials/partner-nodes/luma/luma-text-to-video.mdx index facbdc3fe..9c5511929 100644 --- a/ja/tutorials/partner-nodes/luma/luma-text-to-video.mdx +++ b/ja/tutorials/partner-nodes/luma/luma-text-to-video.mdx @@ -1,34 +1,20 @@ --- -title: "Luma Text to Video API ノード ComfyUI 公式ガイド" +title: "Luma Text to Video パートナーノード ComfyUI 公式ガイド" description: "ComfyUI で Luma Text to Video パートナーノードを活用する方法を学びましょう" sidebarTitle: "Luma Text to Video" -translationSourceHash: 1e62e5e2 +translationSourceHash: 2a1a00b9 translationFrom: tutorials/partner-nodes/luma/luma-text-to-video.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -[Luma Text to Video](/built-in-nodes/partner-node/video/luma/luma-text-to-video) ノードは、Luma AI の革新的な動画生成技術を活用して、テキストによる説明から高品質で滑らかな動画を生成できます。 - -本ガイドでは、このノードを用いたテキストから動画を生成するワークフローの構築手順を解説します。 +Luma Text to Video ノードは、Luma AI の革新的な動画生成技術を活用して、テキストによる説明から高品質で滑らかな動画を生成できます。本ガイドでは、このノードを用いたテキストから動画へのワークフローの構築手順を解説します。 -## Luma Text to Video ノードのドキュメント - -ノードのパラメーターについて詳しく知るために、以下のドキュメントをご確認ください。 - - -Luma Text to Video パートナーノードのドキュメント - - - -Luma Concepts パートナーノードのドキュメント - - -## Luma API ノードを用いたテキストから動画へ変換するワークフロー +## Luma パートナーノードを用いたテキストから動画へのワークフロー Luma Text to Video ノードでは、生成する動画の内容を記述したテキストプロンプトが必要です。本ガイドでは、`prompt` および `luma_concepts` を用いたサンプルを作成し、Luma AI の優れた動画生成能力を紹介します。 @@ -36,11 +22,11 @@ Luma Text to Video ノードでは、生成する動画の内容を記述した 下記の動画のメタデータにワークフロー情報が含まれています。動画をダウンロードし、ComfyUI にドラッグ&ドロップすることで、ワークフローを読み込むことができます。 -![Luma Text to Video ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/luma/t2v/luma_t2v.mp4) +![Luma Text to Video Workflow](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/luma/t2v/luma_t2v.mp4) ### 2. 手順に従って実行 -![Luma Text to Video ワークフローの手順](/images/tutorial/api_nodes/luma/luma_t2v_step_guide.jpg) +![Luma Text to Video Workflow Steps](/images/tutorial/api_nodes/luma/luma_t2v_step_guide.jpg) ワークフローを実行するための基本的な手順は以下の通りです: 1. `Luma Text to Video` ノード内に、生成したい動画の内容を記述するプロンプトを入力します diff --git a/ja/tutorials/partner-nodes/overview.mdx b/ja/tutorials/partner-nodes/overview.mdx index 240936e2a..67e384a30 100644 --- a/ja/tutorials/partner-nodes/overview.mdx +++ b/ja/tutorials/partner-nodes/overview.mdx @@ -34,7 +34,7 @@ ComfyUI アカウント API キーによるログイン方法を学ぶ 現在、ComfyUI アカウント API キー統合を介して当社のサービスにアクセスし、有料モデルのパートナー ノードを呼び出すことをサポートしています。有料モデルのパートナー ノードを呼び出すために API キー統合を利用する方法については、API キー統合セクションをご参照ください。 - **重要:** ここで言及する API キーは、ワークフロー内で有料のパートナー ノードにアクセスするために使用される **ComfyUI アカウント API キー**です。これは、開発者がカスタム ノードをレジストリに公開するために使用する **レジストリ公開用 API キー**とは異なります。カスタム ノードの公開をお考えの場合は、[ノードの公開](/registry/publishing) をご覧ください。 + **重要:** ここで言及する API キーは、ワークフロー内で有料のパートナー ノードにアクセスするために使用される **ComfyUI アカウント API キー**です。これは、開発者がカスタム ノードをレジストリに公開するために使用する **レジストリ公開用 API キー**とは異なります。カスタム ノードの公開をお考えの場合は、[ノードの公開](/ja/registry/publishing) をご覧ください。 diff --git a/ja/tutorials/partner-nodes/recraft/recraft-text-to-image.mdx b/ja/tutorials/partner-nodes/recraft/recraft-text-to-image.mdx index a46d77eb2..b9d07fdcd 100644 --- a/ja/tutorials/partner-nodes/recraft/recraft-text-to-image.mdx +++ b/ja/tutorials/partner-nodes/recraft/recraft-text-to-image.mdx @@ -1,59 +1,44 @@ --- -title: "Recraft Text to Image API ノード|ComfyUI 公式サンプル" -description: "ComfyUI で Recraft Text to Image パートナーノードを活用する方法を学びましょう" +title: "Recraft Text to Image パートナーノード|ComfyUI 公式サンプル" +description: "ComfyUI で Recraft Text to Image パートナーノードを使用する方法を学びましょう" sidebarTitle: "Recraft Text to Image" -translationSourceHash: 89cef53b +translationSourceHash: c559478e translationFrom: tutorials/partner-nodes/recraft/recraft-text-to-image.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -[Recraft Text to Image](/built-in-nodes/partner-node/image/recraft/recraft-text-to-image) ノードは、テキストによるプロンプトに基づき、Recraft AI の画像生成技術を用いて、高品質かつ多様なスタイルの画像を作成できます。 +Recraft Text to Image ノードは、テキストの説明をもとに、Recraft AI の画像生成技術を使ってさまざまなスタイルの高品質な画像を作成できます。 -本ガイドでは、このノードを用いたテキストから画像へのワークフローの構築手順を解説します。 +このガイドでは、このノードを使用してテキストから画像へのワークフローを構築する方法を説明します。 -## Recraft Text to Image API ノードのワークフロー +## Recraft Text to Image パートナーノードのワークフロー ### 1. ワークフローファイルのダウンロード -下記の画像のメタデータにワークフロー情報が含まれています。画像をダウンロードし、ComfyUI へドラッグ&ドロップすることで、ワークフローを読み込むことができます。 +下記の画像のメタデータにワークフロー情報が含まれています。画像をダウンロードして ComfyUI にドラッグ&ドロップすると、ワークフローが読み込まれます。 ![Recraft Text to Image ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/recraft/t2i/recraft_t2i.png) -### 2. ワークフロー実行手順に従う +### 2. ワークフローを実行する手順に従う -![Recraft Text to Image ワークフロー実行ステップ](/images/tutorial/api_nodes/recraft/recraft_t2v_step_guide.jpg) +![Recraft Text to Image ワークフロー手順](/images/tutorial/api_nodes/recraft/recraft_t2v_step_guide.jpg) -以下の番号付き手順に従って、基本的なワークフローを実行してください: -1. (任意)`Color` ノード内の `Recraft Color RGB` を希望の色に変更します -2. (任意)`Recraft Style` ノードを編集して、デジタルアート、リアルな写真、ロゴデザインなどの視覚スタイルを制御します。このグループには、必要に応じて有効化可能なその他のスタイルノードも含まれています -3. (任意)`Recraft Text to Image` ノード内の `prompt` パラメーターを編集します。また、`size` パラメーターも変更可能です -4. `Run` ボタンをクリックするか、ショートカットキー `Ctrl(macOS の場合は Cmd) + Enter` を使用して画像を生成します -5. API から結果が返された後、`Save Image` ノードで生成された画像を確認できます。また、画像は `ComfyUI/output/` ディレクトリにも保存されます +以下の番号付き手順に従って、基本的なワークフローを実行します: -> (任意)ワークフロー内には **Convert to SVG** グループが含まれています。このグループ内の `Recraft Vectorize Image` ノードは追加のクレジットを消費するため、SVG 形式への変換が必要な場合のみ有効化してください +1. (任意)`Color` ノードの `Recraft Color RGB` をお好みの色に変更します +2. (任意)`Recraft Style` ノードを変更して、デジタルアート、リアルな写真、ロゴデザインなどのビジュアルスタイルを制御します。このグループには、必要に応じて有効にできる他のスタイルノードも含まれています +3. (任意)`Recraft Text to Image` ノードの `prompt` パラメーターを編集します。`size` パラメーターを変更することもできます +4. `Run` ボタンをクリックするか、ショートカット `Ctrl(Cmd)+ Enter` を使用して画像を生成します +5. API から結果が返されたら、`Save Image` ノードで生成された画像を表示できます。画像は `ComfyUI/output/` ディレクトリにも保存されます -### 3. 補足情報 - -- **Recraft Style**:リアルな写真、デジタルアート、ロゴデザインなど、さまざまなプリセットスタイルを提供します -- **Seed パラメーター**:ノードを再実行するかどうかを判断するためだけに使用され、実際の生成結果にはシード値が影響しません - -## 関連ノードのドキュメント +> (任意)ワークフロー内には **Convert to SVG** グループが含まれています。このグループの `Recraft Vectorize Image` ノードは追加のクレジットを消費するため、生成された画像を SVG 形式に変換する必要がある場合にのみ有効にしてください -各ノードの詳細なパラメーター設定については、以下のドキュメントをご参照ください。 - - -Recraft Text to Image パートナーノードのドキュメント - - - -Recraft Style - Realistic Image パートナーノードのドキュメント - +### 3. 補足情報 - -Recraft Controls パートナーノードのドキュメント - \ No newline at end of file +- **Recraft Style**:リアルな写真、デジタルアート、ロゴデザインなどのさまざまなプリセットスタイルを提供します +- **Seed パラメーター**:ノードを再実行するかどうかを判断するためだけに使用され、実際の生成結果にはシード値は影響しません \ No newline at end of file diff --git a/ja/tutorials/partner-nodes/stability-ai/stable-diffusion-3-5-image.mdx b/ja/tutorials/partner-nodes/stability-ai/stable-diffusion-3-5-image.mdx index 4ca39398b..bc39ea05d 100644 --- a/ja/tutorials/partner-nodes/stability-ai/stable-diffusion-3-5-image.mdx +++ b/ja/tutorials/partner-nodes/stability-ai/stable-diffusion-3-5-image.mdx @@ -1,37 +1,37 @@ --- -title: "Stability AI Stable Diffusion 3.5 API ノード ComfyUI 公式サンプル" -description: "本記事では、ComfyUI で Stability AI Stable Diffusion 3.5 パートナーノードのテキストから画像へ(文生図)および画像から画像へ(図生図)の機能を活用する方法について説明します。" +title: "Stability AI Stable Diffusion 3.5 パートナーノード ComfyUI 公式サンプル" +description: "本記事では、ComfyUI で Stability AI Stable Diffusion 3.5 パートナーノードのテキストから画像生成および画像から画像生成の機能を活用する方法を紹介します。" sidebarTitle: "Stable Diffusion 3.5 Image" -translationSourceHash: b8324f23 +translationSourceHash: ac469600 translationFrom: tutorials/partner-nodes/stability-ai/stable-diffusion-3-5-image.mdx --- import ReqHint from "/snippets/ja/tutorials/partner-nodes/req-hint.mdx"; import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; -[Stability AI Stable Diffusion 3.5 Image](/built-in-nodes/partner-node/image/stability-ai/stability-ai-stable-diffusion-3-5-image) ノードを使用すると、Stability AI の Stable Diffusion 3.5 モデルを活用し、テキストプロンプトまたは参照画像をもとに高品質でディテール豊かな画像コンテンツを作成できます。 +Stability AI Stable Diffusion 3.5 Image ノードを使用すると、Stability AI の Stable Diffusion 3.5 モデルを活用し、テキストプロンプトまたは参照画像から高品質でディテール豊かな画像コンテンツを作成できます。 -本ガイドでは、このノードを用いたテキストから画像へおよび画像から画像へのワークフロー構築方法を紹介します。 +本ガイドでは、このノードを使用したテキストから画像生成と画像から画像生成の両方のワークフローの設定方法を紹介します。 -## Stability AI Stable Diffusion 3.5 テキストから画像へ(文生図)ワークフロー +## Stability AI Stable Diffusion 3.5 テキストから画像生成ワークフロー ### 1. ワークフローファイルのダウンロード 以下の画像には `metadata` にワークフロー情報が含まれています。ダウンロードして ComfyUI にドラッグ&ドロップすることで、対応するワークフローを読み込むことができます。 -![Stability AI Stable Diffusion 3.5 テキストから画像へ(文生図)ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/stability_ai/stable_diffusion_3-5-t2i.png) +![Stability AI Stable Diffusion 3.5 テキストから画像生成ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/stability_ai/stable_diffusion_3-5-t2i.png) ### 2. ステップごとにワークフローを完了させる -![Stability AI Stable Diffusion 3.5 テキストから画像へ(文生図)ステップガイド](/images/tutorial/api_nodes/stability_ai/stable_diffusion_3_5_image_t2i_step_guide.jpg) +![Stability AI Stable Diffusion 3.5 テキストから画像生成ステップガイド](/images/tutorial/api_nodes/stability_ai/stable_diffusion_3_5_image_t2i_step_guide.jpg) -画像中の番号順に従って、基本的なテキストから画像へ(文生図)ワークフローを実行できます: +画像中の番号順に従って、基本的なテキストから画像生成ワークフローを実行できます: 1. (任意)`Stability AI Stable Diffusion 3.5 Image` ノード内の `prompt` パラメータを編集し、生成したい画像の説明文を入力します。より詳細なプロンプトを指定すると、通常はより高品質な画像が得られます。 2. (任意)`model` パラメータから使用する SD 3.5 モデルのバージョンを選択します。 -3. (任意)`style_preset` パラメータから画像のビジュアルスタイルを制御します。異なるプリセットは「cinematic(映画的)」や「anime(アニメ風)」など、それぞれ異なるスタイル特性を持つ画像を生成します。「None」を選択すると、特定のスタイルは適用されません。 +3. (任意)`style_preset` パラメータから画像のビジュアルスタイルを制御します。異なるプリセットは「cinematic」や「anime」など、それぞれ異なるスタイル特性を持つ画像を生成します。「None」を選択すると、特定のスタイルは適用されません。 4. (任意)`String(Multiline)` を編集してネガティブプロンプトを変更し、生成画像に含めたくない要素を指定します。 5. `Run` ボタンをクリックするか、ショートカットキー `Ctrl(Windows)/Cmd(Mac) + Enter` を使用して画像生成を実行します。 6. API からの結果が返された後、`Save Image` ノードで生成された画像を確認できます。また、画像は `ComfyUI/output/` ディレクトリにも保存されます。 @@ -43,53 +43,28 @@ import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; - **スタイルプリセット(Style Preset)**: 画像の全体的なスタイルを素早く定義できる複数のプリセットスタイルを提供します。 - **ネガティブプロンプト(Negative Prompt)**: 生成画像に含めたくない要素を指定するために使用します。 - **Seed パラメータ**: 生成結果の再現や微調整に利用でき、創作時の反復作業に役立ちます。 -- 現在、`Load Image` ノードは「Bypass(バイパス)」モードになっています。有効化するには、ステップガイドを参照し、該当ノードを右クリックして「Mode(モード)」を「Always(常に)」に設定してください。これにより入力が有効になり、画像から画像へ(図生図)モードに切り替わります。 +- 現在、`Load Image` ノードは「Bypass(バイパス)」モードになっています。有効化するには、ステップガイドを参照し、該当ノードを右クリックして「Mode(モード)」を「Always(常に)」に設定してください。これにより入力が有効になり、画像から画像生成モードに切り替わります。 - 入力画像がない場合、`image_denoise` パラメータは効果を発揮しません。 -## Stability AI Stable Diffusion 3.5 画像から画像へ(図生図)ワークフロー +## Stability AI Stable Diffusion 3.5 画像から画像生成ワークフロー ### 1. ワークフローファイルのダウンロード 以下の画像には `metadata` にワークフロー情報が含まれています。ダウンロードして ComfyUI にドラッグ&ドロップすることで、対応するワークフローを読み込むことができます。 -![Stability AI Stable Diffusion 3.5 画像から画像へ(図生図)ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/stability_ai/sd3-5-i2i/stable_diffusion_3_5-i2i.png) +![Stability AI Stable Diffusion 3.5 画像から画像生成ワークフロー](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/stability_ai/sd3-5-i2i/stable_diffusion_3_5-i2i.png) -以下の画像を入力として使用するため、ダウンロードしてください -![Stability AI Stable Diffusion 3.5 画像から画像へ(図生図)ワークフロー入力画像](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/stability_ai/sd3-5-i2i/input.jpg) +以下の画像を入力として使用するため、ダウンロードしてください +![Stability AI Stable Diffusion 3.5 画像から画像生成ワークフロー入力画像](https://raw.githubusercontent.com/Comfy-Org/example_workflows/main/api_nodes/stability_ai/sd3-5-i2i/input.jpg) ### 2. ステップごとにワークフローを完了させる -![Stability AI Stable Diffusion 3.5 画像から画像へ(図生図)ステップガイド](/images/tutorial/api_nodes/stability_ai/stable_diffusion_3_5_image_i2i_step_guide.jpg) +![Stability AI Stable Diffusion 3.5 画像から画像生成ステップガイド](/images/tutorial/api_nodes/stability_ai/stable_diffusion_3_5_image_i2i_step_guide.jpg) -画像中の番号順に従って、画像から画像へ(図生図)ワークフローを実行できます: +画像中の番号順に従って、画像から画像生成ワークフローを実行できます: 1. `Load Image` ノードを通じて参照画像を読み込み、これを生成の基盤とします。 2. (任意)`Stability AI Stable Diffusion 3.5 Image` ノード内の `prompt` パラメータを編集し、参照画像に対して変更または強化したい要素を記述します。 3. (任意)`style_preset` パラメータから画像のビジュアルスタイルを制御します。異なるプリセットはそれぞれ異なるスタイル特性を持つ画像を生成します。 4. (任意|重要)`image_denoise` パラメータ(範囲:0.0–1.0)を調整して、元の画像をどの程度変更するかを制御します: - 0.0 に近い値ほど、生成画像は入力参照画像に近くなります(0.0 の場合はほぼ元画像と同一になります)。 - - 1.0 に近い値ほど、生成画像は純粋なテキストから画像へ(文生図)の結果に近くなります(1.0 の場合は、参照画像が提供されていないのと同じ状態になります)。 -5. (任意)`String(Multiline)` を編集してネガティブプロンプトを変更し、生成画像に含めたくない要素を指定します。 -6. `Run` ボタンをクリックするか、ショートカットキー `Ctrl(Windows)/Cmd(Mac) + Enter` を使用して画像生成を実行します。 -8. API からの結果が返された後、`Save Image` ノードで生成された画像を確認できます。また、画像は `ComfyUI/output/` ディレクトリにも保存されます。 - -### 3. 補足情報 - -以下の画像は、同一のパラメータ設定で、入力画像あり/なしの場合の結果比較を示しています: - -![Stability AI Stable Diffusion 3.5 入力画像あり/なしの比較](/images/tutorial/api_nodes/stability_ai/stable_diffusion_3_5_compare.jpg) - -**画像デノイズ(Image Denoise)**: このパラメータは、生成プロセスにおいて元画像の特徴をどの程度保持するかを決定します。画像から画像へ(図生図)モードにおいて最も重要な調整パラメータです。以下の画像は、異なるデノイズ強度による生成結果の違いを示しています: - -![Stability AI Stable Diffusion 3.5 画像から画像へ(図生図)デノイズ強度の説明](/images/tutorial/api_nodes/stability_ai/stable_diffusion_3_5_image_i2i_image_denoise.jpg) - -- **参照画像の選択**: 明確な被写体と良好な構図を持つ画像を選ぶと、通常はより良い結果が得られます。 -- **プロンプトのコツ**: 画像から画像へ(図生図)モードでは、プロンプトは既に画像内に存在するすべての要素を記述するのではなく、変更または強化したい要素に焦点を当てることが推奨されます。 -- **モードの切り替え**: 入力画像が提供されると、ノードは自動的にテキストから画像へ(文生図)モードから画像から画像へ(図生図)モードに切り替わり、アスペクト比のパラメータは無視されます。 - -## 関連ノードの詳細 - -対応するノードの詳細なパラメータ設定については、以下のドキュメントをご参照ください。 - - -Stability Stable Diffusion 3.5 Image API ノードドキュメンテーション - \ No newline at end of file + - 1.0 \ No newline at end of file diff --git a/ja/tutorials/partner-nodes/stability-ai/stable-image-ultra.mdx b/ja/tutorials/partner-nodes/stability-ai/stable-image-ultra.mdx index 30e88f096..946d89bec 100644 --- a/ja/tutorials/partner-nodes/stability-ai/stable-image-ultra.mdx +++ b/ja/tutorials/partner-nodes/stability-ai/stable-image-ultra.mdx @@ -1,8 +1,8 @@ --- -title: "Stability AI Stable Image Ultra APIノード ComfyUI公式サンプル" +title: "Stability AI Stable Image Ultra パートナーノード ComfyUI公式サンプル" description: "本記事では、ComfyUIでStability AIのStable Image Ultraパートナーノードを用いたテキストから画像への生成(テキスト・トゥ・イメージ)および画像から画像への生成(イメージ・トゥ・イメージ)の機能について解説します。" sidebarTitle: "Stable Image Ultra" -translationSourceHash: 3f350a0d +translationSourceHash: e3306a2b translationFrom: tutorials/partner-nodes/stability-ai/stable-image-ultra.mdx --- @@ -74,12 +74,4 @@ import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; ![Stability Stable Image Ultra 画像から画像への生成デノイズ解説](/images/tutorial/api_nodes/stability_ai/i2i_image_denoise.jpg) - **参照画像の選択**:被写体が明確で構図が良い画像を選ぶと、通常はより優れた結果が得られます。 -- **プロンプトに関するヒント**:画像から画像への生成モードでは、既に画像内に存在するすべての要素を記述するのではなく、むしろ変更または強調したい部分に焦点を当てたプロンプトを作成することを推奨します。 - -## 関連ノードのドキュメント - -対応するノードの詳細なパラメータ設定やその他の情報を確認するには、以下のドキュメントをご参照ください。 - - -Stability Stable Image Ultra APIノードのドキュメント - \ No newline at end of file +- **プロンプトに関するヒント**:画像から画像への生成モードでは、既に画像内に存在するすべての要素を記述するのではなく、むしろ変更または強調したい部分に焦点を当てたプロンプトを作成することを推奨します。 \ No newline at end of file diff --git a/ja/tutorials/utility/frame-interpolation.mdx b/ja/tutorials/utility/frame-interpolation.mdx index 98bbd34b8..326a4dd6c 100644 --- a/ja/tutorials/utility/frame-interpolation.mdx +++ b/ja/tutorials/utility/frame-interpolation.mdx @@ -9,7 +9,7 @@ translationFrom: tutorials/utility/frame-interpolation.mdx ## フレーム補間とは? -このワークフローにはカスタムノードが含まれています。ワークフローを実行する前に、[ComfyUI Manager](/manager/overview) を使用してこれらのカスタムノードをインストールする必要があります。 +このワークフローにはカスタムノードが含まれています。ワークフローを実行する前に、[ComfyUI Manager](/ja/manager/overview) を使用してこれらのカスタムノードをインストールする必要があります。 フレーム補間は、既存のフレーム間に中間フレームを生成することで、より滑らかな動きと時間的な一貫性の向上を実現します。この技術は動画のポストプロセッシングにおいて不可欠であり、生成された動画の品質を大幅に向上させることができます。 diff --git a/ja/tutorials/utility/image-upscale.mdx b/ja/tutorials/utility/image-upscale.mdx index 9947d029e..75e342195 100644 --- a/ja/tutorials/utility/image-upscale.mdx +++ b/ja/tutorials/utility/image-upscale.mdx @@ -128,7 +128,7 @@ Magnific Creative および Topaz Image Enhance の「クリエイティビテ ### ローカルモデル(ESRGAN) -ESRGAN モデルを用いた基本的なローカルアップスケーリングについては、[基本アップスケーリングチュートリアル](/tutorials/basic/upscale) をご覧ください。 +ESRGAN モデルを用いた基本的なローカルアップスケーリングについては、[基本アップスケーリングチュートリアル](/ja/tutorials/basic/upscale) をご覧ください。 | モデル | 最適な用途 | |---|---| diff --git a/ja/tutorials/utility/moge.mdx b/ja/tutorials/utility/moge.mdx index f900cc282..b347f183b 100644 --- a/ja/tutorials/utility/moge.mdx +++ b/ja/tutorials/utility/moge.mdx @@ -6,7 +6,7 @@ translationSourceHash: dcec1d5b translationFrom: tutorials/utility/moge.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' # ComfyUI MoGe の紹介 diff --git a/ja/tutorials/utility/preprocessors.mdx b/ja/tutorials/utility/preprocessors.mdx index ef69bcaba..c3c83792f 100644 --- a/ja/tutorials/utility/preprocessors.mdx +++ b/ja/tutorials/utility/preprocessors.mdx @@ -9,7 +9,7 @@ translationFrom: tutorials/utility/preprocessors.mdx ## プリプロセッサーとは? -これらのワークフローにはカスタムノードが含まれています。ワークフローを実行する前に、[ComfyUI Manager](/manager/overview) を使用してそれらをインストールする必要があります。 +これらのワークフローにはカスタムノードが含まれています。ワークフローを実行する前に、[ComfyUI Manager](/ja/manager/overview) を使用してそれらをインストールする必要があります。 プリプロセッサーは、画像から構造情報を抽出するための基盤となるツールです。これらは画像を、深度マップ、ラインアート、ポーズスケルトン、表面法線などの条件信号に変換します。これらの出力は、ControlNet、画像から画像への生成(img2img)、および動画ワークフローにおいて、より高い制御性と一貫性を実現します。 diff --git a/ja/tutorials/utility/remove-background-birefnet.mdx b/ja/tutorials/utility/remove-background-birefnet.mdx index b6a78acab..d7e8bccd8 100644 --- a/ja/tutorials/utility/remove-background-birefnet.mdx +++ b/ja/tutorials/utility/remove-background-birefnet.mdx @@ -6,7 +6,7 @@ translationSourceHash: 0f977d6d translationFrom: tutorials/utility/remove-background-birefnet.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/utility/video-segment-sam3.mdx b/ja/tutorials/utility/video-segment-sam3.mdx index e5f82dbf1..923ec6dc3 100644 --- a/ja/tutorials/utility/video-segment-sam3.mdx +++ b/ja/tutorials/utility/video-segment-sam3.mdx @@ -6,7 +6,7 @@ translationSourceHash: 666093f9 translationFrom: tutorials/utility/video-segment-sam3.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/utility/video-upscale.mdx b/ja/tutorials/utility/video-upscale.mdx index ba6dbdb62..19c16b286 100644 --- a/ja/tutorials/utility/video-upscale.mdx +++ b/ja/tutorials/utility/video-upscale.mdx @@ -178,7 +178,7 @@ translationFrom: tutorials/utility/video-upscale.mdx ## 便利なヒント -- アップスケーリングと[フレーム補間](/tutorials/utility/frame-interpolation)を組み合わせることで、より滑らかで高解像度の出力を得られます。 +- アップスケーリングと[フレーム補間](/ja/tutorials/utility/frame-interpolation)を組み合わせることで、より滑らかで高解像度の出力を得られます。 - AI 生成動画の場合、クリエイティブアップスケーリングに修復を依存するのではなく、アップスケーリング前にアーティファクトを修正することを検討してください。 - 実際のフル動画を処理する前に、サンプルクリップで複数のモデルをテストしてください。 - 元のコンテンツへの忠実度が厳密に求められる場合は、コンサバティブアップスケーリングをご利用ください。 \ No newline at end of file diff --git a/ja/tutorials/utility/void-video-inpainting.mdx b/ja/tutorials/utility/void-video-inpainting.mdx index 5f0279474..88affc730 100644 --- a/ja/tutorials/utility/void-video-inpainting.mdx +++ b/ja/tutorials/utility/void-video-inpainting.mdx @@ -6,7 +6,7 @@ translationSourceHash: e8e6c573 translationFrom: tutorials/utility/void-video-inpainting.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' diff --git a/ja/tutorials/video/cosmos/cosmos-predict2-video2world.mdx b/ja/tutorials/video/cosmos/cosmos-predict2-video2world.mdx index fe6f03064..5871cea65 100644 --- a/ja/tutorials/video/cosmos/cosmos-predict2-video2world.mdx +++ b/ja/tutorials/video/cosmos/cosmos-predict2-video2world.mdx @@ -6,7 +6,7 @@ translationSourceHash: 7c20daa6 translationFrom: tutorials/video/cosmos/cosmos-predict2-video2world.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' Cosmos-Predict2 は、NVIDIA によって開発された次世代の物理世界基礎モデルであり、物理 AI シナリオにおける高品質な視覚生成および予測タスクのために特別に設計されています。 このモデルは、卓越した物理的正確性、環境相互作用性、および詳細再現能力を特徴とし、複雑な物理現象や動的シーンの現実的なシミュレーションを可能にします。 diff --git a/ja/tutorials/video/wan/fun-camera.mdx b/ja/tutorials/video/wan/fun-camera.mdx index b0f98566e..fc129d639 100644 --- a/ja/tutorials/video/wan/fun-camera.mdx +++ b/ja/tutorials/video/wan/fun-camera.mdx @@ -6,7 +6,7 @@ translationSourceHash: 79f5efc3 translationFrom: tutorials/video/wan/fun-camera.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' ## Wan2.1 Fun Camera について diff --git a/ja/tutorials/video/wan/vace.mdx b/ja/tutorials/video/wan/vace.mdx index 556600718..0db674b39 100644 --- a/ja/tutorials/video/wan/vace.mdx +++ b/ja/tutorials/video/wan/vace.mdx @@ -1,12 +1,12 @@ --- -title: "ComfyUI Wan2.1 VACE 動画生成のサンプル" -description: "本記事では、ComfyUI を用いて Wan2.1 VACE の動画生成サンプルを実行する方法について説明します" +title: "ComfyUI Wan2.1 VACE 動画サンプル" +description: "本記事では、ComfyUI で Wan VACE 動画生成のサンプルを完了する方法を紹介します。" sidebarTitle: "Wan2.1 VACE" -translationSourceHash: 3b188d5e +translationSourceHash: 379bd35f translationFrom: tutorials/video/wan/vace.mdx --- -import CancelBypass from '/snippets/interface/cancel-bypass.mdx' +import CancelBypass from '/snippets/ja/interface/cancel-bypass.mdx' import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; @@ -15,7 +15,7 @@ import UpdateReminder from "/snippets/ja/tutorials/update-reminder.mdx"; ## VACE について -VACE 14B は、アリババグループの Tongyi Wanxiang チームが公開したオープンソースの統合型動画編集モデルです。このモデルは、複数のタスクを統合した機能、高解像度処理のサポート、および柔軟なマルチモーダル入力機構を備えており、動画制作の効率性と品質を大幅に向上させます。 +VACE 14B は、アリババ Tongyi Wanxiang チームが公開したオープンソースの統合型動画編集モデルです。このモデルは、複数のタスクを統合した機能、高解像度処理のサポート、および柔軟なマルチモーダル入力機構を備えており、動画制作の効率性と品質を大幅に向上させます。 本モデルは [Apache-2.0](https://github.com/ali-vilab/VACE?tab=Apache-2.0-1-ov-file) ライセンスの下でオープンソース化されており、個人利用および商用利用が可能です。 @@ -112,122 +112,4 @@ MP4 ファイルからワークフローを読み込めない場合は、ComfyUI 画像中の番号順に操作を行い、ワークフローがスムーズに実行されるようご確認ください。 1. `CLIP Text Encode (Positive Prompt)` ノードにポジティブプロンプトを入力してください -2. `CLIP Text Encode (Negative Prompt)` ノードにネガティブプロンプトを入力してください -3. `WanVaceToVideo` で画像サイズ(初回実行時は 640×640 解像度を推奨)およびフレーム数(動画の再生時間)を設定してください -4. `Run` ボタンをクリックするか、ショートカット `Ctrl(Mac の場合は Cmd)+ Enter` を押して動画生成を実行してください -5. 生成が完了すると、動画は自動的に `ComfyUI/output/video` ディレクトリに保存されます(サブフォルダの場所は `save video` ノードの設定により異なります) - - -NVIDIA GeForce RTX 4090 GPU を用いたテスト結果: -- 720×1280 解像度で 81 フレームを生成する場合、約 40 分かかります -- 640×640 解像度で 49 フレームを生成する場合、約 7 分かかります - -ただし、720P の動画品質の方が優れています。 - - -## VACE 画像から動画へ(Image-to-Video)ワークフロー - -上記のワークフローをそのままご利用いただけます。ただし、**Load reference image** 内の `Load image` ノードの Bypass を解除し、ご自身の画像を入力してください。また、以下の画像もご利用いただけます。このファイルでは、すでに必要なパラメータが事前に設定されています。 - -### 1. ワークフローのダウンロード -以下の動画をダウンロードし、ComfyUI にドラッグ&ドロップすることで、対応するワークフローを読み込んでください。 - - - -以下の画像を入力としてダウンロードしてください: - -![vace-i2v-input](https://github.com/Comfy-Org/example_workflows/raw/refs/heads/main/video/wan/vace/i2v/input.jpg) - -### 2. ステップ・バイ・ステップでワークフローを完了する - -![Workflow Steps](/images/tutorial/video/wan/wan-vace-i2v-step-guide.jpg) - -画像中の番号順に操作を行い、ワークフローがスムーズに実行されるようご確認ください。 - -1. `Load image` ノードに該当する画像を入力してください -2. テキストから動画へ(Text-to-Video)ワークフローと同様に、プロンプトを修正・編集できます -3. `WanVaceToVideo` で画像サイズ(初回実行時は 640×640 解像度を推奨)およびフレーム数(動画の再生時間)を設定してください -4. `Run` ボタンをクリックするか、ショートカット `Ctrl(Mac の場合は Cmd)+ Enter` を押して動画生成を実行してください -5. 生成が完了すると、動画は自動的に `ComfyUI/output/video` ディレクトリに保存されます(サブフォルダの場所は `save video` ノードの設定により異なります) - - -画像サイズを設定するために「画像の寸法を取得」などのノードをご利用になる場合がありますが、対応するノードには幅・高さのステップサイズ要件があるため、画像の寸法が 16 で割り切れない場合、エラーが発生することがあります。 - - -### 3. 追加のワークフローに関する注意点 - -VACE は、単一の画像内に複数の参照画像を入力し、それらに対応する動画を生成することもサポートしています。関連するサンプルは、VACE プロジェクトの[ページ](https://ali-vilab.github.io/VACE-Page/)でご確認いただけます。 - -## VACE 動画から動画へ(Video-to-Video)ワークフロー - -### 1. ワークフローのダウンロード - -以下の動画をダウンロードし、ComfyUI にドラッグ&ドロップすることで、対応するワークフローを読み込んでください。 - - -以下の素材を入力として使用します: - -1. 参照用の入力画像 -![v2v-input](https://raw.githubusercontent.com/Comfy-Org/example_workflows/refs/heads/main/video/wan/vace/v2v/input.jpg) - -2. 以下の動画は事前に前処理済みであり、動画生成の制御に使用します。 - - - -3. 以下の動画は元の動画です。これらの素材をダウンロードし、[comfyui_controlnet_aux](https://github.com/Fannovel16/comfyui_controlnet_aux) のような前処理ノードを用いて画像の前処理を行うことができます。 - - - - -### 2. ステップ・バイ・ステップでワークフローを完了する - -![Workflow Steps](/images/tutorial/video/wan/wan-vace-v2v-step-guide.jpg) - -画像中の番号順に操作を行い、ワークフローがスムーズに実行されるようご確認ください。 - -1. `Load reference image` 内の `Load Image` ノードに参照画像を入力してください -2. `Load control video` 内の `Load Video` ノードに制御用動画を入力してください。提供された動画はすでに前処理済みのため、追加の処理は不要です -3. 元の動画を自分で前処理する必要がある場合は、`Image preprocessing` グループを編集するか、`comfyui_controlnet_aux` ノードを用いて前処理を実行してください -4. プロンプトを修正してください -5. `WanVaceToVideo` で画像サイズ(初回実行時は 640×640 解像度を推奨)およびフレーム数(動画の再生時間)を設定してください -6. `Run` ボタンをクリックするか、ショートカット `Ctrl(Mac の場合は Cmd)+ Enter` を押して動画生成を実行してください -7. 生成が完了すると、動画は自動的に `ComfyUI/output/video` ディレクトリに保存されます(サブフォルダの場所は `save video` ノードの設定により異なります) - -## VACE 動画アウトペインティング(Video Outpainting)ワークフロー - -[更新予定] - -## VACE 最初と最後のフレームを指定した動画生成 - -[更新予定] - -最初および最後のフレームが有効に機能するためには、動画の `length` 設定が `length - 1` が 4 で割り切れる値になる必要があります。 -対応する `Batch_size` 設定は、`Batch_size = length - 2` を満たす必要があります。 - -## 関連ノードのドキュメント - -以下のドキュメントを参照して、関連ノードについて学んでください。 - - -WanVaceToVideo ノードのドキュメント - - - -ComfyUI TrimVideoLatent ノードのドキュメント - \ No newline at end of file +2. ` \ No newline at end of file diff --git a/ja/tutorials/video/wan/wan-ati.mdx b/ja/tutorials/video/wan/wan-ati.mdx index 8f10116e9..61a7c73b3 100644 --- a/ja/tutorials/video/wan/wan-ati.mdx +++ b/ja/tutorials/video/wan/wan-ati.mdx @@ -6,7 +6,7 @@ translationSourceHash: 79cff268 translationFrom: tutorials/video/wan/wan-ati.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **ATI(Any Trajectory Instruction:任意軌道指示)** は、ByteDanceチームが提案した制御可能な動画生成フレームワークです。ATIはWan2.1をベースとして実装されており、物体、局所領域、カメラモーションなど、動画内のさまざまな要素を、任意の軌道指示によって統一的に制御することをサポートします。 diff --git a/ja/tutorials/video/wan/wan-move.mdx b/ja/tutorials/video/wan/wan-move.mdx index 51b195978..838c04c1a 100644 --- a/ja/tutorials/video/wan/wan-move.mdx +++ b/ja/tutorials/video/wan/wan-move.mdx @@ -6,7 +6,7 @@ translationSourceHash: 07bfbc40 translationFrom: tutorials/video/wan/wan-move.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Wan-Move** は、アリババの通義実験室(Tongyi Lab)によって開発された、運動制御可能な動画生成フレームワークです。入力画像上でポイントのトラジェクトリ(軌跡)を指定することで、生成された動画内の物体の運動を制御でき、画像から動画への生成をより正確かつ制御可能にします。 diff --git a/ja/tutorials/video/wan/wan2-2-animate.mdx b/ja/tutorials/video/wan/wan2-2-animate.mdx index 91a86b451..3caf4f30c 100644 --- a/ja/tutorials/video/wan/wan2-2-animate.mdx +++ b/ja/tutorials/video/wan/wan2-2-animate.mdx @@ -5,7 +5,7 @@ sidebarTitle: "Wan2.2 Animate" translationSourceHash: 46cb9d1b translationFrom: tutorials/video/wan/wan2-2-animate.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' Wan-Animate は、WAN チームが開発した人物アニメーションおよび置換のための統合フレームワークです。 @@ -111,7 +111,7 @@ ComfyUI/ - [ComfyUI-KJNodes](https://github.com/kijai/ComfyUI-KJNodes) - [ComfyUI-comfyui_controlnet_aux](https://github.com/Fannovel16/comfyui_controlnet_aux) -カスタムノードのインストール方法が不明な場合は、[カスタムノードのインストール方法](/installation/install_custom_node) をご参照ください。 +カスタムノードのインストール方法が不明な場合は、[カスタムノードのインストール方法](/ja/installation/install_custom_node) をご参照ください。 ### 4. ワークフロー操作手順 @@ -138,7 +138,7 @@ Wan2.2 Animate には「Mix」と「Move」の2つのモードがあります。 #### 4.2 Move モード -Wan2.2 Animate ワークフローでは、[サブグラフ](/interface/features/subgraph) を活用しています。Move モードへの切り替え手順は以下の通りです: +Wan2.2 Animate ワークフローでは、[サブグラフ](/ja/interface/features/subgraph) を活用しています。Move モードへの切り替え手順は以下の通りです: ![Subgraph](/images/tutorial/video/wan/wan2_2/wan2.2_animate_subgraph.jpg) diff --git a/ja/tutorials/video/wan/wan2-2-fun-camera.mdx b/ja/tutorials/video/wan/wan2-2-fun-camera.mdx index 1ef1023c6..2636c306a 100644 --- a/ja/tutorials/video/wan/wan2-2-fun-camera.mdx +++ b/ja/tutorials/video/wan/wan2-2-fun-camera.mdx @@ -6,7 +6,7 @@ translationSourceHash: c2df0664 translationFrom: tutorials/video/wan/wan2-2-fun-camera.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Wan2.2-Fun-Camera-Control** は、Alibaba PAI が開発した次世代の動画生成およびカメラ制御モデルです。革新的な「カメラ制御コード(Camera Control Codes)」を導入し、深層学習とマルチモーダルな条件付き入力を組み合わせることで、あらかじめ定義されたカメラ運動条件に厳密に従った高品質な動画を生成します。本モデルは **Apache 2.0 ライセンス** の下で公開されており、商用利用が可能です。 diff --git a/ja/tutorials/video/wan/wan2-2-fun-control.mdx b/ja/tutorials/video/wan/wan2-2-fun-control.mdx index c9c516e34..2e444a852 100644 --- a/ja/tutorials/video/wan/wan2-2-fun-control.mdx +++ b/ja/tutorials/video/wan/wan2-2-fun-control.mdx @@ -6,7 +6,7 @@ translationSourceHash: 0e10558a translationFrom: tutorials/video/wan/wan2-2-fun-control.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Wan2.2-Fun-Control** は、Alibaba PAI チームによってリリースされた次世代の動画生成・制御モデルです。革新的な Control Codes 機制を導入し、深層学習とマルチモーダル条件入力を組み合わせることで、预设された制御条件に準拠した高品質な動画を生成できます。本モデルは **Apache 2.0 ライセンス** でリリースされており、商用利用も可能です。 diff --git a/ja/tutorials/video/wan/wan2-2-fun-inp.mdx b/ja/tutorials/video/wan/wan2-2-fun-inp.mdx index 2b84d36b9..3265d72e4 100644 --- a/ja/tutorials/video/wan/wan2-2-fun-inp.mdx +++ b/ja/tutorials/video/wan/wan2-2-fun-inp.mdx @@ -6,7 +6,7 @@ translationSourceHash: 6914cd26 translationFrom: tutorials/video/wan/wan2-2-fun-inp.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' **Wan2.2-Fun-Inp** は、Alibaba PAI チームが開発・公開した首尾フレーム制御型動画生成モデルです。ユーザーは**開始フレーム画像と終了フレーム画像**を入力することで、それらの間を滑らかに遷移する中間動画を生成できます。これにより、クリエイターはより高度な創造的コントロールを実現できます。本モデルは **Apache 2.0 ライセンス**のもとで公開されており、商用利用も可能です。 diff --git a/ja/tutorials/video/wan/wan2-2-s2v.mdx b/ja/tutorials/video/wan/wan2-2-s2v.mdx index ba5f3e395..872e49120 100644 --- a/ja/tutorials/video/wan/wan2-2-s2v.mdx +++ b/ja/tutorials/video/wan/wan2-2-s2v.mdx @@ -6,7 +6,7 @@ translationSourceHash: 8d1b0bf2 translationFrom: tutorials/video/wan/wan2-2-s2v.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx' 先進的な音声駆動型動画生成モデル「Wan2.2-S2V」が、ComfyUI でネイティブ対応となりました!この強力な AI モデルは、静止画像と音声入力をもとに、ダイナミックな動画コンテンツを生成します。対話、歌唱、パフォーマンスなど、さまざまなクリエイティブな用途に対応可能です。 diff --git a/ja/tutorials/video/wan/wan2_2.mdx b/ja/tutorials/video/wan/wan2_2.mdx index 7fa0a321b..18f0ff019 100644 --- a/ja/tutorials/video/wan/wan2_2.mdx +++ b/ja/tutorials/video/wan/wan2_2.mdx @@ -6,7 +6,7 @@ translationSourceHash: 3d509ed7 translationFrom: tutorials/video/wan/wan2_2.mdx --- -import UpdateReminder from '/snippets/tutorials/update-reminder.mdx' +import UpdateReminder from '/snippets/ja/tutorials/update-reminder.mdx'