Captura → código · Guía ilustrada

Screenshot to code con IA gratis: el conversor open source y la vía de DeepSeek Vision

Dos caminos para convertir una captura de diseño en código que funcione: instalar abi/screenshot-to-code con licencia MIT mediante Docker y una sola clave de modelo, o adjuntar la imagen a DeepSeek y que la reconstruya como un único archivo HTML. 15 pasos, cada afirmación cotejada con el repositorio y con api-docs.deepseek.com.

Resumen rápido

  • El software es gratis, los tokens no. abi/screenshot-to-code está bajo MIT y autoalojarlo no cuesta nada, pero necesitas al menos una clave de modelo —OpenAI, Anthropic o Gemini— y pagas a ese proveedor por token.
  • DeepSeek no está entre sus modelos. La lista por defecto del README trae Gemini 3 Flash / 3.1 Pro, GPT-5.5 / 5.4 Mini y Claude Opus 4.6 / 4.8, y la cadena "deepseek" no aparece en ningún archivo del repositorio.
  • El modelo que ve en DeepSeek es deepseek-flash: en la tabla de precios oficial la fila Vision marca ✓ en flash y «Not supported» en deepseek-v4-pro. Las imágenes entran en base64, por URL pública o con un file_id de la Files API.
  • Las dos rutas terminan igual: un archivo HTML que abres con doble clic. Con las tarifas Flash publicadas, una captura más unos miles de tokens de marcado cuestan muy por debajo de un centavo de dólar.

Install Screenshot-to-Code Locally — Convert Screenshot to Functional Code

Canal:Fahd Mirza9:38

Abrir

DeepSeek R1 Coding — Testing Screenshot to Code Conversion

Canal:United Top Tech3:06

Abrir

abi/screenshot-to-code README — supported stacks, required keys, Docker

Docs:github.com/abi/screenshot-to-codeDocs

Abrir

DeepSeek API Docs — Vision (base64, external URL, Files API)

Docs:api-docs.deepseek.comDocs

Abrir

DeepSeek API Docs — Models & Pricing (the Vision row)

Docs:api-docs.deepseek.comDocs

Abrir

Las imágenes salen de dos grabaciones de pantalla limpias (sin cámara incrustada ni subtítulos quemados); las pilas admitidas, las claves necesarias, los comandos de Docker y los límites de imagen de DeepSeek están cotejados con el README de abi/screenshot-to-code, sus archivos fuente y api-docs.deepseek.com.

Las capturas acreditan a los canales que las grabaron y cada paso enlaza al timestamp exacto. Ambas grabaciones son anteriores a los nombres de modelo actuales de DeepSeek: cuando un fotograma muestra una etiqueta vieja, el texto sigue la documentación oficial.

Los 15 pasos, de una captura a una página que se abre

Empezar por una captura

  1. 1

    Captura la parte de la interfaz que quieres reconstruir

    Vale cualquier imagen fija: la demo del propio conversor usa una página de canal de YouTube, y la vía DeepSeek de abajo usa una maqueta de login de 68 KB guardada como log.PNG. Una captura gana a un brief escrito porque espaciados, color y jerarquía ya están decididos: el modelo los lee en vez de inventarlos. Recorta solo el componente que te interesa; una pantalla completa gasta tokens en marcos que luego borrarás.

    Login form mockup saved as log.PNG and opened in the Windows Photos app, the kind of flat design screenshot you hand to an AI model to have rebuilt
    El punto de partida: una tarjeta de login guardada en PNG, sin convertir nada todavía.Ver en 1:02
  2. 2

    Abre el conversor y mira sus cuatro entradas

    Tras la instalación local, http://localhost:5173 te da una caja de subida y tres atajos: Record Screen (grabar un sitio en vivo), Enter URL con Capture (el propio conversor captura una URL) e Import from Code (pegar HTML existente para seguir editándolo). El desplegable Generating elige la pila —HTML + Tailwind, HTML + CSS, React + Tailwind, Vue + Tailwind, Bootstrap o Ionic + Tailwind—. No hay cuentas de por medio; la app habla directo con tu proveedor de modelos.

    Screenshot to Code running on localhost:5173 with HTML + Tailwind selected and all four input paths visible: the drag and drop box, Record Screen, Enter URL with Capture, and Import from Code
    El recibidor de la versión autoalojada: zona de arrastre, grabación de pantalla, captura por URL e importación de código.Ver en 4:00

Instalar el conversor open source gratuito

  1. 3

    Revisa el equipo antes de instalar

    La app es un frontend React/Vite con un backend FastAPI, y la ruta Docker necesita un Docker Engine funcionando. Fahd Mirza comprueba primero su máquina con cat /etc/*release —aquí Ubuntu 22.04.4 LTS— porque los comandos siguientes dan por hecho un shell POSIX y docker compose disponible. macOS y Windows sirven igual mientras Docker Desktop esté corriendo.

    Ubuntu terminal printing cat /etc/*release down to PRETTY_NAME Ubuntu 22.04.4 LTS, the host check to run before installing screenshot-to-code with Docker
    Una comprobación de dos segundos: Ubuntu 22.04.4 LTS con Docker Desktop detrás.Ver en 2:12
  2. 4

    Clona el repo y mete una clave en backend/.env

    Ejecuta git clone https://github.com/abi/screenshot-to-code, entra en el directorio y escribe la clave en el archivo .env que lee el stack de Compose —la línea del README es literalmente echo "OPENAI_API_KEY=sk-your-key" > .env—. Con una basta para arrancar; OpenAI, Anthropic y Gemini son las tres que acepta el README, y añadir más permite que la app elija una mezcla de modelos más potente en cada generación. DeepSeek no está en esa lista, y la pregunta 2 de las FAQ explica por qué el override de OpenAI Base URL no lo cambia.

    Terminal inside the cloned screenshot-to-code folder writing echo OPENAI_API_KEY=sk-your-key into the backend .env file, still holding the placeholder key from the README
    La clave de ejemplo del README, escrita en el archivo que el backend carga al arrancar.Ver en 2:55
  3. 5

    Compila y levanta los dos contenedores con un comando

    Desde la raíz del repositorio, docker compose up -d --build baja las imágenes base, instala Poetry para el backend y los paquetes de yarn para el frontend, y deja ambos corriendo en segundo plano. Con la caché vacía espera unos minutos: el archivo Compose publica el backend en el puerto 7001 y el frontend en el 5173. El README avisa de que esta vía es para ejecutar, no para desarrollar: cambiar archivos no dispara una recompilación.

    Command line at the root of the screenshot-to-code repository with docker compose up -d --build typed out and ready to start
    Toda la instalación es un comando; con -d queda en segundo plano y puedes cerrar la terminal.Ver en 3:25
  4. 6

    Mira cómo se construyen las capas de backend y frontend

    El log es lo útil cuando algo falla: backend 2/7 RUN pip install "poetry==1.4.1" y frontend 4/5 RUN yarn install son las capas que se rompen detrás de un proxy o en una red cerrada. Si se atasca ahí, casi siempre se arregla con el DNS de Docker o un mirror de npm, no con la app. Cuando termina la última capa, localhost:5173 empieza a responder.

    Docker build log for screenshot-to-code at 20.2 seconds, backend layer 2 of 7 installing poetry 1.4.1 while frontend layer 4 of 5 runs yarn install
    A los 20 segundos de compilación, ambas imágenes ya pasaron sus capas de dependencias.Ver en 3:45

Convertir, guardar, afinar

  1. 7

    Arrastra la captura dentro

    Suelta el archivo sobre la caja de línea discontinua o haz clic para abrir el selector; la imagen queda en el rail izquierdo como ORIGINAL SCREENSHOT y se queda ahí como referencia para todas las versiones posteriores. Oscuro o claro es una preferencia bajo el icono de engranaje, no una diferencia funcional. Ese diálogo de ajustes es también donde puedes pegar las claves sin tocar el .env: el README indica que las claves fijadas ahí solo viven en tu navegador y sobreescriben la configuración del .env.

    Screenshot to Code switched to dark mode with the dashed Drag and drop a screenshot here box empty and HTML + Tailwind still set as the generating target
    La misma app en tema oscuro, esperando el archivo —la zona de arrastre es casi toda la interfaz—.Ver en 4:45
  2. 8

    Genera y compara las variantes

    La app lanza varios modelos por prompt para que elijas un resultado en vez de aceptar el primero: Option 1 y Option 2 son pestañas sobre la misma captura, y cuántas salen depende de NUM_VARIANTS en backend/config.py —cuatro con entrada de imagen, dos con vídeo—. El código entra en la barra lateral a medida que se produce, con un botón Cancel si la dirección es equivocada. Cada ejecución queda en Versions, así que experimentar no hace perder nada.

    Screenshot to Code mid-generation with Option 1 highlighted over Option 2, a Cancel button under the Generating code spinner, and the uploaded page held as ORIGINAL SCREENSHOT above Create v1
    Dos variantes de la misma captura a media generación, con el original fijado debajo.Ver en 5:00
  3. 9

    Tres lecturas: Desktop, Mobile y Code

    El panel de vista previa tiene tres interruptores —Desktop, Mobile y Code—, y para entregar lo que importa es Code, porque muestra el marcado bruto que puedes copiar. Reset descarta la ejecución, Download la exporta, y bajo las variantes están Update (enviar otra instrucción), Regenerate (repetir la misma) y Select and update (encuadrar la zona que quieres cambiar). Aquí el screenshot-to-code deja de ser demo y se vuelve un bucle de edición.

    Rebuilt channel banner page rendered inside the Screenshot to Code preview pane, with Desktop, Mobile and Code switches top right and Reset, Download, Regenerate and Select and update around it
    La página reconstruida junto a los controles para seguir trabajando sobre ella.Ver en 5:20
  4. 10

    Guarda el marcado como un .html corriente

    Copia el código de la pestaña Code a un archivo —aquí test.html dentro de mycode— y con eso termina todo el paso de compilación. La salida es HTML autocontenido con clases de Tailwind, así que no hay instalación de paquetes ni servidor de desarrollo entre tú y la página. Si lo quieres dentro de un árbol de componentes real, pégalo en un archivo React o Vue y readapta ahí los nombres de clase.

    Ubuntu Files window in the mycode folder with a 3.1 kB test.html selected and the right-click menu open on Open With Firefox
    Un archivo, 3,1 kB, abierto en Firefox con clic derecho.Ver en 5:40
  5. 11

    Ábrelo desde el disco y comprueba qué sobrevivió

    Cargar el archivo directamente desde el sistema de ficheros demuestra que el resultado funciona sin servidor. Compáralo luego sin indulgencia con la miniatura ORIGINAL SCREENSHOT: layout, jerarquía tipográfica y espaciados suelen pasar bien, mientras que logos y fotos de terceros son lo que se aproxima —por eso el README recomienda con fuerza una clave de Gemini (hace la extracción de recursos, reutilizando las imágenes reales de la captura) y una de Replicate (generación de imágenes y recorte de fondo). Lo que falte es una instrucción más, no una reescritura.

    The generated markup opened as a plain local file at file:///home/Ubuntu/mycode/test.html, showing the rebuilt HELPING YOU BECOME AI CLOUD ENGINEER page with no server behind it
    La página convertida corriendo desde el disco local, con banner y cabecera reconstruidos.Ver en 6:12
  6. 12

    Afina con un prompt de actualización, no regenerando

    Escribe el cambio en la caja bajo las variantes —aquí «change the background color to deep blue»— y la app produce una versión nueva en lugar de una página nueva, así que Versions conserva las dos: Create v1 y la actualización como v2. Marcar «Include screenshot of current version?» envía también el render actual, que es lo que evita que un ajuste derive de vuelta a un layout genérico. Ese bucle es la razón por la que instalarla merece la pena.

    Screenshot to Code Versions list after one refinement, change the background color to deep blue stored as v2 above Create v1 while new HTML streams into the preview
    Una instrucción después, el cambio queda guardado como v2 y v1 sigue a un clic.Ver en 6:45

Vía B: DeepSeek mira la imagen

  1. 13

    Vía B: adjunta la captura a DeepSeek

    Si prefieres no instalar nada, DeepSeek acepta la imagen directamente en su producto de chat: el clip añade log.PNG, el compositor lo muestra como adjunto de 68,14 KB, y la instrucción es una frase —«give me html and css code for this image in a single html file»—. La chip de esta grabación dice DeepThink (R1); las etiquetas del selector cambian más rápido que los tutoriales, así que confía en el mecanismo, no en el rótulo. Lo que vuelve es un archivo que pegas y abres.

    chat.deepseek.com composer holding an attached log.PNG of 68.14KB with the DeepThink chip on and the paperclip button used to add the screenshot
    La captura adjunta en el chat de DeepSeek, con debajo la exigencia de un solo archivo HTML.Ver en 1:22
  2. 14

    Lee el plan antes que el código

    El panel de razonamiento es donde se ve si el modelo miró de verdad: enumera el encabezado «Login», las etiquetas «User Name» y «Password», los campos de entrada y el botón Submit, y luego elige flexbox con justify-content y align-items centrados a 100vh de alto. Cuando una reconstrucción sale mal, ese es el punto que hay que revisar —un modelo que se saltó las etiquetas devuelve un formulario sin etiquetas—. Despliégalo, y si la descripción falla, recorta de nuevo la captura y reenvíala.

    DeepSeek Thought for 10 seconds panel working through the attached mockup, naming the Login heading, the User Name and Password labels and the Flexbox centering it plans to write
    Diez segundos de razonamiento: el modelo nombra cada elemento que piensa reproducir.Ver en 1:45
  3. 15

    Vista previa y a por el código

    DeepSeek renderiza su propia respuesta en un modal de vista previa —la tarjeta de login reconstruida con etiquetas apiladas, dos campos y un Submit azul a ancho completo, bajo el rótulo «AI-generated, for reference only»—. Es una simplificación, no un clon: los halos de degradado y los iconos de campo de la maqueta desaparecieron. Copia el HTML, guárdalo como index.html y ábrelo, igual que en los pasos 10 y 11. Por decirlo claro: tanto el chat de DeepSeek como su API aceptan imágenes, pero los generadores de solo texto —incluido el generador de artefactos de este sitio— no; ahí describe la interfaz con palabras en vez de esperar que vea tu captura.

    DeepSeek HTML preview modal showing the rebuilt login card with User Name and Password fields and a full-width blue Submit button, captioned AI-generated for reference only
    La tarjeta reconstruida dentro de la vista previa de DeepSeek: bastante cerca para seguir, bastante simplificada para revisar.Ver en 2:48

Preguntas sobre screenshot to code y el modelo Vision de DeepSeek

Sigue leyendo