fresh-app-51 / index.html
akhaliq's picture
akhaliq HF Staff
Upload index.html with huggingface_hub
f178567 verified
raw
history blame
18 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ComfyUI Workflow</title>
<style>
body {
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
background-color: #1e1e1e;
color: #d4d4d4;
margin: 0;
padding: 20px;
line-height: 1.4;
}
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 20px;
border-radius: 10px;
margin-bottom: 20px;
text-align: center;
}
.header h1 {
margin: 0;
font-size: 2em;
}
.header a {
color: #ffffff;
text-decoration: none;
font-weight: bold;
opacity: 0.9;
}
.header a:hover {
opacity: 1;
text-decoration: underline;
}
.json-container {
background-color: #2d2d30;
border-radius: 8px;
padding: 20px;
overflow-x: auto;
border: 1px solid #3e3e42;
}
pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
}
.json-key {
color: #9cdcfe;
}
.json-string {
color: #ce9178;
}
.json-number {
color: #b5cea8;
}
.json-boolean {
color: #569cd6;
}
.json-null {
color: #569cd6;
}
.copy-btn {
background: #007acc;
color: white;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
margin-bottom: 10px;
font-family: inherit;
}
.copy-btn:hover {
background: #005a9e;
}
.download-btn {
background: #28a745;
color: white;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
margin-bottom: 10px;
margin-left: 10px;
font-family: inherit;
}
.download-btn:hover {
background: #218838;
}
</style>
</head>
<body>
<div class="header">
<h1>ComfyUI Workflow</h1>
<p>Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">anycoder</a></p>
</div>
<button class="copy-btn" onclick="copyToClipboard()">📋 Copy JSON</button>
<button class="download-btn" onclick="downloadJSON()">💾 Download JSON</button>
<div class="json-container">
<pre id="json-content">{
"last_node_id": 15,
"last_link_id": 20,
"nodes": [
{
"id": 1,
"type": "LoadImage",
"pos": [
50,
100
],
"size": [
320,
314
],
"flags": {},
"order": 0,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
1
],
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"input_photo.png",
"image"
]
},
{
"id": 2,
"type": "CheckpointLoaderSimple",
"pos": [
50,
450
],
"size": [
350,
100
],
"flags": {},
"order": 1,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
2
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
3
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
4
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"Qwen-Image-Edit-2509.safetensors"
]
},
{
"id": 3,
"type": "LoraLoader",
"pos": [
450,
450
],
"size": [
350,
126
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 2
},
{
"name": "clip",
"type": "CLIP",
"link": 3
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
5
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
6
],
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"Qwen-Image-Edit-2509-Photo-to-Anime_000001000.safetensors",
1.0,
1.0
]
},
{
"id": 4,
"type": "VAEEncode",
"pos": [
450,
100
],
"size": [
210,
46
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "pixels",
"type": "IMAGE",
"link": 1
},
{
"name": "vae",
"type": "VAE",
"link": 4
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
7
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEEncode"
}
},
{
"id": 5,
"type": "CLIPTextEncode",
"pos": [
450,
200
],
"size": [
400,
200
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 6
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
8
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"Convert this photo to anime style, vibrant colors, detailed anime artwork, high quality anime illustration"
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
450,
430
],
"size": [
400,
200
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 6
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
9
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"low quality, blurry, distorted, photorealistic, ugly, bad anatomy"
]
},
{
"id": 7,
"type": "EmptyLatentImage",
"pos": [
900,
100
],
"size": [
315,
106
],
"flags": {},
"order": 6,
"mode": 0,
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
10
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 8,
"type": "KSampler",
"pos": [
900,
250
],
"size": [
315,
474
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 5
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 8
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 9
},
{
"name": "latent_image",
"type": "LATENT",
"link": 11
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
12
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
42,
"randomize",
4,
1.0,
"euler",
"normal",
0.75
]
},
{
"id": 9,
"type": "LatentUpscale",
"pos": [
900,
760
],
"size": [
315,
130
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 7
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
11
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "LatentUpscale"
},
"widgets_values": [
"nearest-exact",
1024,
1024,
"disabled"
]
},
{
"id": 10,
"type": "VAEDecode",
"pos": [
1300,
250
],
"size": [
210,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 12
},
{
"name": "vae",
"type": "VAE",
"link": 4
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
13
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
}
},
{
"id": 11,
"type": "SaveImage",
"pos": [
1300,
350
],
"size": [
320,
270
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 13
}
],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"anime_output"
]
},
{
"id": 12,
"type": "ImageScale",
"pos": [
50,
600
],
"size": [
315,
130
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 1
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
14
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ImageScale"
},
"widgets_values": [
"lanczos",
1024,
1024,
"disabled"
]
},
{
"id": 13,
"type": "Note",
"pos": [
50,
780
],
"size": [
400,
150
],
"flags": {},
"order": 12,
"mode": 0,
"properties": {
"text": ""
},
"widgets_values": [
"Photo to Anime Workflow\n\nThis workflow uses Qwen-Image-Edit-2509 with Photo-to-Anime LoRA to transform photos into anime-style images.\n\nBuilt with anycoder - https://huggingface.co/spaces/akhaliq/anycoder"
],
"bgcolor": "#232323"
},
{
"id": 14,
"type": "BasicScheduler",
"pos": [
1300,
650
],
"size": [
315,
106
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 5
}
],
"outputs": [
{
"name": "SIGMAS",
"type": "SIGMAS",
"links": [
15
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "BasicScheduler"
},
"widgets_values": [
"normal",
4,
1.0
]
},
{
"id": 15,
"type": "Note",
"pos": [
1650,
100
],
"size": [
400,
200
],
"flags": {},
"order": 14,
"mode": 0,
"properties": {
"text": ""
},
"widgets_values": [
"Advanced Settings:\n\n- Guidance Scale: 1.0 (increase for stronger anime effect)\n- Inference Steps: 4 (increase for higher quality)\n- Seed: randomize for variety\n- Height/Width: Auto-calculated based on input\n\nModel: Qwen-Image-Edit-2509\nLoRA: Photo-to-Anime (weight: 1.0)\n\nBuilt with anycoder"
],
"bgcolor": "#353535"
}
],
"links": [
[
1,
1,
0,
4,
0,
"IMAGE"
],
[
2,
2,
0,
3,
0,
"MODEL"
],
[
3,
2,
1,
3,
1,
"CLIP"
],
[
4,
2,
2,
4,
1,
"VAE"
],
[
5,
3,
0,
8,
0,
"MODEL"
],
[
6,
3,
1,
5,
0,
"CLIP"
],
[
7,
4,
0,
9,
0,
"LATENT"
],
[
8,
5,
0,
8,
1,
"CONDITIONING"
],
[
9,
6,
0,
8,
2,
"CONDITIONING"
],
[
10,
7,
0,
8,
3,
"LATENT"
],
[
11,
9,
0,
8,
3,
"LATENT"
],
[
12,
8,
0,
10,
0,
"LATENT"
],
[
13,
10,
0,
11,
0,
"IMAGE"
],
[
14,
12,
0,
4,
0,
"IMAGE"
],
[
15,
14,
0,
8,
4,
"SIGMAS"
]
],
"groups": [
{
"title": "Input Processing",
"bounding": [
25,
25,
850,
730
],
"color": "#3f789e",
"font_size": 24
},
{
"title": "Generation",
"bounding": [
875,
25,
375,
900
],
"color": "#8A8A8A",
"font_size": 24
},
{
"title": "Output",
"bounding": [
1275,
25,
375,
730
],
"color": "#a1309b",
"font_size": 24
}
],
"config": {},
"extra": {
"workflow_metadata": {
"name": "Photo to Anime Transformation",
"description": "Transform photos into anime-style images using Qwen-Image-Edit-2509 with Photo-to-Anime LoRA fine-tuning",
"version": "1.0.0",
"author": "anycoder",
"created_with": "https://huggingface.co/spaces/akhaliq/anycoder",
"models": {
"checkpoint": "Qwen/Qwen-Image-Edit-2509",
"lora": "autoweeb/Qwen-Image-Edit-2509-Photo-to-Anime",
"vae": "AutoencoderKLQwenImage",
"text_encoder": "Qwen2.5-VL-7B-Instruct"
},
"features": [
"Photo to anime style conversion",
"LoRA fine-tuning for anime aesthetics",
"Automatic dimension calculation",
"High-quality image generation",
"Customizable guidance scale and steps"
],
"requirements": {
"diffusers": "latest",
"transformers": "latest",
"torch": "2.0+",
"peft": "latest"
}
}
},
"version": 0.4
}</pre>
</div>
<script>
function copyToClipboard() {
const jsonContent = document.getElementById('json-content').textContent;
navigator.clipboard.writeText(jsonContent).then(() => {
const btn = document.querySelector('.copy-btn');
const originalText = btn.textContent;
btn.textContent = '✅ Copied!';
setTimeout(() => {
btn.textContent = originalText;
}, 2000);
});
}
function downloadJSON() {
const jsonContent = document.getElementById('json-content').textContent;
const blob = new Blob([jsonContent], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'comfyui_workflow.json';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// Add syntax highlighting
function highlightJSON() {
const content = document.getElementById('json-content');
let html = content.innerHTML;
// Highlight different JSON elements
html = html.replace(/"([^"]+)":/g, '<span class="json-key">"$1":</span>');
html = html.replace(/: "([^"]*)"/g, ': <span class="json-string">"$1"</span>');
html = html.replace(/: (-?\d+\.?\d*)/g, ': <span class="json-number">$1</span>');
html = html.replace(/: (true|false)/g, ': <span class="json-boolean">$1</span>');
html = html.replace(/: null/g, ': <span class="json-null">null</span>');
content.innerHTML = html;
}
// Apply syntax highlighting after page load
window.addEventListener('load', highlightJSON);
</script>
</body>
</html>