diff --git a/.claude/skills/add-model-page/SKILL.md b/.claude/skills/add-model-page/SKILL.md new file mode 100644 index 00000000000..0b7fe4b81ea --- /dev/null +++ b/.claude/skills/add-model-page/SKILL.md @@ -0,0 +1,173 @@ +--- +name: add-model-page +description: 'add, update, or remove a model page entry on the comfy org website. creates a PR to Comfy-Org/ComfyUI_frontend apps/website folder with the change and posts a Vercel preview link back to Slack.' +--- + +# add-model-page + +add, update, or remove model pages in the ComfyUI website. + +## Trigger phrases + +- `Add a model page for ` +- `Update the model page for ` +- `Remove from model pages` + +## Phase 1 — Parse the request + +Extract: + +- **action**: `add` | `update` | `remove` +- **model-name**: raw string (e.g. `flux1-schnell`, `flux1_dev.safetensors`) + +Normalize to a slug: lowercase, replace `_` and `.` with `-`, strip file extensions. +Example: `flux1_dev.safetensors` → `flux1-dev` + +## Architecture overview + +Models come from two sources merged at build time: + +| File | Purpose | +| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `apps/website/src/config/generated-models.json` | Auto-generated from workflow_templates (slug, name, directory, huggingFaceUrl, workflowCount, displayName, thumbnailUrl, docsUrl) | +| `apps/website/src/config/model-metadata.ts` | Hand-curated overrides (docsUrl, blogUrl, featured) — only add entries that need overrides | +| `apps/website/src/config/models.ts` | Merges the two above; exports typed `Model[]` | + +To regenerate the JSON from workflow_templates: + +```bash +pnpm tsx apps/website/scripts/generate-models.ts +``` + +This writes `apps/website/src/config/generated-models.json` directly. +Thumbnails are populated from local `.webp` files in `workflow_templates/templates/` — no network access needed. + +--- + +## Phase 2 — Gather model data (ADD / UPDATE) + +Run the generator to get fresh data, then find the model: + +```bash +pnpm tsx apps/website/scripts/generate-models.ts +jq '.[] | select(.slug | contains("MODEL_SLUG"))' \ + apps/website/src/config/generated-models.json +``` + +The JSON fields are: + +- `slug` — URL slug +- `name` — exact filename or display name for partner nodes +- `huggingFaceUrl` — download URL (empty for partner nodes) +- `directory` — `diffusion_models` | `loras` | … | `partner_nodes` +- `workflowCount` — integer +- `displayName` — human-readable name + +If no match and it is a known API/partner model, add it to `API_PROVIDER_MAP` in +`generate-models.ts` and re-run. Otherwise tell the user. + +--- + +## Phase 3 — Check for existing entry + +```bash +jq --arg slug "${SLUG}" '.[] | select(.slug == $slug)' \ + apps/website/src/config/generated-models.json +``` + +- Match found + action is `add` → switch to UPDATE flow automatically +- No match + action is `update` → stop and tell the user + +--- + +## Phase 4A — ADD: new partner/API model not in workflow_templates + +For partner nodes (no local file), add an entry to `API_PROVIDER_MAP` in +`apps/website/scripts/generate-models.ts`: + +```typescript +mymodel: { name: 'My Model', slug: 'my-model' }, +``` + +Then re-run `pnpm tsx apps/website/scripts/generate-models.ts` — it will appear +in `generated-models.json` automatically. + +If you also want a `docsUrl`, `blogUrl`, or a link to the hub model page, add an entry to `model-metadata.ts`: + +```typescript +'my-model': { + docsUrl: 'https://docs.comfy.org/tutorials/...', + blogUrl: 'https://blog.comfy.org/...', + hubSlug: 'my-model', // slug at comfy.org/workflows/model/{hubSlug} — only set if the page exists (returns 200) + featured: true +} +``` + +No changes to `models.ts` or `translations.ts` are needed. + +--- + +## Phase 4B — UPDATE: edit existing entry + +Only `model-metadata.ts` needs editing for most updates (docsUrl, blogUrl, +featured). For `displayName` or `directory` changes, edit the entry directly in +`generated-models.json` (until the next generator run would overwrite it — then +fix the source in `generate-models.ts`). + +--- + +## Phase 4C — REMOVE: delete entry + +Remove the entry from `generated-models.json` (or mark it with `canonicalSlug` +pointing to the replacement). No translation file changes needed. + +--- + +## Phase 5 — Verify TypeScript + +```bash +pnpm typecheck 2>&1 | grep -E "error|warning" | head -20 +``` + +Fix any type errors before proceeding. Common issues: + +- `ModelDirectory` type not matching a new `directory` value — add it to the union +- JSON import shape mismatch — `generated-models.json` must match `OutputModel` + +--- + +## Phase 6 — Create PR + +```bash +BRANCH="add-model-page-MODEL-SLUG" # or update- / remove- +git checkout -b $BRANCH +git add apps/website/src/config/generated-models.json \ + apps/website/scripts/generate-models.ts \ + apps/website/src/config/model-metadata.ts +git commit -m "feat(models): add model page for MODEL-SLUG" +git push -u origin $BRANCH +gh pr create \ + --title "Add model page: MODEL-SLUG" \ + --body "$(cat <<'EOF' +Adds a new model page entry for MODEL-SLUG. + +## Changes +- `generated-models.json`: regenerated with new entry (workflowCount N, directory DIRECTORY) +- `model-metadata.ts`: editorial overrides (docsUrl, featured) if needed +EOF +)" +``` + +For UPDATE use branch `update-model-page-MODEL-SLUG`. +For REMOVE use `remove-model-page-MODEL-SLUG`. + +--- + +## Error states + +| Situation | Response | +| ------------------------------- | ---------------------------------------------------------------- | +| Model not in workflow templates | Ask user to verify spelling or add it manually as a partner node | +| Slug already exists (add) | Switch to update flow automatically | +| Slug not found (update/remove) | Stop and ask user to confirm | +| Typecheck fails | Fix the error before pushing | diff --git a/.github/workflows/model-page-discovery.yaml b/.github/workflows/model-page-discovery.yaml new file mode 100644 index 00000000000..457c7546aaf --- /dev/null +++ b/.github/workflows/model-page-discovery.yaml @@ -0,0 +1,123 @@ +name: Model Page Discovery + +on: + schedule: + - cron: '0 9 * * 1' + workflow_dispatch: + +jobs: + discover: + runs-on: ubuntu-latest + permissions: + contents: read + issues: write + + steps: + - name: Fetch model labels from hub API + id: hub + shell: bash + run: | + set -euo pipefail + curl -fsSL 'https://comfy.org/api/hub/labels?type=model' -o hub-labels.json + echo "Fetched $(jq '.labels | length' hub-labels.json) model labels from hub" + + - name: Checkout ComfyUI_frontend + uses: actions/checkout@v6 + with: + sparse-checkout: apps/website/src/config/generated-models.json + + - name: Compare against existing models + id: compare + shell: bash + run: | + set -euo pipefail + + HUB_SLUGS=$(jq -r '[.labels[].name]' hub-labels.json) + + EXISTING_SLUGS=$(node -e " + const fs = require('fs'); + const models = JSON.parse( + fs.readFileSync( + 'apps/website/src/config/generated-models.json', + 'utf8' + ) + ); + console.log(JSON.stringify(models.map(m => m.slug))); + " 2>/dev/null || echo '[]') + + ADDED_SLUGS=$(node -e " + const hub = $HUB_SLUGS; + const existing = new Set($EXISTING_SLUGS); + console.log(JSON.stringify(hub.filter(s => !existing.has(s)))); + ") + + COUNT=$(node -e "console.log($ADDED_SLUGS.length)") + echo "new_count=$COUNT" >> \$GITHUB_OUTPUT + echo "new_slugs=$ADDED_SLUGS" >> \$GITHUB_OUTPUT + + if [ "\$COUNT" -eq 0 ]; then + echo "No new models found." + else + echo "Found \$COUNT new model(s)" + fi + + - name: Check for existing open discovery issue + id: existing_issue + if: steps.compare.outputs.new_count != '0' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash + run: | + COUNT=$(gh issue list \ + --repo "$GITHUB_REPOSITORY" \ + --state open \ + --search 'in:title "New models detected"' \ + --json number \ + --jq 'length') + echo "open_count=$COUNT" >> $GITHUB_OUTPUT + + - name: Open GitHub issue for new models + if: | + steps.compare.outputs.new_count != '0' && + steps.existing_issue.outputs.open_count == '0' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NEW_SLUGS: ${{ steps.compare.outputs.new_slugs }} + NEW_COUNT: ${{ steps.compare.outputs.new_count }} + shell: bash + run: | + SLUG_LIST=$(node -e " + const slugs = $NEW_SLUGS; + console.log(slugs.map(s => '- \`' + s + '\`').join('\n')); + ") + + gh issue create \ + --repo "$GITHUB_REPOSITORY" \ + --title "New models detected — add to model pages" \ + --body "## $NEW_COUNT new model(s) found in hub + + The weekly model discovery scan found model labels on the hub not yet in + \`apps/website/src/config/generated-models.json\`. + + ### New slugs ($NEW_COUNT) + + $SLUG_LIST + + ### Next steps + + 1. Review which of these warrant an SEO model page + 2. For local models: run \`SKIP_THUMBNAILS=1 pnpm generate:models\` and commit the result + 3. For partner/API models: add to \`API_PROVIDER_MAP\` in \`generate-models.ts\`, regenerate, commit + + --- + *Generated by the [model-page-discovery workflow](https://github.com/$GITHUB_REPOSITORY/actions/workflows/model-page-discovery.yaml)*" + + - name: Skip — open issue already exists + if: | + steps.compare.outputs.new_count != '0' && + steps.existing_issue.outputs.open_count != '0' + run: echo "An open discovery issue already exists — skipping creation." + + - name: No new models found + if: steps.compare.outputs.new_count == '0' + run: echo "No new models found — nothing to do." diff --git a/apps/website/package.json b/apps/website/package.json index 5a4aa57c3b3..e69f9973771 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -15,7 +15,8 @@ "test:e2e:local": "cross-env PLAYWRIGHT_LOCAL=1 playwright test", "test:visual": "playwright test --project visual", "test:visual:update": "playwright test --project visual --update-snapshots", - "ashby:refresh-snapshot": "tsx ./scripts/refresh-ashby-snapshot.ts" + "ashby:refresh-snapshot": "tsx ./scripts/refresh-ashby-snapshot.ts", + "generate:models": "tsx ./scripts/generate-models.ts" }, "dependencies": { "@astrojs/sitemap": "catalog:", diff --git a/apps/website/scripts/generate-models.ts b/apps/website/scripts/generate-models.ts new file mode 100644 index 00000000000..a546f608be3 --- /dev/null +++ b/apps/website/scripts/generate-models.ts @@ -0,0 +1,396 @@ +import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs' +import { join } from 'node:path' +import { fileURLToPath } from 'node:url' + +const WORKFLOW_TEMPLATES_BASE = + 'https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates' + +const TEMPLATES_DIR = fileURLToPath( + new URL('../../../../workflow_templates/templates', import.meta.url) +) + +const QUANT_SUFFIXES = [ + '_fp8_e4m3fn_scaled', + '_fp8_e4m3fn', + '_fp8_scaled', + '_fp4_mixed', + '_fp8mixed', + '_fp8', + '_fp16', + '_fp4', + '_bf16', + '_int8' +] + +interface RawModel { + name: string + url: string + directory: string +} + +interface ModelData { + url: string + directory: string + templates: Set + firstTemplate?: string +} + +interface OutputModel { + slug: string + name: string + huggingFaceUrl: string + directory: string + workflowCount: number + displayName: string + docsUrl?: string + thumbnailUrl?: string + canonicalSlug?: string +} + +// Maps api_*.json filename prefix to a canonical display name and slug. +// Add entries here as new partner integrations land in workflow_templates. +const API_PROVIDER_MAP: Record = { + nano: { name: 'Nano Banana', slug: 'nano-banana' }, + kling: { name: 'Kling AI', slug: 'kling-ai' }, + kling2: { name: 'Kling AI', slug: 'kling-ai' }, + meshy: { name: 'Meshy AI', slug: 'meshy-ai' }, + luma: { name: 'Luma Dream Machine', slug: 'luma-dream-machine' }, + runway: { name: 'Runway', slug: 'runway' }, + vidu: { name: 'Vidu', slug: 'vidu' }, + bfl: { name: 'Flux (API)', slug: 'flux-api' }, + grok: { name: 'Grok Image', slug: 'grok-image' }, + stability: { name: 'Stability AI', slug: 'stability-ai' }, + bytedance: { name: 'Seedance (ByteDance)', slug: 'seedance-bytedance' }, + bytedace: { name: 'Seedance (ByteDance)', slug: 'seedance-bytedance' }, + google: { name: 'Gemini Image', slug: 'gemini-image' }, + hailuo: { name: 'Hailuo MiniMax', slug: 'hailuo-minimax' }, + ideogram: { name: 'Ideogram', slug: 'ideogram' }, + pixverse: { name: 'Pixverse', slug: 'pixverse' }, + rodin: { name: 'Rodin 3D', slug: 'rodin-3d' }, + magnific: { name: 'Magnific AI', slug: 'magnific-ai' }, + bria: { name: 'Bria AI', slug: 'bria-ai' }, + tripo: { name: 'Tripo 3D', slug: 'tripo-3d' }, + tripo3: { name: 'Tripo 3D', slug: 'tripo-3d' }, + hunyuan3d: { name: 'Hunyuan 3D', slug: 'hunyuan-3d' }, + recraft: { name: 'Recraft', slug: 'recraft' }, + topaz: { name: 'Topaz Labs', slug: 'topaz-labs' }, + moonvalley: { name: 'Moonvalley', slug: 'moonvalley' }, + ltxv: { name: 'LTX Video (API)', slug: 'ltxv-api' }, + openai: { name: 'OpenAI DALL-E', slug: 'openai-dall-e' }, + wan: { name: 'Wan (API)', slug: 'wan-api' }, + wan2: { name: 'Wan (API)', slug: 'wan-api' }, + veo2: { name: 'Veo 2', slug: 'veo-2' }, + veo3: { name: 'Veo 3', slug: 'veo-3' }, + flux2: { name: 'Flux 2 (API)', slug: 'flux-2-api' }, + wavespeed: { name: 'Wavespeed', slug: 'wavespeed' }, + wavespped: { name: 'Wavespeed', slug: 'wavespeed' } +} + +function stripExt(name: string): string { + return name.replace(/\.(safetensors|ckpt|pt|bin)$/, '') +} + +function stripQuant(base: string): string { + for (const suffix of QUANT_SUFFIXES) { + if (base.endsWith(suffix)) return base.slice(0, -suffix.length) + } + return base +} + +function makeSlug(name: string): string { + const base = stripExt(name) + return base + .toLowerCase() + .replace(/[_.]/g, '-') + .replace(/-+/g, '-') + .replace(/^-|-$/g, '') +} + +function makeDisplayName(name: string): string { + const base = stripExt(name) + return base + .split(/[_-]/) + .map((part) => { + if (/^(fp\d+|bf\d+|int\d+)$/i.test(part)) return part.toUpperCase() + if (/^(e4m3fn|scaled|mixed|fp8mixed)$/i.test(part)) return part + if (/^\d+(\.\d+)?[bBkKmM]?$/.test(part)) return part + return part.charAt(0).toUpperCase() + part.slice(1) + }) + .join(' ') +} + +function extractModels( + obj: unknown, + templateName: string, + models: Map +): void { + if (obj === null || typeof obj !== 'object') return + + if (Array.isArray(obj)) { + for (const item of obj) extractModels(item, templateName, models) + return + } + + const record = obj as Record + + if (Array.isArray(record['models'])) { + for (const m of record['models'] as unknown[]) { + if (m === null || typeof m !== 'object' || Array.isArray(m)) continue + const model = m as Record + if (typeof model['name'] !== 'string') continue + + const name = model['name'] + const url = typeof model['url'] === 'string' ? model['url'] : '' + const directory = + typeof model['directory'] === 'string' ? model['directory'] : '' + + if (!models.has(name)) { + models.set(name, { + url, + directory, + templates: new Set(), + firstTemplate: templateName + }) + } + models.get(name)!.templates.add(templateName) + } + } + + for (const value of Object.values(record)) { + extractModels(value, templateName, models) + } +} + +interface ApiModelData { + slug: string + name: string + directory: 'partner_nodes' + templateCount: number +} + +function extractApiModels(files: string[]): ApiModelData[] { + const counts = new Map() + for (const file of files) { + if (!file.startsWith('api_')) continue + const prefix = file.slice(4).split('_')[0] + const entry = API_PROVIDER_MAP[prefix] + if (!entry) continue + counts.set(entry.slug, (counts.get(entry.slug) ?? 0) + 1) + } + return [...counts.entries()].map(([slug, count]) => { + const found = Object.values(API_PROVIDER_MAP).find((e) => e.slug === slug)! + return { + slug, + name: found.name, + directory: 'partner_nodes' as const, + templateCount: count + } + }) +} + +// Reads all locale index.json files to build a map of +// raw model filename → tutorialUrl. Index entries name the template file; +// that file's embedded model objects give the actual filenames. +function buildTutorialUrlMap(templatesDir: string): Map { + const map = new Map() + const indexFiles = readdirSync(templatesDir).filter( + (f) => + f.startsWith('index') && + f.endsWith('.json') && + !f.includes('schema') && + !f.includes('logo') + ) + // Collect template-name → tutorialUrl from all locale indexes (first wins) + const templateTutorialMap = new Map() + const sorted = ['index.json', ...indexFiles.filter((f) => f !== 'index.json')] + for (const file of sorted) { + let data: unknown + try { + data = JSON.parse(readFileSync(join(templatesDir, file), 'utf8')) + } catch { + continue + } + if (!Array.isArray(data)) continue + for (const cat of data as unknown[]) { + if (typeof cat !== 'object' || cat === null) continue + const templates = (cat as Record)['templates'] + if (!Array.isArray(templates)) continue + for (const t of templates) { + if (typeof t !== 'object' || t === null) continue + const entry = t as Record + const tutorialUrl = + typeof entry['tutorialUrl'] === 'string' + ? entry['tutorialUrl'] + : undefined + const templateName = + typeof entry['name'] === 'string' ? entry['name'] : undefined + if ( + tutorialUrl && + templateName && + !templateTutorialMap.has(templateName) + ) { + templateTutorialMap.set(templateName, tutorialUrl) + } + } + } + } + + // For each template with a tutorialUrl, open the template file and map + // every embedded model filename to that tutorialUrl + for (const [templateName, tutorialUrl] of templateTutorialMap) { + const filePath = join(templatesDir, `${templateName}.json`) + let data: unknown + try { + data = JSON.parse(readFileSync(filePath, 'utf8')) + } catch { + continue + } + + function extractModelNames(obj: unknown): void { + if (obj === null || typeof obj !== 'object') return + if (Array.isArray(obj)) { + for (const item of obj) extractModelNames(item) + return + } + const record = obj as Record + if (Array.isArray(record['models'])) { + for (const m of record['models'] as unknown[]) { + if (m === null || typeof m !== 'object' || Array.isArray(m)) continue + const model = m as Record + if (typeof model['name'] === 'string' && !map.has(model['name'])) { + map.set(model['name'], tutorialUrl) + } + } + } + for (const value of Object.values(record)) { + extractModelNames(value) + } + } + + extractModelNames(data) + } + + return map +} + +function templateThumbnailUrl( + firstTemplate: string | undefined, + templatesDir: string +): string | undefined { + if (!firstTemplate) return undefined + const base = firstTemplate.replace(/\.json$/, '') + const localPath = join(templatesDir, `${base}-1.webp`) + if (!existsSync(localPath)) return undefined + return `${WORKFLOW_TEMPLATES_BASE}/${encodeURIComponent(base)}-1.webp` +} + +function run(): void { + const models = new Map() + + const files = readdirSync(TEMPLATES_DIR).filter((f) => f.endsWith('.json')) + + for (const file of files) { + const filePath = join(TEMPLATES_DIR, file) + try { + const raw = readFileSync(filePath, 'utf8') + const data: unknown = JSON.parse(raw) + extractModels(data, file, models) + } catch (error) { + throw new Error( + `Failed to parse ${file}: ${ + error instanceof Error ? error.message : String(error) + }` + ) + } + } + + const apiModels = extractApiModels(files) + const tutorialUrlMap = buildTutorialUrlMap(TEMPLATES_DIR) + + const sorted = [...models.entries()].sort( + ([, a], [, b]) => b.templates.size - a.templates.size + ) + + // Build quant convergence map + const groups = new Map>() + for (const [name, data] of sorted) { + const base = stripExt(name) + const canonicalBase = stripQuant(base) + if (!groups.has(canonicalBase)) groups.set(canonicalBase, []) + groups.get(canonicalBase)!.push([name, data]) + } + + const canonicalMap = new Map() + for (const members of groups.values()) { + if (members.length > 1) { + const membersSorted = [...members].sort( + ([, a], [, b]) => b.templates.size - a.templates.size + ) + const canonicalName = membersSorted[0][0] + canonicalMap.set(canonicalName, null) + for (const [name] of membersSorted.slice(1)) { + canonicalMap.set(name, canonicalName) + } + } else { + canonicalMap.set(members[0][0], null) + } + } + + const output: OutputModel[] = sorted.map(([name, data]) => { + const canonicalRaw = canonicalMap.get(name) ?? null + const result: OutputModel = { + slug: makeSlug(name), + name, + huggingFaceUrl: data.url, + directory: data.directory, + workflowCount: data.templates.size, + displayName: makeDisplayName(name) + } + const docsUrl = tutorialUrlMap.get(name) + if (docsUrl) result.docsUrl = docsUrl + const thumb = templateThumbnailUrl(data.firstTemplate, TEMPLATES_DIR) + if (thumb) result.thumbnailUrl = thumb + if (canonicalRaw !== null) { + result.canonicalSlug = makeSlug(canonicalRaw) + } + return result + }) + + const apiOutput: OutputModel[] = apiModels + .sort((a, b) => b.templateCount - a.templateCount) + .map((m) => ({ + slug: m.slug, + name: m.name, + huggingFaceUrl: '', + directory: m.directory, + workflowCount: m.templateCount, + displayName: m.name + })) + + const combined = [...apiOutput, ...output] + + const withThumbs = combined.filter((m) => m.thumbnailUrl).length + process.stdout.write( + ` ${withThumbs}/${combined.length} models have thumbnails\n` + ) + + const defaultOut = join( + fileURLToPath(new URL('.', import.meta.url)), + '../src/config/generated-models.json' + ) + const outputArg = process.argv[2] ?? defaultOut + const json = JSON.stringify(combined, null, 2) + '\n' + + writeFileSync(outputArg, json, 'utf8') + process.stdout.write( + `Written ${combined.length} models ` + + `(${apiOutput.length} partner, ${output.length} local) to ${outputArg}\n` + ) +} + +try { + run() +} catch (err) { + process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n`) + process.exit(1) +} diff --git a/apps/website/src/components/models/ModelHeroSection.vue b/apps/website/src/components/models/ModelHeroSection.vue new file mode 100644 index 00000000000..4ef460d1901 --- /dev/null +++ b/apps/website/src/components/models/ModelHeroSection.vue @@ -0,0 +1,137 @@ + + + diff --git a/apps/website/src/config/generated-models.json b/apps/website/src/config/generated-models.json new file mode 100644 index 00000000000..7bcf654a75a --- /dev/null +++ b/apps/website/src/config/generated-models.json @@ -0,0 +1,1945 @@ +[ + { + "slug": "kling-ai", + "name": "Kling AI", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 11, + "displayName": "Kling AI" + }, + { + "slug": "openai-dall-e", + "name": "OpenAI DALL-E", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 10, + "displayName": "OpenAI DALL-E" + }, + { + "slug": "vidu", + "name": "Vidu", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 8, + "displayName": "Vidu" + }, + { + "slug": "seedance-bytedance", + "name": "Seedance (ByteDance)", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 7, + "displayName": "Seedance (ByteDance)" + }, + { + "slug": "stability-ai", + "name": "Stability AI", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 7, + "displayName": "Stability AI" + }, + { + "slug": "wan-api", + "name": "Wan (API)", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 6, + "displayName": "Wan (API)" + }, + { + "slug": "flux-api", + "name": "Flux (API)", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 5, + "displayName": "Flux (API)" + }, + { + "slug": "runway", + "name": "Runway", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 5, + "displayName": "Runway" + }, + { + "slug": "tripo-3d", + "name": "Tripo 3D", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 5, + "displayName": "Tripo 3D" + }, + { + "slug": "grok-image", + "name": "Grok Image", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 4, + "displayName": "Grok Image" + }, + { + "slug": "luma-dream-machine", + "name": "Luma Dream Machine", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 4, + "displayName": "Luma Dream Machine" + }, + { + "slug": "moonvalley", + "name": "Moonvalley", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 4, + "displayName": "Moonvalley" + }, + { + "slug": "hailuo-minimax", + "name": "Hailuo MiniMax", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 3, + "displayName": "Hailuo MiniMax" + }, + { + "slug": "magnific-ai", + "name": "Magnific AI", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 3, + "displayName": "Magnific AI" + }, + { + "slug": "meshy-ai", + "name": "Meshy AI", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 3, + "displayName": "Meshy AI" + }, + { + "slug": "pixverse", + "name": "Pixverse", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 3, + "displayName": "Pixverse" + }, + { + "slug": "recraft", + "name": "Recraft", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 3, + "displayName": "Recraft" + }, + { + "slug": "rodin-3d", + "name": "Rodin 3D", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 3, + "displayName": "Rodin 3D" + }, + { + "slug": "bria-ai", + "name": "Bria AI", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 2, + "displayName": "Bria AI" + }, + { + "slug": "gemini-image", + "name": "Gemini Image", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 2, + "displayName": "Gemini Image" + }, + { + "slug": "hunyuan-3d", + "name": "Hunyuan 3D", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 2, + "displayName": "Hunyuan 3D" + }, + { + "slug": "ltxv-api", + "name": "LTX Video (API)", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 2, + "displayName": "LTX Video (API)" + }, + { + "slug": "topaz-labs", + "name": "Topaz Labs", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 2, + "displayName": "Topaz Labs" + }, + { + "slug": "wavespeed", + "name": "Wavespeed", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 2, + "displayName": "Wavespeed" + }, + { + "slug": "ideogram", + "name": "Ideogram", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 1, + "displayName": "Ideogram" + }, + { + "slug": "nano-banana", + "name": "Nano Banana", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 1, + "displayName": "Nano Banana" + }, + { + "slug": "veo-2", + "name": "Veo 2", + "huggingFaceUrl": "", + "directory": "partner_nodes", + "workflowCount": 1, + "displayName": "Veo 2" + }, + { + "slug": "umt5-xxl-fp8-e4m3fn-scaled", + "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "directory": "text_encoders", + "workflowCount": 34, + "displayName": "Umt5 Xxl FP8 e4m3fn scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/03_video_wan2_2_14B_i2v_subgraphed-1.webp" + }, + { + "slug": "wan-2-1-vae", + "name": "wan_2.1_vae.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors", + "directory": "vae", + "workflowCount": 29, + "displayName": "Wan 2.1 Vae", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/03_video_wan2_2_14B_i2v_subgraphed-1.webp" + }, + { + "slug": "ae", + "name": "ae.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors", + "directory": "vae", + "workflowCount": 26, + "displayName": "Ae", + "docsUrl": "https://docs.comfy.org/tutorials/image/z-image/z-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/01_get_started_text_to_image-1.webp" + }, + { + "slug": "qwen-2-5-vl-7b-fp8-scaled", + "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", + "directory": "text_encoders", + "workflowCount": 25, + "displayName": "Qwen 2.5 Vl 7b FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/02_qwen_Image_edit_subgraphed-1.webp" + }, + { + "slug": "qwen-image-vae", + "name": "qwen_image_vae.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors", + "directory": "vae", + "workflowCount": 19, + "displayName": "Qwen Image Vae", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/02_qwen_Image_edit_subgraphed-1.webp" + }, + { + "slug": "clip-l", + "name": "clip_l.safetensors", + "huggingFaceUrl": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors", + "directory": "text_encoders", + "workflowCount": 14, + "displayName": "Clip L", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-fill-dev", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_krea_dev-1.webp" + }, + { + "slug": "t5xxl-fp16", + "name": "t5xxl_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensors", + "directory": "text_encoders", + "workflowCount": 12, + "displayName": "T5xxl FP16", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-fill-dev", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_krea_dev-1.webp" + }, + { + "slug": "clip-vision-h", + "name": "clip_vision_h.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/clip_vision/clip_vision_h.safetensors", + "directory": "clip_vision", + "workflowCount": 12, + "displayName": "Clip Vision H", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-animate", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_chrono_edit_14B-1.webp" + }, + { + "slug": "flux2-vae", + "name": "flux2-vae.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors", + "directory": "vae", + "workflowCount": 9, + "displayName": "Flux2 Vae", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-2-klein", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2-1.webp" + }, + { + "slug": "qwen-3-4b", + "name": "qwen_3_4b.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors", + "directory": "text_encoders", + "workflowCount": 8, + "displayName": "Qwen 3 4b", + "docsUrl": "https://docs.comfy.org/tutorials/image/z-image/z-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/01_get_started_text_to_image-1.webp" + }, + { + "slug": "qwen-image-edit-2509-fp8-e4m3fn", + "name": "qwen_image_edit_2509_fp8_e4m3fn.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_2509_fp8_e4m3fn.safetensors", + "directory": "diffusion_models", + "workflowCount": 8, + "displayName": "Qwen Image Edit 2509 FP8 e4m3fn", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/02_qwen_Image_edit_subgraphed-1.webp" + }, + { + "slug": "t5xxl-fp8-e4m3fn-scaled", + "name": "t5xxl_fp8_e4m3fn_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn_scaled.safetensors", + "directory": "text_encoders", + "workflowCount": 8, + "displayName": "T5xxl FP8 e4m3fn scaled", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-kontext-dev", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_kontext_dev_basic-1.webp", + "canonicalSlug": "t5xxl-fp16" + }, + { + "slug": "wan2-2-i2v-lightx2v-4steps-lora-v1-high-noise", + "name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors", + "directory": "loras", + "workflowCount": 7, + "displayName": "Wan2.2 I2v Lightx2v 4steps Lora V1 High Noise", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/03_video_wan2_2_14B_i2v_subgraphed-1.webp" + }, + { + "slug": "wan2-2-i2v-lightx2v-4steps-lora-v1-low-noise", + "name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors", + "directory": "loras", + "workflowCount": 7, + "displayName": "Wan2.2 I2v Lightx2v 4steps Lora V1 Low Noise", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/03_video_wan2_2_14B_i2v_subgraphed-1.webp" + }, + { + "slug": "gemma-3-12b-it-fp4-mixed", + "name": "gemma_3_12B_it_fp4_mixed.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/ltx-2/resolve/main/split_files/text_encoders/gemma_3_12B_it_fp4_mixed.safetensors", + "directory": "text_encoders", + "workflowCount": 7, + "displayName": "Gemma 3 12B It FP4 mixed", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_canny_to_video-1.webp" + }, + { + "slug": "ltx-2-spatial-upscaler-x2-1-0", + "name": "ltx-2-spatial-upscaler-x2-1.0.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-spatial-upscaler-x2-1.0.safetensors", + "directory": "latent_upscale_models", + "workflowCount": 7, + "displayName": "Ltx 2 Spatial Upscaler X2 1.0", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_canny_to_video-1.webp" + }, + { + "slug": "qwen-image-edit-2509-lightning-4steps-v1-0-bf16", + "name": "Qwen-Image-Edit-2509-Lightning-4steps-V1.0-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-2509/Qwen-Image-Edit-2509-Lightning-4steps-V1.0-bf16.safetensors", + "directory": "loras", + "workflowCount": 6, + "displayName": "Qwen Image Edit 2509 Lightning 4steps V1.0 BF16", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/02_qwen_Image_edit_subgraphed-1.webp" + }, + { + "slug": "wan2-1-vace-1-3b-fp16", + "name": "wan2.1_vace_1.3B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_vace_1.3B_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 6, + "displayName": "Wan2.1 Vace 1.3B FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/vace", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan_vace_14B_ref2v-1.webp" + }, + { + "slug": "wan21-causvid-bidirect2-t2v-1-3b-lora-rank32", + "name": "Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan21_CausVid_bidirect2_T2V_1_3B_lora_rank32.safetensors", + "directory": "loras", + "workflowCount": 6, + "displayName": "Wan21 CausVid Bidirect2 T2V 1 3B Lora Rank32", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/vace", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan_vace_14B_ref2v-1.webp" + }, + { + "slug": "umt5-xxl-fp16", + "name": "umt5_xxl_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp16.safetensors", + "directory": "text_encoders", + "workflowCount": 6, + "displayName": "Umt5 Xxl FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/vace", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan_vace_14B_ref2v-1.webp", + "canonicalSlug": "umt5-xxl-fp8-e4m3fn-scaled" + }, + { + "slug": "wan2-1-vace-14b-fp16", + "name": "wan2.1_vace_14B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_vace_14B_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 6, + "displayName": "Wan2.1 Vace 14B FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/vace", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan_vace_14B_ref2v-1.webp" + }, + { + "slug": "wan21-causvid-14b-t2v-lora-rank32", + "name": "Wan21_CausVid_14B_T2V_lora_rank32.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan21_CausVid_14B_T2V_lora_rank32.safetensors", + "directory": "loras", + "workflowCount": 6, + "displayName": "Wan21 CausVid 14B T2V Lora Rank32", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/vace", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan_vace_14B_ref2v-1.webp" + }, + { + "slug": "wan2-2-i2v-high-noise-14b-fp8-scaled", + "name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 5, + "displayName": "Wan2.2 I2v High Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/03_video_wan2_2_14B_i2v_subgraphed-1.webp" + }, + { + "slug": "wan2-2-i2v-low-noise-14b-fp8-scaled", + "name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 5, + "displayName": "Wan2.2 I2v Low Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/03_video_wan2_2_14B_i2v_subgraphed-1.webp" + }, + { + "slug": "vae-ft-mse-840000-ema-pruned", + "name": "vae-ft-mse-840000-ema-pruned.safetensors", + "huggingFaceUrl": "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors", + "directory": "vae", + "workflowCount": 5, + "displayName": "Vae Ft Mse 840000 Ema Pruned", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_depth_lora_example-1.webp" + }, + { + "slug": "lotus-depth-d-v1-1", + "name": "lotus-depth-d-v1-1.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/lotus/resolve/main/lotus-depth-d-v1-1.safetensors", + "directory": "diffusion_models", + "workflowCount": 5, + "displayName": "Lotus Depth D V1 1", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_depth_lora_example-1.webp" + }, + { + "slug": "clip-g-hidream", + "name": "clip_g_hidream.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/text_encoders/clip_g_hidream.safetensors", + "directory": "text_encoders", + "workflowCount": 5, + "displayName": "Clip G Hidream", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-i1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_e1_1-1.webp" + }, + { + "slug": "clip-l-hidream", + "name": "clip_l_hidream.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/text_encoders/clip_l_hidream.safetensors", + "directory": "text_encoders", + "workflowCount": 5, + "displayName": "Clip L Hidream", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-i1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_e1_1-1.webp" + }, + { + "slug": "llama-3-1-8b-instruct-fp8-scaled", + "name": "llama_3.1_8b_instruct_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/text_encoders/llama_3.1_8b_instruct_fp8_scaled.safetensors", + "directory": "text_encoders", + "workflowCount": 5, + "displayName": "Llama 3.1 8b Instruct FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-i1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_e1_1-1.webp" + }, + { + "slug": "qwen-image-lightning-4steps-v1-0", + "name": "Qwen-Image-Lightning-4steps-V1.0.safetensors", + "huggingFaceUrl": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V1.0.safetensors", + "directory": "loras", + "workflowCount": 5, + "displayName": "Qwen Image Lightning 4steps V1.0", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_Image_2512-1.webp" + }, + { + "slug": "qwen-image-fp8-e4m3fn", + "name": "qwen_image_fp8_e4m3fn.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_fp8_e4m3fn.safetensors", + "directory": "diffusion_models", + "workflowCount": 5, + "displayName": "Qwen Image FP8 e4m3fn", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image-1.webp" + }, + { + "slug": "lightx2v-i2v-14b-480p-cfg-step-distill-rank64-bf16", + "name": "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors", + "directory": "loras", + "workflowCount": 5, + "displayName": "Lightx2v I2V 14B 480p Cfg Step Distill Rank64 BF16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-animate", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_humo-1.webp" + }, + { + "slug": "ltx-2-19b-dev-fp8", + "name": "ltx-2-19b-dev-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-dev-fp8.safetensors", + "directory": "checkpoints", + "workflowCount": 5, + "displayName": "Ltx 2 19b Dev FP8", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_canny_to_video-1.webp" + }, + { + "slug": "ltx-2-19b-distilled-lora-384", + "name": "ltx-2-19b-distilled-lora-384.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-distilled-lora-384.safetensors", + "directory": "loras", + "workflowCount": 5, + "displayName": "Ltx 2 19b Distilled Lora 384", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_canny_to_video-1.webp" + }, + { + "slug": "ltx-2-19b-distilled", + "name": "ltx-2-19b-distilled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-distilled.safetensors", + "directory": "checkpoints", + "workflowCount": 5, + "displayName": "Ltx 2 19b Distilled", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_canny_to_video-1.webp" + }, + { + "slug": "z-image-turbo-bf16", + "name": "z_image_turbo_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 4, + "displayName": "Z Image Turbo BF16", + "docsUrl": "https://docs.comfy.org/tutorials/image/z-image/z-image-turbo", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/01_get_started_text_to_image-1.webp" + }, + { + "slug": "ace-step-v1-3-5b", + "name": "ace_step_v1_3.5b.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/resolve/main/all_in_one/ace_step_v1_3.5b.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 4, + "displayName": "Ace Step V1 3.5b", + "docsUrl": "https://docs.comfy.org/tutorials/audio/ace-step/ace-step-v1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/05_audio_ace_step_1_t2a_song_subgraphed-1.webp" + }, + { + "slug": "sd3-5-large-fp8-scaled", + "name": "sd3.5_large_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-fp8/resolve/main/sd3.5_large_fp8_scaled.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 4, + "displayName": "Sd3.5 Large FP8 scaled", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sd3/#sd35-controlnets", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sd3.5_large_blur-1.webp" + }, + { + "slug": "sd-xl-base-1-0", + "name": "sd_xl_base_1.0.safetensors", + "huggingFaceUrl": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 4, + "displayName": "Sd Xl Base 1.0", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sdxl/", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sdxl_refiner_prompt_example-1.webp" + }, + { + "slug": "ltx-2-19b-lora-camera-control-dolly-left", + "name": "ltx-2-19b-lora-camera-control-dolly-left.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Left/resolve/main/ltx-2-19b-lora-camera-control-dolly-left.safetensors", + "directory": "loras", + "workflowCount": 4, + "displayName": "Ltx 2 19b Lora Camera Control Dolly Left", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_i2v-1.webp" + }, + { + "slug": "sigclip-vision-patch14-384", + "name": "sigclip_vision_patch14_384.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors", + "directory": "clip_vision", + "workflowCount": 3, + "displayName": "Sigclip Vision Patch14 384", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-uso", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_dev_uso_reference_image_gen-1.webp" + }, + { + "slug": "flux1-dev", + "name": "flux1-dev.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev.safetensors", + "directory": "diffusion_models", + "workflowCount": 3, + "displayName": "Flux1 Dev", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-text-to-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_dev_checkpoint_example-1.webp" + }, + { + "slug": "hunyuan-video-vae-bf16", + "name": "hunyuan_video_vae_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/vae/hunyuan_video_vae_bf16.safetensors?download=true", + "directory": "vae", + "workflowCount": 3, + "displayName": "Hunyuan Video Vae BF16", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/hunyuan_video/", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hunyuan_video_text_to_video-1.webp" + }, + { + "slug": "qwen-image-edit-2511-bf16", + "name": "qwen_image_edit_2511_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_2511_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 3, + "displayName": "Qwen Image Edit 2511 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image-qwen_image_edit_2511-lora-inflation-1.webp" + }, + { + "slug": "flux2-dev-fp8mixed", + "name": "flux2_dev_fp8mixed.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/diffusion_models/flux2_dev_fp8mixed.safetensors", + "directory": "diffusion_models", + "workflowCount": 3, + "displayName": "Flux2 Dev fp8mixed", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2-1.webp" + }, + { + "slug": "qwen-3-8b-fp8mixed", + "name": "qwen_3_8b_fp8mixed.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-klein-9B/resolve/main/split_files/text_encoders/qwen_3_8b_fp8mixed.safetensors", + "directory": "text_encoders", + "workflowCount": 3, + "displayName": "Qwen 3 8b fp8mixed", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-2-klein", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_image_edit_9b_base-1.webp" + }, + { + "slug": "wan2-2-vae", + "name": "wan2.2_vae.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan2.2_vae.safetensors", + "directory": "vae", + "workflowCount": 3, + "displayName": "Wan2.2 Vae", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_5B_fun_control-1.webp" + }, + { + "slug": "hunyuan-3d-v2-1", + "name": "hunyuan_3d_v2.1.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/hunyuan3D_2.1_repackaged/resolve/main/hunyuan_3d_v2.1.safetensors", + "directory": "checkpoints", + "workflowCount": 2, + "displayName": "Hunyuan 3d V2.1", + "docsUrl": "https://docs.comfy.org/tutorials/3d/hunyuan3D-2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/04_hunyuan_3d_2.1_subgraphed-1.webp" + }, + { + "slug": "flux1-dev-fp8", + "name": "flux1-dev-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors", + "directory": "checkpoints", + "workflowCount": 2, + "displayName": "Flux1 Dev FP8", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-uso", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_dev_uso_reference_image_gen-1.webp" + }, + { + "slug": "flux1-fill-dev", + "name": "flux1-fill-dev.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/split_files/diffusion_models/flux1-fill-dev.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Flux1 Fill Dev", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-fill-dev", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_fill_inpaint_example-1.webp" + }, + { + "slug": "mistral-3-small-flux2-bf16", + "name": "mistral_3_small_flux2_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/text_encoders/mistral_3_small_flux2_bf16.safetensors", + "directory": "text_encoders", + "workflowCount": 2, + "displayName": "Mistral 3 Small Flux2 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2-1.webp" + }, + { + "slug": "flux-2-klein-base-9b-fp8", + "name": "flux-2-klein-base-9b-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/black-forest-labs/FLUX.2-klein-base-9b-fp8/resolve/main/flux-2-klein-base-9b-fp8.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Flux 2 Klein Base 9b FP8", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-2-klein", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_image_edit_9b_base-1.webp" + }, + { + "slug": "flux-2-klein-9b-fp8", + "name": "flux-2-klein-9b-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/black-forest-labs/FLUX.2-klein-9b-fp8/resolve/main/flux-2-klein-9b-fp8.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Flux 2 Klein 9b FP8", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_image_edit_9b_distilled-1.webp" + }, + { + "slug": "qwen-2-5-vl-fp16", + "name": "qwen_2.5_vl_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_fp16.safetensors", + "directory": "text_encoders", + "workflowCount": 2, + "displayName": "Qwen 2.5 Vl FP16", + "docsUrl": "https://docs.comfy.org/tutorials/image/omnigen/omnigen2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_omnigen2_image_edit-1.webp" + }, + { + "slug": "omnigen2-fp16", + "name": "omnigen2_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/omnigen2_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Omnigen2 FP16", + "docsUrl": "https://docs.comfy.org/tutorials/image/omnigen/omnigen2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_omnigen2_image_edit-1.webp" + }, + { + "slug": "qwen-image-2512-fp8-e4m3fn", + "name": "qwen_image_2512_fp8_e4m3fn.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_2512_fp8_e4m3fn.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Qwen Image 2512 FP8 e4m3fn", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_Image_2512-1.webp" + }, + { + "slug": "qwen-image-edit-2511-lightning-4steps-v1-0-bf16", + "name": "Qwen-Image-Edit-2511-Lightning-4steps-V1.0-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/lightx2v/Qwen-Image-Edit-2511-Lightning/resolve/main/Qwen-Image-Edit-2511-Lightning-4steps-V1.0-bf16.safetensors", + "directory": "loras", + "workflowCount": 2, + "displayName": "Qwen Image Edit 2511 Lightning 4steps V1.0 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_edit_2511-1.webp" + }, + { + "slug": "qwen-image-layered-vae", + "name": "qwen_image_layered_vae.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Layered_ComfyUI/resolve/main/split_files/vae/qwen_image_layered_vae.safetensors", + "directory": "vae", + "workflowCount": 2, + "displayName": "Qwen Image Layered Vae", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_layered-1.webp" + }, + { + "slug": "sd-xl-refiner-1-0", + "name": "sd_xl_refiner_1.0.safetensors", + "huggingFaceUrl": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 2, + "displayName": "Sd Xl Refiner 1.0", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sdxl/", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sdxl_refiner_prompt_example-1.webp" + }, + { + "slug": "wan2-1-vae-bf16", + "name": "Wan2_1_VAE_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1_VAE_bf16.safetensors", + "directory": "vae", + "workflowCount": 2, + "displayName": "Wan2 1 VAE BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/template-Animation_Trajectory_Control_Wan_ATI-1.webp" + }, + { + "slug": "wan2-1-i2v-ati-14b-fp8-e4m3fn", + "name": "Wan2_1-I2V-ATI-14B_fp8_e4m3fn.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan2_1-I2V-ATI-14B_fp8_e4m3fn.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Wan2 1 I2V ATI 14B FP8 e4m3fn", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan-ati", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/template-Animation_Trajectory_Control_Wan_ATI-1.webp" + }, + { + "slug": "qwen-edit-2509-multiple-angles", + "name": "Qwen-Edit-2509-Multiple-angles.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/loras/Qwen-Edit-2509-Multiple-angles.safetensors", + "directory": "loras", + "workflowCount": 2, + "displayName": "Qwen Edit 2509 Multiple Angles", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/templates-1_click_multiple_character_angles-v1.0-1.webp" + }, + { + "slug": "qwen-image-edit-2509-lightning-8steps-v1-0-bf16", + "name": "Qwen-Image-Edit-2509-Lightning-8steps-V1.0-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-2509/Qwen-Image-Edit-2509-Lightning-8steps-V1.0-bf16.safetensors", + "directory": "loras", + "workflowCount": 2, + "displayName": "Qwen Image Edit 2509 Lightning 8steps V1.0 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/templates-image_to_real-1.webp" + }, + { + "slug": "byt5-small-glyphxl-fp16", + "name": "byt5_small_glyphxl_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/text_encoders/byt5_small_glyphxl_fp16.safetensors", + "directory": "text_encoders", + "workflowCount": 2, + "displayName": "Byt5 Small Glyphxl FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_hunyuan_video_1.5_720p_i2v-1.webp" + }, + { + "slug": "hunyuanvideo15-latent-upsampler-1080p", + "name": "hunyuanvideo15_latent_upsampler_1080p.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/latent_upscale_models/hunyuanvideo15_latent_upsampler_1080p.safetensors", + "directory": "latent_upscale_models", + "workflowCount": 2, + "displayName": "Hunyuanvideo15 Latent Upsampler 1080p", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_hunyuan_video_1.5_720p_i2v-1.webp" + }, + { + "slug": "hunyuanvideo1-5-1080p-sr-distilled-fp16", + "name": "hunyuanvideo1.5_1080p_sr_distilled_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/diffusion_models/hunyuanvideo1.5_1080p_sr_distilled_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Hunyuanvideo1.5 1080p Sr Distilled FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_hunyuan_video_1.5_720p_i2v-1.webp" + }, + { + "slug": "hunyuanvideo15-vae-fp16", + "name": "hunyuanvideo15_vae_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/vae/hunyuanvideo15_vae_fp16.safetensors", + "directory": "vae", + "workflowCount": 2, + "displayName": "Hunyuanvideo15 Vae FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_hunyuan_video_1.5_720p_i2v-1.webp" + }, + { + "slug": "wan2-2-t2v-lightx2v-4steps-lora-v1-1-high-noise", + "name": "wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors", + "directory": "loras", + "workflowCount": 2, + "displayName": "Wan2.2 T2v Lightx2v 4steps Lora V1.1 High Noise", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_s2v-1.webp" + }, + { + "slug": "wan21-wanmove-fp8-scaled-e4m3fn-kj", + "name": "Wan21-WanMove_fp8_scaled_e4m3fn_KJ.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy_fp8_scaled/resolve/main/WanMove/Wan21-WanMove_fp8_scaled_e4m3fn_KJ.safetensors", + "directory": "diffusion_models", + "workflowCount": 2, + "displayName": "Wan21 WanMove FP8 scaled e4m3fn KJ", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wanmove_480p-1.webp" + }, + { + "slug": "hunyuan3d-dit-v2-fp16", + "name": "hunyuan3d-dit-v2_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/hunyuan3D_2.0_repackaged/resolve/main/split_files/hunyuan3d-dit-v2_fp16.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Hunyuan3d Dit V2 FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/3d_hunyuan3d_image_to_model-1.webp" + }, + { + "slug": "hunyuan3d-dit-v2-mv-fp16", + "name": "hunyuan3d-dit-v2-mv_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/hunyuan3D_2.0_repackaged/resolve/main/split_files/hunyuan3d-dit-v2-mv_fp16.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Hunyuan3d Dit V2 Mv FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/3d_hunyuan3d_multiview_to_model-1.webp" + }, + { + "slug": "hunyuan3d-dit-v2-mv-turbo-fp16", + "name": "hunyuan3d-dit-v2-mv-turbo_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/hunyuan3D_2.0_repackaged/resolve/main/split_files/hunyuan3d-dit-v2-mv-turbo_fp16.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Hunyuan3d Dit V2 Mv Turbo FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/3d_hunyuan3d_multiview_to_model_turbo-1.webp" + }, + { + "slug": "stable-audio-open-1-0", + "name": "stable-audio-open-1.0.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/stable-audio-open-1.0_repackaged/resolve/main/stable-audio-open-1.0.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Stable Audio Open 1.0", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/audio/" + }, + { + "slug": "t5-base", + "name": "t5-base.safetensors", + "huggingFaceUrl": "https://huggingface.co/ComfyUI-Wiki/t5-base/resolve/main/t5-base.safetensors", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "T5 Base", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/audio/" + }, + { + "slug": "v1-5-pruned-emaonly-fp16", + "name": "v1-5-pruned-emaonly-fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/resolve/main/v1-5-pruned-emaonly-fp16.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "V1 5 Pruned Emaonly FP16", + "docsUrl": "https://docs.comfy.org/tutorials/basic/text-to-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/default-1.webp" + }, + { + "slug": "uso-flux1-projector-v1", + "name": "uso-flux1-projector-v1.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/USO_1.0_Repackaged/resolve/main/split_files/model_patches/uso-flux1-projector-v1.safetensors", + "directory": "model_patches", + "workflowCount": 1, + "displayName": "Uso Flux1 Projector V1", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-uso", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_dev_uso_reference_image_gen-1.webp" + }, + { + "slug": "uso-flux1-dit-lora-v1", + "name": "uso-flux1-dit-lora-v1.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/USO_1.0_Repackaged/resolve/main/split_files/loras/uso-flux1-dit-lora-v1.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Uso Flux1 Dit Lora V1", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-uso", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_dev_uso_reference_image_gen-1.webp" + }, + { + "slug": "flux1-krea-dev-fp8-scaled", + "name": "flux1-krea-dev_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/FLUX.1-Krea-dev_ComfyUI/resolve/main/split_files/diffusion_models/flux1-krea-dev_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux1 Krea Dev FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux1-krea-dev", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux1_krea_dev-1.webp" + }, + { + "slug": "flux1-canny-dev", + "name": "flux1-canny-dev.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/split_files/diffusion_models/flux1-canny-dev.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux1 Canny Dev", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-controlnet", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_canny_model_example-1.webp" + }, + { + "slug": "flux1-depth-dev-lora", + "name": "flux1-depth-dev-lora.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/split_files/loras/flux1-depth-dev-lora.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Flux1 Depth Dev Lora", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-controlnet", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_depth_lora_example-1.webp" + }, + { + "slug": "flux1-dev-kontext-fp8-scaled", + "name": "flux1-dev-kontext_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-kontext-dev_ComfyUI/resolve/main/split_files/diffusion_models/flux1-dev-kontext_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux1 Dev Kontext FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-kontext-dev", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_kontext_dev_basic-1.webp" + }, + { + "slug": "flux1-redux-dev", + "name": "flux1-redux-dev.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Flux1-Redux-Dev/resolve/main/flux1-redux-dev.safetensors", + "directory": "style_models", + "workflowCount": 1, + "displayName": "Flux1 Redux Dev", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-controlnet", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_redux_model_example-1.webp" + }, + { + "slug": "flux1-schnell-fp8", + "name": "flux1-schnell-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-schnell/resolve/main/flux1-schnell-fp8.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Flux1 Schnell FP8", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-text-to-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_schnell-1.webp" + }, + { + "slug": "flux1-schnell", + "name": "flux1-schnell.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux1-schnell/resolve/main/flux1-schnell.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux1 Schnell", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-1-text-to-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/flux_schnell_full_text_to_image-1.webp" + }, + { + "slug": "hidream-e1-1-bf16", + "name": "hidream_e1_1_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/diffusion_models/hidream_e1_1_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hidream E1 1 BF16", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-e1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_e1_1-1.webp" + }, + { + "slug": "hidream-e1-full-bf16", + "name": "hidream_e1_full_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/diffusion_models/hidream_e1_full_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hidream E1 Full BF16", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-e1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_e1_full-1.webp" + }, + { + "slug": "hidream-i1-dev-fp8", + "name": "hidream_i1_dev_fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/diffusion_models/hidream_i1_dev_fp8.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hidream I1 Dev FP8", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-i1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_i1_dev-1.webp" + }, + { + "slug": "hidream-i1-fast-fp8", + "name": "hidream_i1_fast_fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/diffusion_models/hidream_i1_fast_fp8.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hidream I1 Fast FP8", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-i1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_i1_fast-1.webp" + }, + { + "slug": "hidream-i1-full-fp8", + "name": "hidream_i1_full_fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HiDream-I1_ComfyUI/resolve/main/split_files/diffusion_models/hidream_i1_full_fp8.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hidream I1 Full FP8", + "docsUrl": "https://docs.comfy.org/tutorials/image/hidream/hidream-i1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hidream_i1_full-1.webp" + }, + { + "slug": "llava-llama3-fp8-scaled", + "name": "llava_llama3_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp8_scaled.safetensors?download=true", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "Llava Llama3 FP8 scaled", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/hunyuan_video/", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hunyuan_video_text_to_video-1.webp" + }, + { + "slug": "hunyuan-video-t2v-720p-bf16", + "name": "hunyuan_video_t2v_720p_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/diffusion_models/hunyuan_video_t2v_720p_bf16.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hunyuan Video T2v 720p BF16", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/hunyuan_video/", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/hunyuan_video_text_to_video-1.webp" + }, + { + "slug": "qwen-image-edit-2511-systms-infl8", + "name": "Qwen_Image_Edit_2511-SYSTMS_INFL8.safetensors", + "huggingFaceUrl": "https://huggingface.co/systms/SYSTMS-INFL8-LoRA-Qwen-Image-Edit-2511/resolve/main/SYSTMS_INFL8_LoRA_Qwen_Image_Edit_2511.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Edit 2511 SYSTMS INFL8", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image-qwen_image_edit_2511-lora-inflation-1.webp" + }, + { + "slug": "chroma-radiance-x0", + "name": "chroma-radiance-x0.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Chroma1-Radiance_Repackaged/resolve/main/split_files/diffusion_models/chroma-radiance-x0.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Chroma Radiance X0", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_chroma1_radiance_text_to_image-1.webp" + }, + { + "slug": "chroma1-hd-fp8mixed", + "name": "Chroma1-HD-fp8mixed.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Chroma1-HD_repackaged/resolve/main/split_files/diffusion_models/Chroma1-HD-fp8mixed.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Chroma1 HD fp8mixed", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_chroma_text_to_image-1.webp" + }, + { + "slug": "chronoedit-distill-lora", + "name": "chronoedit_distill_lora.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/chronoedit_distill_lora.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Chronoedit Distill Lora", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_chrono_edit_14B-1.webp" + }, + { + "slug": "chrono-edit-14b-fp16", + "name": "chrono_edit_14B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/chrono_edit_14B_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Chrono Edit 14B FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_chrono_edit_14B-1.webp" + }, + { + "slug": "flux-1-fill-dev-onereward-transformer-fp8", + "name": "flux.1-fill-dev-OneReward-transformer_fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/OneReward_repackaged/resolve/main/split_files/diffusion_models/flux.1-fill-dev-OneReward-transformer_fp8.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux.1 Fill Dev OneReward Transformer FP8", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux.1_fill_dev_OneReward-1.webp" + }, + { + "slug": "removal-timestep-alpha-2-1740", + "name": "removal_timestep_alpha-2-1740.safetensors", + "huggingFaceUrl": "https://huggingface.co/lrzjason/ObjectRemovalFluxFill/resolve/main/removal_timestep_alpha-2-1740.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Removal Timestep Alpha 2 1740", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux.1_fill_dev_OneReward-1.webp" + }, + { + "slug": "flux-2-turbo-lora-comfyui", + "name": "Flux_2-Turbo-LoRA_comfyui.safetensors", + "huggingFaceUrl": "https://huggingface.co/ByteZSzn/Flux.2-Turbo-ComfyUI/resolve/main/Flux_2-Turbo-LoRA_comfyui.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Flux 2 Turbo LoRA Comfyui", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2-1.webp" + }, + { + "slug": "mistral-3-small-flux2-fp8", + "name": "mistral_3_small_flux2_fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/text_encoders/mistral_3_small_flux2_fp8.safetensors", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "Mistral 3 Small Flux2 FP8", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_fp8-1.webp", + "canonicalSlug": "mistral-3-small-flux2-bf16" + }, + { + "slug": "flux2turbocomfyv2", + "name": "Flux2TurboComfyv2.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/loras/Flux2TurboComfyv2.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Flux2TurboComfyv2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_fp8-1.webp" + }, + { + "slug": "flux-2-klein-base-4b-fp8", + "name": "flux-2-klein-base-4b-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/black-forest-labs/FLUX.2-klein-base-4b-fp8/resolve/main/flux-2-klein-base-4b-fp8.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux 2 Klein Base 4b FP8", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-2-klein", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_image_edit_4b_base-1.webp" + }, + { + "slug": "flux-2-klein-4b-fp8", + "name": "flux-2-klein-4b-fp8.safetensors", + "huggingFaceUrl": "https://huggingface.co/black-forest-labs/FLUX.2-klein-4b-fp8/resolve/main/flux-2-klein-4b-fp8.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux 2 Klein 4b FP8", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_image_edit_4b_distilled-1.webp" + }, + { + "slug": "flux-2-klein-base-4b", + "name": "flux-2-klein-base-4b.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-klein/resolve/main/split_files/diffusion_models/flux-2-klein-base-4b.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux 2 Klein Base 4b", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-2-klein", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_text_to_image-1.webp" + }, + { + "slug": "flux-2-klein-4b", + "name": "flux-2-klein-4b.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/flux2-klein/resolve/main/split_files/diffusion_models/flux-2-klein-4b.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Flux 2 Klein 4b", + "docsUrl": "https://docs.comfy.org/tutorials/flux/flux-2-klein", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_flux2_klein_text_to_image-1.webp" + }, + { + "slug": "netayumev35-pretrained-all-in-one", + "name": "NetaYumev35_pretrained_all_in_one.safetensors", + "huggingFaceUrl": "https://huggingface.co/duongve/NetaYume-Lumina-Image-2.0/resolve/main/NetaYumev35_pretrained_all_in_one.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "NetaYumev35 Pretrained All In One", + "docsUrl": "https://docs.comfy.org/tutorials/image/newbie-image/newbie-image-exp-0-1", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_netayume_lumina_t2i-1.webp" + }, + { + "slug": "newbie-image-exp0-1-bf16", + "name": "NewBie-Image-Exp0.1-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/NewBie-image-Exp0.1_repackaged/resolve/main/split_files/diffusion_models/NewBie-Image-Exp0.1-bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "NewBie Image Exp0.1 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_newbieimage_exp0_1-t2i-1.webp" + }, + { + "slug": "gemma-3-4b-it-bf16", + "name": "gemma_3_4b_it_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/NewBie-image-Exp0.1_repackaged/resolve/main/split_files/text_encoders/gemma_3_4b_it_bf16.safetensors", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "Gemma 3 4b It BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_newbieimage_exp0_1-t2i-1.webp" + }, + { + "slug": "jina-clip-v2-bf16", + "name": "jina_clip_v2_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/NewBie-image-Exp0.1_repackaged/resolve/main/split_files/text_encoders/jina_clip_v2_bf16.safetensors", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "Jina Clip V2 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_newbieimage_exp0_1-t2i-1.webp" + }, + { + "slug": "ovis-image-bf16", + "name": "ovis_image_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Ovis-Image/resolve/main/split_files/diffusion_models/ovis_image_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Ovis Image BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_ovis_text_to_image-1.webp" + }, + { + "slug": "ovis-2-5", + "name": "ovis_2.5.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Ovis-Image/resolve/main/split_files/text_encoders/ovis_2.5.safetensors", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "Ovis 2.5", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_ovis_text_to_image-1.webp" + }, + { + "slug": "qwen-image-lightning-8steps-v1-0", + "name": "Qwen-Image-Lightning-8steps-V1.0.safetensors", + "huggingFaceUrl": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V1.0.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Lightning 8steps V1.0", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image-1.webp" + }, + { + "slug": "wuli-qwen-image-2512-turbo-lora-2steps-v1-0-bf16", + "name": "Wuli-Qwen-Image-2512-Turbo-LoRA-2steps-V1.0-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Wuli-art/Qwen-Image-2512-Turbo-LoRA-2-Steps/resolve/main/Wuli-Qwen-Image-2512-Turbo-LoRA-2steps-V1.0-bf16.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Wuli Qwen Image 2512 Turbo LoRA 2steps V1.0 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_2512_with_2stpes_lora-1.webp" + }, + { + "slug": "qwen-image-canny-diffsynth-controlnet", + "name": "qwen_image_canny_diffsynth_controlnet.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-DiffSynth-ControlNets/resolve/main/split_files/model_patches/qwen_image_canny_diffsynth_controlnet.safetensors", + "directory": "model_patches", + "workflowCount": 1, + "displayName": "Qwen Image Canny Diffsynth Controlnet", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_controlnet_patch-1.webp" + }, + { + "slug": "qwen-image-edit-fp8-e4m3fn", + "name": "qwen_image_edit_fp8_e4m3fn.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_fp8_e4m3fn.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Qwen Image Edit FP8 e4m3fn", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_edit-1.webp" + }, + { + "slug": "qwen-image-edit-lightning-4steps-v1-0-bf16", + "name": "Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Edit Lightning 4steps V1.0 BF16", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image-edit", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_edit-1.webp" + }, + { + "slug": "qwen-image-edit-2509-relight", + "name": "Qwen-Image-Edit-2509-Relight.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/loras/Qwen-Image-Edit-2509-Relight.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Edit 2509 Relight", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_edit_2509_relight-1.webp" + }, + { + "slug": "qwen-image-instantx-controlnet-union", + "name": "Qwen-Image-InstantX-ControlNet-Union.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-InstantX-ControlNets/resolve/main/split_files/controlnet/Qwen-Image-InstantX-ControlNet-Union.safetensors", + "directory": "controlnet", + "workflowCount": 1, + "displayName": "Qwen Image InstantX ControlNet Union", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_instantx_controlnet-1.webp" + }, + { + "slug": "qwen-image-instantx-controlnet-inpainting", + "name": "Qwen-Image-InstantX-ControlNet-Inpainting.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-InstantX-ControlNets/resolve/main/split_files/controlnet/Qwen-Image-InstantX-ControlNet-Inpainting.safetensors", + "directory": "controlnet", + "workflowCount": 1, + "displayName": "Qwen Image InstantX ControlNet Inpainting", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_instantx_inpainting_controlnet-1.webp" + }, + { + "slug": "qwen-image-layered-bf16", + "name": "qwen_image_layered_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Layered_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_layered_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Qwen Image Layered BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_layered-1.webp" + }, + { + "slug": "qwen-image-layered-control-bf16", + "name": "qwen_image_layered_control_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/DiffSynth-Studio/Qwen-Image-Layered-Control/resolve/main/qwen_image_layered_control_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Qwen Image Layered Control BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_layered_control-1.webp" + }, + { + "slug": "qwen-image-union-diffsynth-lora", + "name": "qwen_image_union_diffsynth_lora.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-DiffSynth-ControlNets/resolve/main/split_files/loras/qwen_image_union_diffsynth_lora.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Union Diffsynth Lora", + "docsUrl": "https://docs.comfy.org/tutorials/image/qwen/qwen-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_qwen_image_union_control_lora-1.webp" + }, + { + "slug": "wan2-1-i2v-480p-14b-fp16", + "name": "wan2.1_i2v_480p_14B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_i2v_480p_14B_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 I2v 480p 14B FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan-video", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_to_video_wan-1.webp" + }, + { + "slug": "z-image-bf16", + "name": "z_image_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/z_image/resolve/main/split_files/diffusion_models/z_image_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Z Image BF16", + "docsUrl": "https://docs.comfy.org/tutorials/image/z-image/z-image", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_z_image-1.webp" + }, + { + "slug": "pixel-art-style-z-image-turbo", + "name": "pixel_art_style_z_image_turbo.safetensors", + "huggingFaceUrl": "https://huggingface.co/tarn59/pixel_art_style_lora_z_image_turbo/resolve/main/pixel_art_style_z_image_turbo.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Pixel Art Style Z Image Turbo", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_z_image_turbo-1.webp" + }, + { + "slug": "z-image-turbo-fun-controlnet-union", + "name": "Z-Image-Turbo-Fun-Controlnet-Union.safetensors", + "huggingFaceUrl": "https://huggingface.co/alibaba-pai/Z-Image-Turbo-Fun-Controlnet-Union/resolve/main/Z-Image-Turbo-Fun-Controlnet-Union.safetensors", + "directory": "model_patches", + "workflowCount": 1, + "displayName": "Z Image Turbo Fun Controlnet Union", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/image_z_image_turbo_fun_union_controlnet-1.webp" + }, + { + "slug": "ltx-video-2b-v0-9-5", + "name": "ltx-video-2b-v0.9.5.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.5.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Ltx Video 2b V0.9.5", + "docsUrl": "https://docs.comfy.org/tutorials/video/ltxv", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/ltxv_image_to_video-1.webp" + }, + { + "slug": "ltx-video-2b-v0-9", + "name": "ltx-video-2b-v0.9.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Ltx Video 2b V0.9", + "docsUrl": "https://docs.comfy.org/tutorials/video/ltxv", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/ltxv_text_to_video-1.webp" + }, + { + "slug": "sd3-5-large-controlnet-blur", + "name": "sd3.5_large_controlnet_blur.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-controlnets_ComfyUI_repackaged/resolve/main/split_files/controlnet/sd3.5_large_controlnet_blur.safetensors", + "directory": "controlnet", + "workflowCount": 1, + "displayName": "Sd3.5 Large Controlnet Blur", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sd3/#sd35-controlnets", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sd3.5_large_blur-1.webp" + }, + { + "slug": "sd3-5-large-controlnet-canny", + "name": "sd3.5_large_controlnet_canny.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-controlnets_ComfyUI_repackaged/resolve/main/split_files/controlnet/sd3.5_large_controlnet_canny.safetensors", + "directory": "controlnet", + "workflowCount": 1, + "displayName": "Sd3.5 Large Controlnet Canny", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sd3/#sd35-controlnets", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sd3.5_large_canny_controlnet_example-1.webp" + }, + { + "slug": "sd3-5-large-controlnet-depth", + "name": "sd3.5_large_controlnet_depth.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/stable-diffusion-3.5-controlnets_ComfyUI_repackaged/resolve/main/split_files/controlnet/sd3.5_large_controlnet_depth.safetensors", + "directory": "controlnet", + "workflowCount": 1, + "displayName": "Sd3.5 Large Controlnet Depth", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sd3/#sd35-controlnets", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sd3.5_large_depth-1.webp" + }, + { + "slug": "clip-vision-g", + "name": "clip_vision_g.safetensors", + "huggingFaceUrl": "https://huggingface.co/comfyanonymous/clip_vision_g/resolve/main/clip_vision_g.safetensors?download=true", + "directory": "clip_vision", + "workflowCount": 1, + "displayName": "Clip Vision G", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sdxl/#revision", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sdxl_revision_text_prompts-1.webp" + }, + { + "slug": "sd-xl-turbo-1-0-fp16", + "name": "sd_xl_turbo_1.0_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0_fp16.safetensors", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Sd Xl Turbo 1.0 FP16", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/sdturbo/", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/sdxlturbo_example-1.webp" + }, + { + "slug": "wan21-t2v-14b-lightx2v-cfg-step-distill-lora-rank32", + "name": "Wan21_T2V_14B_lightx2v_cfg_step_distill_lora_rank32.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Wan21_T2V_14B_lightx2v_cfg_step_distill_lora_rank32.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Wan21 T2V 14B Lightx2v Cfg Step Distill Lora Rank32", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/template-Animation_Trajectory_Control_Wan_ATI-1.webp" + }, + { + "slug": "umt5-xxl-enc-bf16", + "name": "umt5-xxl-enc-bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/umt5-xxl-enc-bf16.safetensors", + "directory": "text_encoders", + "workflowCount": 1, + "displayName": "Umt5 Xxl Enc BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/template-Animation_Trajectory_Control_Wan_ATI-1.webp" + }, + { + "slug": "clip-vit-h-14-laion2b-s32b-b79k", + "name": "CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/CLIP-ViT-H-14-laion2B-s32B-b79K_repackaged/resolve/main/split_files/clip_vision/CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors", + "directory": "clip_vision", + "workflowCount": 1, + "displayName": "CLIP ViT H 14 Laion2B S32B B79K", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/template-Animation_Trajectory_Control_Wan_ATI-1.webp" + }, + { + "slug": "qwen-image-edit-2509-anything2realalpha", + "name": "Qwen-Image-Edit-2509-Anything2RealAlpha.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/loras/Qwen-Image-Edit-2509-Anything2RealAlpha.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Edit 2509 Anything2RealAlpha", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/templates-image_to_real-1.webp" + }, + { + "slug": "qwen-image-edit-2509-light-migration", + "name": "Qwen-Image-Edit-2509-Light-Migration.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/loras/Qwen-Image-Edit-2509-Light-Migration.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Edit 2509 Light Migration", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/templates-portrait_light_migration-1.webp" + }, + { + "slug": "qwen-image-edit-2509-fusion", + "name": "Qwen-Image-Edit-2509-Fusion.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/loras/Qwen-Image-Edit-2509-Fusion.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Qwen Image Edit 2509 Fusion", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/templates-qwen_image_edit-crop_and_stitch-fusion-1.webp" + }, + { + "slug": "wan2-1-t2v-1-3b-fp16", + "name": "wan2.1_t2v_1.3B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_t2v_1.3B_fp16.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 T2v 1.3B FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan-video", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/text_to_video_wan-1.webp" + }, + { + "slug": "svd-xt", + "name": "svd_xt.safetensors", + "huggingFaceUrl": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors?download=true", + "directory": "checkpoints", + "workflowCount": 1, + "displayName": "Svd Xt", + "docsUrl": "https://comfyanonymous.github.io/ComfyUI_examples/video/#image-to-video", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/txt_to_image_to_video-1.webp" + }, + { + "slug": "realesrgan-x4plus", + "name": "RealESRGAN_x4plus.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Real-ESRGAN_repackaged/resolve/main/RealESRGAN_x4plus.safetensors", + "directory": "upscale_models", + "workflowCount": 1, + "displayName": "RealESRGAN X4plus", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/ultility-gan_upscaler-1.webp" + }, + { + "slug": "humo-17b-fp8-e4m3fn", + "name": "humo_17B_fp8_e4m3fn.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HuMo_ComfyUI/resolve/main/split_files/diffusion_models/humo_17B_fp8_e4m3fn.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Humo 17B FP8 e4m3fn", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_humo-1.webp" + }, + { + "slug": "whisper-large-v3-fp16", + "name": "whisper_large_v3_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HuMo_ComfyUI/resolve/main/split_files/audio_encoders/whisper_large_v3_fp16.safetensors", + "directory": "audio_encoders", + "workflowCount": 1, + "displayName": "Whisper Large V3 FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_humo-1.webp" + }, + { + "slug": "hunyuanvideo1-5-720p-i2v-fp16", + "name": "hunyuanvideo1.5_720p_i2v_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/diffusion_models/hunyuanvideo1.5_720p_i2v_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hunyuanvideo1.5 720p I2v FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_hunyuan_video_1.5_720p_i2v-1.webp" + }, + { + "slug": "hunyuanvideo1-5-720p-t2v-fp16", + "name": "hunyuanvideo1.5_720p_t2v_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/diffusion_models/hunyuanvideo1.5_720p_t2v_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Hunyuanvideo1.5 720p T2v FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_hunyuan_video_1.5_720p_t2v-1.webp" + }, + { + "slug": "kandinsky5lite-i2v-5s", + "name": "kandinsky5lite_i2v_5s.safetensors", + "huggingFaceUrl": "https://huggingface.co/kandinskylab/Kandinsky-5.0-I2V-Lite-5s/resolve/main/model/kandinsky5lite_i2v_5s.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Kandinsky5lite I2v 5s", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_kandinsky5_i2v-1.webp" + }, + { + "slug": "kandinsky5lite-t2v-sft-5s", + "name": "kandinsky5lite_t2v_sft_5s.safetensors", + "huggingFaceUrl": "https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s/resolve/main/model/kandinsky5lite_t2v_sft_5s.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Kandinsky5lite T2v Sft 5s", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_kandinsky5_t2v-1.webp" + }, + { + "slug": "ltx-2-19b-ic-lora-canny-control", + "name": "ltx-2-19b-ic-lora-canny-control.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Canny-Control/resolve/main/ltx-2-19b-ic-lora-canny-control.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Ltx 2 19b Ic Lora Canny Control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_canny_to_video-1.webp" + }, + { + "slug": "ltx-2-19b-ic-lora-depth-control", + "name": "ltx-2-19b-ic-lora-depth-control.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Depth-Control/resolve/main/ltx-2-19b-ic-lora-depth-control.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Ltx 2 19b Ic Lora Depth Control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_depth_to_video-1.webp" + }, + { + "slug": "ltx-2-19b-ic-lora-pose-control", + "name": "ltx-2-19b-ic-lora-pose-control.safetensors", + "huggingFaceUrl": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Pose-Control/resolve/main/ltx-2-19b-ic-lora-pose-control.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Ltx 2 19b Ic Lora Pose Control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_ltx2_pose_to_video-1.webp" + }, + { + "slug": "wan2-1-t2v-14b-fp8-scaled", + "name": "wan2.1_t2v_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_t2v_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 T2v 14B FP8 scaled", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_alpha_t2v_14B-1.webp" + }, + { + "slug": "wan-alpha-2-1-rgba-lora", + "name": "wan_alpha_2.1_rgba_lora.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/loras/wan_alpha_2.1_rgba_lora.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Wan Alpha 2.1 Rgba Lora", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_alpha_t2v_14B-1.webp" + }, + { + "slug": "wan-alpha-2-1-vae-rgb-channel", + "name": "wan_alpha_2.1_vae_rgb_channel.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/vae/wan_alpha_2.1_vae_rgb_channel.safetensors", + "directory": "vae", + "workflowCount": 1, + "displayName": "Wan Alpha 2.1 Vae Rgb Channel", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_alpha_t2v_14B-1.webp" + }, + { + "slug": "wan-alpha-2-1-vae-alpha-channel", + "name": "wan_alpha_2.1_vae_alpha_channel.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/vae/wan_alpha_2.1_vae_alpha_channel.safetensors", + "directory": "vae", + "workflowCount": 1, + "displayName": "Wan Alpha 2.1 Vae Alpha Channel", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_alpha_t2v_14B-1.webp" + }, + { + "slug": "lightx2v-t2v-14b-cfg-step-distill-v2-lora-rank64-bf16", + "name": "lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/Lightx2v/lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank64_bf16.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Lightx2v T2V 14B Cfg Step Distill V2 Lora Rank64 BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_alpha_t2v_14B-1.webp" + }, + { + "slug": "wan2-1-fun-camera-v1-1-1-3b-bf16", + "name": "wan2.1_fun_camera_v1.1_1.3B_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_fun_camera_v1.1_1.3B_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 Fun Camera V1.1 1.3B BF16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/fun-control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_fun_camera_v1.1_1.3B-1.webp" + }, + { + "slug": "wan2-1-fun-camera-v1-1-14b-bf16", + "name": "wan2.1_fun_camera_v1.1_14B_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_fun_camera_v1.1_14B_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 Fun Camera V1.1 14B BF16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/fun-control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2.1_fun_camera_v1.1_14B-1.webp" + }, + { + "slug": "wan2-1-i2v-14b-480p-fp8-e4m3fn-scaled-kj", + "name": "Wan2_1-I2V-14B-480p_fp8_e4m3fn_scaled_KJ.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy_fp8_scaled/resolve/main/I2V/Wan2_1-I2V-14B-480p_fp8_e4m3fn_scaled_KJ.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2 1 I2V 14B 480p FP8 e4m3fn scaled KJ", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_1_infinitetalk-1.webp" + }, + { + "slug": "wan2-1-infinitetalk-multi-fp16", + "name": "wan2.1_infiniteTalk_multi_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/model_patches/wan2.1_infiniteTalk_multi_fp16.safetensors", + "directory": "model_patches", + "workflowCount": 1, + "displayName": "Wan2.1 InfiniteTalk Multi FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_1_infinitetalk-1.webp" + }, + { + "slug": "wav2vec2-chinese-base-fp16", + "name": "wav2vec2-chinese-base_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/wav2vec2_safetensors/resolve/main/wav2vec2-chinese-base_fp16.safetensors", + "directory": "audio_encoders", + "workflowCount": 1, + "displayName": "Wav2vec2 Chinese Base FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_1_infinitetalk-1.webp" + }, + { + "slug": "wananimate-relight-lora-fp16", + "name": "WanAnimate_relight_lora_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy/resolve/main/LoRAs/Wan22_relight/WanAnimate_relight_lora_fp16.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "WanAnimate Relight Lora FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-animate", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_animate-1.webp" + }, + { + "slug": "wan2-2-animate-14b-fp8-e4m3fn-scaled-kj", + "name": "Wan2_2-Animate-14B_fp8_e4m3fn_scaled_KJ.safetensors", + "huggingFaceUrl": "https://huggingface.co/Kijai/WanVideo_comfy_fp8_scaled/resolve/main/Wan22Animate/Wan2_2-Animate-14B_fp8_e4m3fn_scaled_KJ.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2 2 Animate 14B FP8 e4m3fn scaled KJ", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-animate", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_animate-1.webp" + }, + { + "slug": "wan2-2-fun-camera-high-noise-14b-fp8-scaled", + "name": "wan2.2_fun_camera_high_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_camera_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Camera High Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-camera", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_fun_camera-1.webp" + }, + { + "slug": "wan2-2-fun-camera-low-noise-14b-fp8-scaled", + "name": "wan2.2_fun_camera_low_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_camera_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Camera Low Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-camera", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_fun_camera-1.webp" + }, + { + "slug": "wan2-2-fun-control-high-noise-14b-fp8-scaled", + "name": "wan2.2_fun_control_high_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_control_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Control High Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_fun_control-1.webp" + }, + { + "slug": "wan2-2-fun-control-low-noise-14b-fp8-scaled", + "name": "wan2.2_fun_control_low_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_control_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Control Low Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_fun_control-1.webp" + }, + { + "slug": "wan2-2-fun-inpaint-high-noise-14b-fp8-scaled", + "name": "wan2.2_fun_inpaint_high_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_inpaint_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Inpaint High Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-inp", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_fun_inpaint-1.webp" + }, + { + "slug": "wan2-2-fun-inpaint-low-noise-14b-fp8-scaled", + "name": "wan2.2_fun_inpaint_low_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_inpaint_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Inpaint Low Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-inp", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_fun_inpaint-1.webp" + }, + { + "slug": "wav2vec2-large-english-fp16", + "name": "wav2vec2_large_english_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/audio_encoders/wav2vec2_large_english_fp16.safetensors", + "directory": "audio_encoders", + "workflowCount": 1, + "displayName": "Wav2vec2 Large English FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-s2v", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_s2v-1.webp" + }, + { + "slug": "wan2-2-s2v-14b-fp8-scaled", + "name": "wan2.2_s2v_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_s2v_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 S2v 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2-2-s2v", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_s2v-1.webp" + }, + { + "slug": "wan2-2-t2v-low-noise-14b-fp8-scaled", + "name": "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 T2v Low Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_t2v-1.webp" + }, + { + "slug": "wan2-2-t2v-high-noise-14b-fp8-scaled", + "name": "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 T2v High Noise 14B FP8 scaled", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_t2v-1.webp" + }, + { + "slug": "wan2-2-t2v-lightx2v-4steps-lora-v1-1-low-noise", + "name": "wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors", + "directory": "loras", + "workflowCount": 1, + "displayName": "Wan2.2 T2v Lightx2v 4steps Lora V1.1 Low Noise", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan2_2", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_14B_t2v-1.webp" + }, + { + "slug": "wan2-2-fun-control-5b-bf16", + "name": "wan2.2_fun_control_5B_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_control_5B_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Control 5B BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_5B_fun_control-1.webp" + }, + { + "slug": "wan2-2-fun-inpaint-5b-bf16", + "name": "wan2.2_fun_inpaint_5B_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_fun_inpaint_5B_bf16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Fun Inpaint 5B BF16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_5B_fun_inpaint-1.webp" + }, + { + "slug": "wan2-2-ti2v-5b-fp16", + "name": "wan2.2_ti2v_5B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_ti2v_5B_fp16.safetensors", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.2 Ti2v 5B FP16", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/video_wan2_2_5B_ti2v-1.webp" + }, + { + "slug": "wan2-1-flf2v-720p-14b-fp16", + "name": "wan2.1_flf2v_720p_14B_fp16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_flf2v_720p_14B_fp16.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 Flf2v 720p 14B FP16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/wan-flf", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/wan2.1_flf2v_720_f16-1.webp" + }, + { + "slug": "wan2-1-fun-control-1-3b-bf16", + "name": "wan2.1_fun_control_1.3B_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_fun_control_1.3B_bf16.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 Fun Control 1.3B BF16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/fun-control", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/wan2.1_fun_control-1.webp" + }, + { + "slug": "wan2-1-fun-inp-1-3b-bf16", + "name": "wan2.1_fun_inp_1.3B_bf16.safetensors", + "huggingFaceUrl": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/wan2.1_fun_inp_1.3B_bf16.safetensors?download=true", + "directory": "diffusion_models", + "workflowCount": 1, + "displayName": "Wan2.1 Fun Inp 1.3B BF16", + "docsUrl": "https://docs.comfy.org/tutorials/video/wan/fun-inp", + "thumbnailUrl": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/templates/wan2.1_fun_inp-1.webp" + } +] diff --git a/apps/website/src/config/model-metadata.ts b/apps/website/src/config/model-metadata.ts new file mode 100644 index 00000000000..07f8e1ec153 --- /dev/null +++ b/apps/website/src/config/model-metadata.ts @@ -0,0 +1,208 @@ +interface ModelOverride { + docsUrl?: string + blogUrl?: string + featured?: boolean + // Slug used on comfy.org/workflows/model/{hubSlug}. Only set when the page exists. + hubSlug?: string +} + +export const modelMetadata: Record = { + 'nano-banana': { + docsUrl: + 'https://docs.comfy.org/tutorials/partner-nodes/google/nano-banana-pro', + hubSlug: 'nano-banana', + featured: true + }, + 'kling-ai': { + docsUrl: + 'https://docs.comfy.org/tutorials/partner-nodes/kling/kling-motion-control', + hubSlug: 'kling', + featured: true + }, + 'meshy-ai': { + docsUrl: 'https://docs.comfy.org/tutorials/partner-nodes/meshy/meshy-6', + hubSlug: 'meshy', + featured: true + }, + 'openai-dall-e': { + docsUrl: 'https://docs.comfy.org/tutorials/partner-nodes/openai/dall-e-3', + hubSlug: 'openai', + featured: true + }, + 'ltxv-api': { + docsUrl: 'https://docs.comfy.org/tutorials/video/ltxv', + hubSlug: 'ltx-2-3', + featured: true + }, + 'wan-api': { + docsUrl: 'https://docs.comfy.org/tutorials/video/wan/wan2_2', + hubSlug: 'wan', + featured: true + }, + 'wan-2-2': { + docsUrl: 'https://docs.comfy.org/tutorials/video/wan/wan2_2', + hubSlug: 'wan', + featured: true + }, + 'wan-2-1': { + docsUrl: 'https://docs.comfy.org/tutorials/video/wan/wan-video', + hubSlug: 'wan', + featured: true + }, + 'flux-1-kontext-dev': { + docsUrl: + 'https://docs.comfy.org/tutorials/partner-nodes/black-forest-labs/flux-1-kontext', + hubSlug: 'flux-1-kontext', + featured: true + }, + 'flux1-dev': { + docsUrl: 'https://docs.comfy.org/tutorials/flux/flux-1-text-to-image', + hubSlug: 'flux-1', + featured: true + }, + 'flux1-schnell': { + hubSlug: 'flux-1', + featured: true + }, + 'hunyuan-video': { + docsUrl: 'https://docs.comfy.org/tutorials/video/hunyuan/hunyuan-video', + hubSlug: 'hunyuan-video', + featured: true + }, + 'hunyuan-3d': { + docsUrl: 'https://docs.comfy.org/tutorials/3d/hunyuan3D-2', + hubSlug: 'hunyuan-3d', + featured: true + }, + vidu: { + hubSlug: 'vidu', + featured: true + }, + runway: { + hubSlug: 'runway', + featured: true + }, + 'stability-ai': { + hubSlug: 'stability', + featured: true + }, + 'seedance-bytedance': { + hubSlug: 'seedance', + featured: true + }, + 'grok-image': { + hubSlug: 'grok', + featured: false + }, + 'luma-dream-machine': { + hubSlug: 'luma', + featured: false + }, + moonvalley: { + hubSlug: 'moonvalley', + featured: false + }, + 'magnific-ai': { + hubSlug: 'magnific', + featured: false + }, + pixverse: { + hubSlug: 'pixverse', + featured: false + }, + 'rodin-3d': { + hubSlug: 'rodin', + featured: false + }, + recraft: { + hubSlug: 'recraft', + featured: false + }, + 'bria-ai': { + hubSlug: 'bria', + featured: false + }, + 'topaz-labs': { + hubSlug: 'topaz', + featured: false + }, + wavespeed: { + hubSlug: 'wavespeed', + featured: false + }, + ideogram: { + hubSlug: 'ideogram', + featured: false + }, + 'veo-2': { + hubSlug: 'veo', + featured: false + }, + 'veo-3': { + hubSlug: 'veo', + featured: false + }, + 'flux-2-api': { + hubSlug: 'flux-2', + featured: false + }, + 'ace-step-v1-3-5b': { + docsUrl: 'https://docs.comfy.org/tutorials/audio/ace-step/ace-step-v1', + hubSlug: 'ace-step', + featured: false + }, + 'hidream-i1-dev-fp8': { + docsUrl: 'https://docs.comfy.org/tutorials/image/hidream/hidream-i1', + hubSlug: 'hidream', + featured: false + }, + 'omnigen2-fp16': { + hubSlug: 'omnigen', + featured: false + }, + 'sd-xl-base-1-0': { + hubSlug: 'sdxl', + featured: false + }, + 'z-image-bf16': { + hubSlug: 'z-image', + featured: false + }, + 'z-image-turbo-bf16': { + hubSlug: 'z-image', + featured: false + }, + 'svd-xt': { + hubSlug: 'svd', + featured: false + }, + 'flux1-dev-kontext-fp8-scaled': { + docsUrl: 'https://docs.comfy.org/tutorials/flux/flux-1-kontext-dev', + hubSlug: 'flux-1-kontext', + featured: false + }, + 'ltx-2-19b-dev-fp8': { + hubSlug: 'ltx-2', + featured: false + }, + 'ltx-2-19b-distilled': { + hubSlug: 'ltx-2', + featured: false + }, + 'flux1-fill-dev': { + hubSlug: 'flux-1', + featured: false + }, + 'flux-2-klein-base-9b-fp8': { + hubSlug: 'flux-2', + featured: false + }, + 'qwen-image-fp8-e4m3fn': { + hubSlug: 'qwen', + featured: false + }, + 'qwen-image-edit-2509-fp8-e4m3fn': { + hubSlug: 'qwen', + featured: false + } +} diff --git a/apps/website/src/config/models.ts b/apps/website/src/config/models.ts new file mode 100644 index 00000000000..c779ac1430a --- /dev/null +++ b/apps/website/src/config/models.ts @@ -0,0 +1,81 @@ +import generatedModels from './generated-models.json' +import { modelMetadata } from './model-metadata' + +type ModelDirectory = + | 'diffusion_models' + | 'checkpoints' + | 'loras' + | 'controlnet' + | 'clip_vision' + | 'model_patches' + | 'vae' + | 'text_encoders' + | 'audio_encoders' + | 'latent_upscale_models' + | 'upscale_models' + | 'style_models' + | 'partner_nodes' + +interface Model { + readonly slug: string + readonly canonicalSlug?: string + readonly name: string + readonly displayName: string + readonly directory: ModelDirectory + readonly huggingFaceUrl: string + readonly thumbnailUrl?: string + readonly docsUrl?: string + readonly blogUrl?: string + readonly hubSlug?: string + readonly featured: boolean + readonly workflowCount: number +} + +export const models: readonly Model[] = ( + generatedModels as Array<{ + slug: string + canonicalSlug?: string + name: string + displayName: string + directory: string + huggingFaceUrl: string + docsUrl?: string + thumbnailUrl?: string + workflowCount: number + }> +).map((m) => ({ + slug: m.slug, + ...(m.canonicalSlug ? { canonicalSlug: m.canonicalSlug } : {}), + name: m.name, + displayName: m.displayName, + directory: m.directory as ModelDirectory, + huggingFaceUrl: m.huggingFaceUrl, + ...(m.docsUrl ? { docsUrl: m.docsUrl } : {}), + ...(m.thumbnailUrl ? { thumbnailUrl: m.thumbnailUrl } : {}), + featured: false, + workflowCount: m.workflowCount, + ...modelMetadata[m.slug] +})) + +const slugSet = new Set(models.map((m) => m.slug)) +if (slugSet.size !== models.length) { + for (const model of models) { + if (models.filter((m) => m.slug === model.slug).length > 1) { + throw new Error(`Duplicate model slug: ${model.slug}`) + } + } +} +for (const model of models) { + if ( + model.canonicalSlug !== undefined && + (!slugSet.has(model.canonicalSlug) || model.canonicalSlug === model.slug) + ) { + throw new Error( + `Invalid canonicalSlug "${model.canonicalSlug}" on "${model.slug}"` + ) + } +} + +export function getModelBySlug(slug: string): Model | undefined { + return models.find((m) => m.slug === slug) +} diff --git a/apps/website/src/config/routes.ts b/apps/website/src/config/routes.ts index dcce707781e..8e55db46692 100644 --- a/apps/website/src/config/routes.ts +++ b/apps/website/src/config/routes.ts @@ -13,7 +13,8 @@ const baseRoutes = { customers: '/customers', termsOfService: '/terms-of-service', privacyPolicy: '/privacy-policy', - contact: '/contact' + contact: '/contact', + models: '/p/supported-models' } as const type Routes = typeof baseRoutes diff --git a/apps/website/src/i18n/translations.ts b/apps/website/src/i18n/translations.ts index f93f3f003d4..7eb57e32230 100644 --- a/apps/website/src/i18n/translations.ts +++ b/apps/website/src/i18n/translations.ts @@ -3594,6 +3594,60 @@ const translations = { 'zh-CN': 'Creative Studios AI 负责人' }, + // Models – UI keys + 'models.hero.eyebrow': { + en: 'AI Model', + 'zh-CN': 'AI 模型' + }, + 'models.hero.primaryCta': { + en: 'TRY IN COMFY', + 'zh-CN': '在 Comfy 中试用' + }, + 'models.hero.secondaryCta': { + en: 'DOWNLOAD MODEL', + 'zh-CN': '下载模型' + }, + 'models.hero.cloudCta': { + en: 'RUN ON CLOUD', + 'zh-CN': '云端运行' + }, + 'models.hero.tutorialCta': { + en: 'VIEW TUTORIAL', + 'zh-CN': '查看教程' + }, + 'models.hero.blogLink': { + en: 'Read blog post', + 'zh-CN': '阅读博客文章' + }, + 'models.hero.workflowCount': { + en: '{count} workflows use this model', + 'zh-CN': '{count} 个工作流使用此模型' + }, + 'models.whatIs.heading': { + en: 'What is {name}?', + 'zh-CN': '什么是 {name}?' + }, + 'models.whatIs.tutorialLink': { + en: 'Read the full tutorial →', + 'zh-CN': '阅读完整教程 →' + }, + 'models.index.title': { + en: 'Supported Models', + 'zh-CN': '支持的模型' + }, + 'models.index.subtitle': { + en: "Run the world's leading AI models in ComfyUI", + 'zh-CN': '在 ComfyUI 中运行世界领先的 AI 模型' + }, + 'models.breadcrumb.home': { + en: 'Home', + 'zh-CN': '首页' + }, + 'models.breadcrumb.models': { + en: 'Supported Models', + 'zh-CN': '支持的模型' + }, + // Payment status pages 'payment.success.label': { en: 'PAYMENT', diff --git a/apps/website/src/layouts/BaseLayout.astro b/apps/website/src/layouts/BaseLayout.astro index 77cf76131c2..0a06e3a86f4 100644 --- a/apps/website/src/layouts/BaseLayout.astro +++ b/apps/website/src/layouts/BaseLayout.astro @@ -92,6 +92,8 @@ const websiteJsonLd = {