<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
    <url>
      <loc>https://www.franpradas.com</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com"/>
      <priority>1.0</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com"/>
      <priority>0.9</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/sobre-mi</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/sobre-mi"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/sobre-mi"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/sobre-mi"/>
      <priority>0.8</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/sobre-mi</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/sobre-mi"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/sobre-mi"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/sobre-mi"/>
      <priority>0.7</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/empresas-y-productos</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/empresas-y-productos"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/empresas-y-productos"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/empresas-y-productos"/>
      <priority>0.8</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/empresas-y-productos</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/empresas-y-productos"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/empresas-y-productos"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/empresas-y-productos"/>
      <priority>0.7</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/trayectoria</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/trayectoria"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/trayectoria"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/trayectoria"/>
      <priority>0.8</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/trayectoria</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/trayectoria"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/trayectoria"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/trayectoria"/>
      <priority>0.7</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos"/>
      <priority>0.7</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos</loc>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos"/>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app</loc>
      <lastmod>2026-09-30</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/docs-your-ai-needs-to-build-your-app"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app.jpg</video:thumbnail_loc>
        <video:title>Los 14 documentos que tu IA necesita para programar tu app</video:title>
        <video:description>Que la IA escriba código es lo fácil. Lo difícil es explicarle cómo tiene que funcionar tu producto, cómo se construye y cómo saber que funciona. Estos son los documentos que lo resuelven, con un ejemplo completo de cada uno.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/30.mp4</video:content_loc>
        <video:publication_date>2026-09-30T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/docs-your-ai-needs-to-build-your-app</loc>
      <lastmod>2026-09-30</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/docs-your-ai-needs-to-build-your-app"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/documentos-que-tu-ia-necesita-para-programar-tu-app.jpg</video:thumbnail_loc>
        <video:title>The 14 documents your AI needs to build your app</video:title>
        <video:description>Getting the AI to write code is the easy part. The hard part is explaining how your product has to work, how it is built and how to know it works. These are the documents that solve it, with a full example of each one.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/30.mp4</video:content_loc>
        <video:publication_date>2026-09-30T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia</loc>
      <lastmod>2026-09-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/ai-built-website-that-does-not-look-ai-built"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/taste-skill.webp</image:loc>
        <image:caption>github.com/Leonxlnx/taste-skill</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/slop/21st.webp</image:loc>
        <image:caption>21st.dev: cada componente con su prompt</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/slop/magicui.webp</image:loc>
        <image:caption>Magic UI</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/slop/reactbits.webp</image:loc>
        <image:caption>React Bits</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia.jpg</video:thumbnail_loc>
        <video:title>6 cosas para que tu web hecha con IA no parezca hecha con IA</video:title>
        <video:description>Skills de diseño, componentes con prompt, capturas y HTML de otras webs, ideas con ChatGPT, Motion y GSAP, y vídeo ligado al scroll. Lo que hago para que una web no parezca de plantilla.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/29.mp4</video:content_loc>
        <video:publication_date>2026-09-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/ai-built-website-that-does-not-look-ai-built</loc>
      <lastmod>2026-09-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/ai-built-website-that-does-not-look-ai-built"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/taste-skill.webp</image:loc>
        <image:caption>github.com/Leonxlnx/taste-skill</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/slop/21st.webp</image:loc>
        <image:caption>21st.dev: every component with its prompt</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/slop/magicui.webp</image:loc>
        <image:caption>Magic UI</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/slop/reactbits.webp</image:loc>
        <image:caption>React Bits</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/web-hecha-con-ia-que-no-parezca-hecha-con-ia.jpg</video:thumbnail_loc>
        <video:title>6 things so your AI-built website does not look AI-built</video:title>
        <video:description>Design skills, components with a prompt, screenshots and HTML from other sites, ideas from ChatGPT, Motion and GSAP, and scroll-driven video. What I do so a website does not look templated.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/29.mp4</video:content_loc>
        <video:publication_date>2026-09-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas</loc>
      <lastmod>2026-09-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/how-to-study-for-exams-without-overstudying"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/trio-claude.webp</image:loc>
        <image:caption>Obsidian, Claude y NotebookLM</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/trio-chatgpt.webp</image:loc>
        <image:caption>Obsidian, ChatGPT y NotebookLM</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/obsidian-vault.webp</image:loc>
        <image:caption>El vault en Obsidian: tres carpetas y el panel del día</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/temas.webp</image:loc>
        <image:caption>Los 40 temas el día 1. El estado cambia: pendiente, estudiado, dominado</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-setup.webp</image:loc>
        <image:caption>Día 0: el prompt en Claude Desktop</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/claude-desarrollador.webp</image:loc>
        <image:caption>Claude Desktop: Ajustes, Desarrollador, Editar configuración</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt.webp</image:loc>
        <image:caption>El PDF y el vault entran. Sale el tema clasificado: conocido, errores, nuevo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-estudio.webp</image:loc>
        <image:caption>El prompt diario, antes de estudiar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-fuentes.webp</image:loc>
        <image:caption>El cuaderno con los temas como fuentes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-studio.webp</image:loc>
        <image:caption>El panel Studio de NotebookLM</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-mapa.webp</image:loc>
        <image:caption>Mapa mental del tema 4 generado desde Studio</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-preguntas.webp</image:loc>
        <image:caption>Solo el tema 4 activado y las 10 preguntas de diagnóstico</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-test.webp</image:loc>
        <image:caption>El cuestionario del tema 4 en difícil, desde el panel Studio</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-errores.webp</image:loc>
        <image:caption>NotebookLM corrige el test y devuelve los fallos en el formato que se pega en {{tool}}</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/errores.webp</image:loc>
        <image:caption>Los fallos del test acaban como notas de error con contador y prioridad</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-errores.webp</image:loc>
        <image:caption>Después del test: pegas los fallos</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-hoy.webp</image:loc>
        <image:caption>Cada mañana</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/loop.webp</image:loc>
        <image:caption>El bucle y el panel del día</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas.jpg</video:thumbnail_loc>
        <video:title>Cómo estudiar oposiciones sin estudiar de más</video:title>
        <video:description>Obsidian guarda lo que ya sabes y dónde fallas, Claude o ChatGPT deciden en qué centrarte y NotebookLM te obliga a practicar. El sistema completo, con los cinco prompts.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/28.mp4</video:content_loc>
        <video:publication_date>2026-09-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/how-to-study-for-exams-without-overstudying</loc>
      <lastmod>2026-09-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/how-to-study-for-exams-without-overstudying"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/trio-claude.webp</image:loc>
        <image:caption>Obsidian, Claude and NotebookLM</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/trio-chatgpt.webp</image:loc>
        <image:caption>Obsidian, ChatGPT and NotebookLM</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/obsidian-vault.webp</image:loc>
        <image:caption>The vault in Obsidian: three folders and the daily panel</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/temas.webp</image:loc>
        <image:caption>The 40 topics on day 1. The state changes: pendiente, estudiado, dominado</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-setup.webp</image:loc>
        <image:caption>Day 0: the prompt in Claude Desktop</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/claude-desarrollador.webp</image:loc>
        <image:caption>Claude Desktop: Settings, Developer, Edit config</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt.webp</image:loc>
        <image:caption>The PDF and the vault go in. Out comes the topic sorted: known, errors, new</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-estudio.webp</image:loc>
        <image:caption>The daily prompt, before studying</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-fuentes.webp</image:loc>
        <image:caption>The notebook with the topics as sources</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-studio.webp</image:loc>
        <image:caption>NotebookLM&apos;s Studio panel</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-mapa.webp</image:loc>
        <image:caption>Mind map of topic 4, generated from Studio</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-preguntas.webp</image:loc>
        <image:caption>Only topic 4 enabled and the 10 diagnostic questions</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-test.webp</image:loc>
        <image:caption>The topic 4 quiz on hard, from the Studio panel</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/notebooklm-errores.webp</image:loc>
        <image:caption>NotebookLM grades the test and returns the misses in the format you paste into {{tool}}</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/errores.webp</image:loc>
        <image:caption>Test misses end up as error notes with a counter and a priority</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-errores.webp</image:loc>
        <image:caption>After the test: paste the misses</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/prompt-hoy.webp</image:loc>
        <image:caption>Every morning</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/oposiciones/loop.webp</image:loc>
        <image:caption>The loop and the daily panel</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/como-estudiar-oposiciones-sin-estudiar-de-mas.jpg</video:thumbnail_loc>
        <video:title>How to study for exams without overstudying</video:title>
        <video:description>Obsidian remembers what you already know and where you fail, Claude or ChatGPT decide what to focus on and NotebookLM makes you practise. The whole system, with the five prompts.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/28.mp4</video:content_loc>
        <video:publication_date>2026-09-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/deja-de-perder-dinero-al-montar-una-app</loc>
      <lastmod>2026-09-17</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/deja-de-perder-dinero-al-montar-una-app"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/stop-losing-money-building-an-app"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/deja-de-perder-dinero-al-montar-una-app"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/landing.webp</image:loc>
        <image:caption>Qué es, para quién, y un botón de «Comprar»</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/formulario.webp</image:loc>
        <image:caption>Al pulsar «Comprar»: todavía no está, te avisamos</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/oferta.webp</image:loc>
        <image:caption>Al enviar el formulario, la oferta</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/tarjeta.webp</image:loc>
        <image:caption>0 € hoy, 20 € al mes cuando esté disponible</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/analiticas.webp</image:loc>
        <image:caption>El embudo entero: de 12.486 visitas a 1.049 suscripciones</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/redes.webp</image:loc>
        <image:caption>El mismo nombre, la misma foto y la misma frase en todas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/bio.webp</image:loc>
        <image:caption>La bio pasa a decir «Compra aquí» con el enlace debajo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/bio-detalle.webp</image:loc>
        <image:caption>De cerca</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/contenido.webp</image:loc>
        <image:caption>Cuatro formatos, un solo tema: el café que tomas en casa</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/comenta.webp</image:loc>
        <image:caption>La misma llamada al final de cada vídeo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/datos.webp</image:loc>
        <image:caption>Las mismas señales en una idea que no tira y en una que sí. Números orientativos</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/deja-de-perder-dinero-al-montar-una-app.jpg</video:thumbnail_loc>
        <video:title>DEJA DE PERDER DINERO al montar una app o servicio</video:title>
        <video:description>Antes de construir nada, comprueba que alguien lo quiere pagar. Estos son los diez pasos que sigo para validar una idea sin gastar nada de dinero.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/27.mp4</video:content_loc>
        <video:publication_date>2026-09-17T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/stop-losing-money-building-an-app</loc>
      <lastmod>2026-09-17</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/deja-de-perder-dinero-al-montar-una-app"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/stop-losing-money-building-an-app"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/deja-de-perder-dinero-al-montar-una-app"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/landing.webp</image:loc>
        <image:caption>What it is, who it is for, and a «Buy» button</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/formulario.webp</image:loc>
        <image:caption>After clicking «Buy»: not available yet, we will let you know</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/oferta.webp</image:loc>
        <image:caption>After submitting the form, the offer</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/tarjeta.webp</image:loc>
        <image:caption>0 € today, 20 € a month once it is available</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/analiticas.webp</image:loc>
        <image:caption>The whole funnel: from 12,486 visits to 1,049 subscriptions</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/redes.webp</image:loc>
        <image:caption>Same name, same picture and same line everywhere</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/bio.webp</image:loc>
        <image:caption>The bio now says «Buy here» with the link below</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/bio-detalle.webp</image:loc>
        <image:caption>Up close</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/contenido.webp</image:loc>
        <image:caption>Four formats, one topic: the coffee you drink at home</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/comenta.webp</image:loc>
        <image:caption>The same call to action at the end of every video</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/validar/datos.webp</image:loc>
        <image:caption>The same signals in an idea that does not take off and in one that does. Indicative numbers</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/deja-de-perder-dinero-al-montar-una-app.jpg</video:thumbnail_loc>
        <video:title>STOP LOSING MONEY when building an app or service</video:title>
        <video:description>Before building anything, check that someone wants to pay for it. These are the ten steps I follow to validate an idea without spending any money.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/27.mp4</video:content_loc>
        <video:publication_date>2026-09-17T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios</loc>
      <lastmod>2026-09-13</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/how-to-scale-your-app-from-1000-to-1-million-users"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/base-de-datos.svg</image:loc>
        <image:caption>Las seis guardan datos. Lo que cambia es lo que te dejan preguntar después</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/unidad.svg</image:loc>
        <image:caption>Un millón de registrados caben en una máquina pequeña si no entran a la vez</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/indices.svg</image:loc>
        <image:caption>Es el mismo índice. Solo cambia cuándo te acordaste de él</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/una-maquina.svg</image:loc>
        <image:caption>Un proceso, una base de datos gestionada y un CDN delante de lo estático</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/cache.svg</image:loc>
        <image:caption>Cada capa que contesta es una petición que las de abajo no ven</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/pool.svg</image:loc>
        <image:caption>Veinte conexiones de verdad dando servicio a quinientos clientes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/horizontal.svg</image:loc>
        <image:caption>Las tres condiciones que se cumplen antes de duplicar el servidor</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/replicas.svg</image:loc>
        <image:caption>La lectura se reparte; la escritura sigue yendo a un solo sitio</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/colas.svg</image:loc>
        <image:caption>Los recados siguen ocurriendo, pero ya no mientras el usuario mira la ruedecita</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/sharding.svg</image:loc>
        <image:caption>Los cuatro peldaños que van antes, y el quinto solo si no queda otra</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios.jpg</video:thumbnail_loc>
        <video:title>Cómo escalar tu app de 1.000 a 1 millón de usuarios</video:title>
        <video:description>Estas son las fases por las que deberías pasar para poder escalar bien tu aplicación y no perder usuarios por el camino.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/26.mp4</video:content_loc>
        <video:publication_date>2026-09-13T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/how-to-scale-your-app-from-1000-to-1-million-users</loc>
      <lastmod>2026-09-13</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/how-to-scale-your-app-from-1000-to-1-million-users"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/base-de-datos.svg</image:loc>
        <image:caption>All six store data. What changes is what they let you ask afterwards</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/unidad.svg</image:loc>
        <image:caption>A million registered users fit on a small machine if they do not show up at once</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/indices.svg</image:loc>
        <image:caption>It is the same index. Only when you remembered it changes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/una-maquina.svg</image:loc>
        <image:caption>One process, one managed database and a CDN in front of the static files</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/cache.svg</image:loc>
        <image:caption>Every layer that answers is a request the ones below never see</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/pool.svg</image:loc>
        <image:caption>Twenty real connections serving five hundred clients</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/horizontal.svg</image:loc>
        <image:caption>The three conditions you meet before doubling the server</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/replicas.svg</image:loc>
        <image:caption>Reads get spread out; writes still go to a single place</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/colas.svg</image:loc>
        <image:caption>The errands still happen, just not while the user watches the spinner</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/escalar/sharding.svg</image:loc>
        <image:caption>The four rungs that come first, and the fifth only if there is no other way</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/como-escalar-tu-app-de-1000-a-1-millon-de-usuarios.jpg</video:thumbnail_loc>
        <video:title>How to scale your app from 1,000 to 1 million users</video:title>
        <video:description>These are the phases you should go through to scale your application properly and not lose users along the way.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/26.mp4</video:content_loc>
        <video:publication_date>2026-09-13T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/vibecoder-esto-es-lo-unico-que-necesitas</loc>
      <lastmod>2026-09-05</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/vibecoder-esto-es-lo-unico-que-necesitas"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/vibecoder-the-only-stack-you-need"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/vibecoder-esto-es-lo-unico-que-necesitas"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/stack.svg</image:loc>
        <image:caption>Nueve casillas. Cada una hace una cosa y no se pisa con las demás</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/repositorio.svg</image:loc>
        <image:caption>Cinco minutos que te dan historial, copias y el enchufe para todo lo demás</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/clonar.svg</image:loc>
        <image:caption>El puente entre la nube y tu carpeta, sin escribir un comando</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/claude.svg</image:loc>
        <image:caption>Tú decides qué se construye; ellos teclean</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/rules.svg</image:loc>
        <image:caption>Se lee antes de tocar código y se actualiza antes de cerrar el día</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/vercel.svg</image:loc>
        <image:caption>De push a URL pública sin tocar un servidor</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/supabase.svg</image:loc>
        <image:caption>Las cuatro capas que te ahorran un mes de trabajo de backend</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/railway.svg</image:loc>
        <image:caption>Para lo que no puede vivir en el navegador: crons, webhooks, trabajos largos</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/stripe.svg</image:loc>
        <image:caption>El pago pasa en Stripe; a ti solo te llega el aviso</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/resend.svg</image:loc>
        <image:caption>Del dominio verificado a la bandeja de entrada, no a spam</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/dominio.svg</image:loc>
        <image:caption>Compra el nombre y di que no a todo lo demás</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/cloudflare.svg</image:loc>
        <image:caption>Un proxy delante de tu web; el SSL ya te lo pone Vercel</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/analiticas.svg</image:loc>
        <image:caption>GA4 te dice de dónde vienen; PostHog, qué hacen cuando llegan</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/movil.svg</image:loc>
        <image:caption>El encargo sale de la app de Claude; el código aparece en tu repositorio</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/openclaw.svg</image:loc>
        <image:caption>Un comando para instalarlo y tu WhatsApp para hablarle; la máquina, siempre encendida</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/computeruse.svg</image:loc>
        <image:caption>Vale para cualquier panel; lo delicado lo confirmas tú</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/mcps.svg</image:loc>
        <image:caption>Cada herramienta se conecta una vez, y Claude la usa desde el chat</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/vibecoder-esto-es-lo-unico-que-necesitas.jpg</video:thumbnail_loc>
        <video:title>VIBECODER: esto es lo ÚNICO que necesitas</video:title>
        <video:description>Si quieres montar una aplicación mientras ves Netflix, esto es todo lo que tienes que hacer. Te explico paso a paso la configuración que uso ahora mismo.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/25.mp4</video:content_loc>
        <video:publication_date>2026-09-05T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/vibecoder-the-only-stack-you-need</loc>
      <lastmod>2026-09-05</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/vibecoder-esto-es-lo-unico-que-necesitas"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/vibecoder-the-only-stack-you-need"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/vibecoder-esto-es-lo-unico-que-necesitas"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/stack.svg</image:loc>
        <image:caption>Nine boxes. Each one does one thing and none steps on the others</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/repositorio.svg</image:loc>
        <image:caption>Five minutes that buy you history, backups and the socket everything else plugs into</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/clonar.svg</image:loc>
        <image:caption>The bridge between the cloud and your folder, without typing a command</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/claude.svg</image:loc>
        <image:caption>You decide what gets built; they do the typing</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/rules.svg</image:loc>
        <image:caption>Read before touching code, updated before closing the day</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/vercel.svg</image:loc>
        <image:caption>From push to public URL without touching a server</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/supabase.svg</image:loc>
        <image:caption>The four layers that save you a month of backend work</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/railway.svg</image:loc>
        <image:caption>For what cannot live in the browser: crons, webhooks, long jobs</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/stripe.svg</image:loc>
        <image:caption>The payment happens on Stripe; you only get the notification</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/resend.svg</image:loc>
        <image:caption>From a verified domain to the inbox, not to spam</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/dominio.svg</image:loc>
        <image:caption>Buy the name and say no to everything else</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/cloudflare.svg</image:loc>
        <image:caption>A proxy in front of your site; the SSL already comes from Vercel</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/analiticas.svg</image:loc>
        <image:caption>GA4 tells you where they come from; PostHog, what they do once inside</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/movil.svg</image:loc>
        <image:caption>The order leaves the Claude app; the code shows up in your repository</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/openclaw.svg</image:loc>
        <image:caption>One command to install it and your WhatsApp to talk to it; the machine, always on</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/computeruse.svg</image:loc>
        <image:caption>It works for any panel; you confirm anything delicate</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/vibecoder/mcps.svg</image:loc>
        <image:caption>Each tool connects once, and Claude uses it from the chat</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/vibecoder-esto-es-lo-unico-que-necesitas.jpg</video:thumbnail_loc>
        <video:title>VIBECODER: this is the ONLY stack you need</video:title>
        <video:description>If you want to build an application while watching Netflix, this is all you have to do. I walk you step by step through the setup I am using right now.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/25.mp4</video:content_loc>
        <video:publication_date>2026-09-05T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/cosas-que-nunca-haria-con-claude</loc>
      <lastmod>2026-09-01</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/cosas-que-nunca-haria-con-claude"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/things-i-would-never-do-with-claude"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/cosas-que-nunca-haria-con-claude"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/proyectos.svg</image:loc>
        <image:caption>El mismo trabajo, con y sin contexto guardado</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/reglas.svg</image:loc>
        <image:caption>Una instrucción que se puede comprobar y una que no</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/rules.svg</image:loc>
        <image:caption>Lo que aprende hoy no se pierde al cerrar la pestaña</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/consejo.svg</image:loc>
        <image:caption>La misma decisión, mirada desde cuatro sitios</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/cruzado.svg</image:loc>
        <image:caption>Dos agentes distintos, revisándose el trabajo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/plan.svg</image:loc>
        <image:caption>Corregir diez líneas o corregir cuatrocientas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/citas.svg</image:loc>
        <image:caption>Lo que no acepto y lo que pido</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/loops.svg</image:loc>
        <image:caption>Un bucle en vez de una pregunta suelta</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/mcps.svg</image:loc>
        <image:caption>Un enchufe estándar para cada herramienta que ya usas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/conectores.svg</image:loc>
        <image:caption>De responder preguntas a hacer cosas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/leads.svg</image:loc>
        <image:caption>El que contesta a los interesados, paso a paso</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/reuniones.svg</image:loc>
        <image:caption>La misma salida, todas las veces</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/informes.svg</image:loc>
        <image:caption>El informe está antes de que abras el portátil</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/skills.svg</image:loc>
        <image:caption>Lo que convierte un generalista en un especialista</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/permisos.svg</image:loc>
        <image:caption>Lo que le dejo hacer y lo que no</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/modelos.svg</image:loc>
        <image:caption>Lo que cuesta cada respuesta, de Fable a Haiku</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/infra.svg</image:loc>
        <image:caption>Una herramienta se abre; la infraestructura ya está funcionando</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/dictado.svg</image:loc>
        <image:caption>Lo que le cuentas escribiendo y lo que le cuentas hablando</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/cosas-que-nunca-haria-con-claude.jpg</video:thumbnail_loc>
        <video:title>Cosas que NUNCA haría después de utilizar Claude +1000 horas</video:title>
        <video:description>Empecé a usar Claude Code en octubre del año pasado. Con el tiempo, he dejado de hacer cosas que antes hacía mal. Son sencillas y tardas nada en corregirlas.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/24.mp4</video:content_loc>
        <video:publication_date>2026-09-01T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/things-i-would-never-do-with-claude</loc>
      <lastmod>2026-09-01</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/cosas-que-nunca-haria-con-claude"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/things-i-would-never-do-with-claude"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/cosas-que-nunca-haria-con-claude"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/proyectos.svg</image:loc>
        <image:caption>The same work, with and without saved context</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/reglas.svg</image:loc>
        <image:caption>An instruction you can check and one you cannot</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/rules.svg</image:loc>
        <image:caption>What it learns today is not lost when you close the tab</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/consejo.svg</image:loc>
        <image:caption>The same decision, seen from four places</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/cruzado.svg</image:loc>
        <image:caption>Two different agents, reviewing each other&apos;s work</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/plan.svg</image:loc>
        <image:caption>Fixing ten lines or fixing four hundred</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/citas.svg</image:loc>
        <image:caption>What I do not accept and what I ask for</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/loops.svg</image:loc>
        <image:caption>A loop instead of a one-off question</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/mcps.svg</image:loc>
        <image:caption>A standard plug for every tool you already use</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/conectores.svg</image:loc>
        <image:caption>From answering questions to doing things</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/leads.svg</image:loc>
        <image:caption>The one that answers enquiries, step by step</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/reuniones.svg</image:loc>
        <image:caption>The same output, every single time</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/informes.svg</image:loc>
        <image:caption>The report is done before you open the laptop</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/skills.svg</image:loc>
        <image:caption>What turns a generalist into a specialist</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/permisos.svg</image:loc>
        <image:caption>What I let it do and what I do not</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/modelos.svg</image:loc>
        <image:caption>What each answer costs, from Fable to Haiku</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/infra.svg</image:loc>
        <image:caption>A tool gets opened; infrastructure is already running</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/nunca/dictado.svg</image:loc>
        <image:caption>What you tell it typing and what you tell it talking</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/cosas-que-nunca-haria-con-claude.jpg</video:thumbnail_loc>
        <video:title>Things I would NEVER do after using Claude for 1000+ hours</video:title>
        <video:description>I started using Claude in October last year. Over time I have stopped doing things I used to do badly. They are simple, and fixing them takes no time at all.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/24.mp4</video:content_loc>
        <video:publication_date>2026-09-01T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/vibecoders-rompiendo-produccion</loc>
      <lastmod>2026-09-01</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/vibecoders-rompiendo-produccion"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/vibecoders-breaking-production"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/vibecoders-rompiendo-produccion"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/flujos.svg</image:loc>
        <image:caption>El camino entero, de la primera pantalla al último clic</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/cuentas.svg</image:loc>
        <image:caption>Las cuatro puertas de una cuenta, y la que nadie prueba</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/roles.svg</image:loc>
        <image:caption>Cada casilla, con una cuenta de cada tipo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/entorno.svg</image:loc>
        <image:caption>Lo que hay en tu portátil y lo que hay en producción</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/secretos.svg</image:loc>
        <image:caption>Cinco sitios donde acaba un secreto sin que nadie lo escriba</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/pagos.svg</image:loc>
        <image:caption>El pago no termina cuando el usuario ve «gracias»</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/estados.svg</image:loc>
        <image:caption>Las cuatro caras de la misma pantalla</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/movil.svg</image:loc>
        <image:caption>Por dónde te van a entrar, y dónde lo has construido tú</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/restos.svg</image:loc>
        <image:caption>El cementerio de toda aplicación hecha deprisa</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/logs.svg</image:loc>
        <image:caption>Enterarte tú antes de que lo haga el usuario</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/copias.svg</image:loc>
        <image:caption>Una copia que no has restaurado nunca no es una copia</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/rollback.svg</image:loc>
        <image:caption>El mismo fallo, con plan y sin plan</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/precommit.svg</image:loc>
        <image:caption>Lo que se comprueba en segundos y lo que se comprueba en minutos</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/vibecoders-rompiendo-produccion.jpg</video:thumbnail_loc>
        <video:title>Vibecoders rompiendo producción</video:title>
        <video:description>Comprueba todo esto antes de subir tu aplicación a producción. Es fácil. Al final del artículo tienes un prompt para que tu agente lo haga por ti.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/23.mp4</video:content_loc>
        <video:publication_date>2026-09-01T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/vibecoders-breaking-production</loc>
      <lastmod>2026-09-01</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/vibecoders-rompiendo-produccion"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/vibecoders-breaking-production"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/vibecoders-rompiendo-produccion"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/flujos.svg</image:loc>
        <image:caption>The whole path, from the first screen to the last click</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/cuentas.svg</image:loc>
        <image:caption>The four doors into an account, and the one nobody tests</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/roles.svg</image:loc>
        <image:caption>Every cell, with an account of each kind</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/entorno.svg</image:loc>
        <image:caption>What is on your laptop and what is in production</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/secretos.svg</image:loc>
        <image:caption>Five places a secret ends up without anybody writing it there</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/pagos.svg</image:loc>
        <image:caption>The payment does not end when the user sees “thank you”</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/estados.svg</image:loc>
        <image:caption>The four faces of the same screen</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/movil.svg</image:loc>
        <image:caption>Where they will come in, and where you built it</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/restos.svg</image:loc>
        <image:caption>The graveyard of every app built in a hurry</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/logs.svg</image:loc>
        <image:caption>Finding out before your user does</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/copias.svg</image:loc>
        <image:caption>A backup you have never restored is not a backup</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/rollback.svg</image:loc>
        <image:caption>The same failure, with a plan and without one</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/lanzamiento/precommit.svg</image:loc>
        <image:caption>What gets checked in seconds and what gets checked in minutes</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/vibecoders-rompiendo-produccion.jpg</video:thumbnail_loc>
        <video:title>Vibecoders breaking production</video:title>
        <video:description>Check all of this before you push your app to production. It is easy. At the end of the article there is a prompt so your agent does it for you.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/23.mp4</video:content_loc>
        <video:publication_date>2026-09-01T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026</loc>
      <lastmod>2026-09-01</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-security-skills-you-need-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/owasp.svg</image:loc>
        <image:caption>Los fallos por los que entra casi todo el mundo, en orden de frecuencia</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/inyeccion.svg</image:loc>
        <image:caption>Concatenar mezcla datos con instrucciones; parametrizar los mantiene separados</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/control-de-acceso.svg</image:loc>
        <image:caption>Esconder el botón no es lo mismo que comprobar quién pide el dato</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/autenticacion.svg</image:loc>
        <image:caption>La passkey te identifica; el token te deja moverte por las APIs</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/secretos.svg</image:loc>
        <image:caption>Lo que nunca debe estar en el repositorio, y dónde va en su lugar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/cifrado.svg</image:loc>
        <image:caption>Tres momentos distintos en la vida de un dato, y tres protecciones distintas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/cadena-de-suministro.svg</image:loc>
        <image:caption>Instalas veinte paquetes y acabas confiando en mil doscientos autores</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/zero-trust.svg</image:loc>
        <image:caption>Se acabó lo de que estar dentro sea una credencial</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/rate-limiting.svg</image:loc>
        <image:caption>Cuatro capas: cada una filtra lo que la anterior deja pasar</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 skills de seguridad que necesitas saber sí o sí en 2026</video:title>
        <video:description>Las nueve cosas que un desarrollador tiene que saber para no ser la puerta por la que entran. Explicadas sin jerga y con un diagrama cada una.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/22.mp4</video:content_loc>
        <video:publication_date>2026-09-01T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/9-security-skills-you-need-in-2026</loc>
      <lastmod>2026-09-01</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-security-skills-you-need-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/owasp.svg</image:loc>
        <image:caption>The flaws almost everyone gets in through, in order of frequency</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/inyeccion.svg</image:loc>
        <image:caption>Concatenating mixes data with instructions; parameters keep them apart</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/control-de-acceso.svg</image:loc>
        <image:caption>Hiding the button is not the same as checking who asked for the data</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/autenticacion.svg</image:loc>
        <image:caption>The passkey identifies you; the token lets you move around the APIs</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/secretos.svg</image:loc>
        <image:caption>What must never be in the repository, and where it goes instead</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/cifrado.svg</image:loc>
        <image:caption>Three moments in the life of a record, three different protections</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/cadena-de-suministro.svg</image:loc>
        <image:caption>You install twenty packages and end up trusting twelve hundred authors</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/zero-trust.svg</image:loc>
        <image:caption>Being inside stopped counting as a credential</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/seguridad/rate-limiting.svg</image:loc>
        <image:caption>Four layers: each one catches what the previous one let through</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-skills-de-seguridad-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 security skills you absolutely need in 2026</video:title>
        <video:description>The nine things a developer has to know so as not to be the door they come in through. Explained without jargon, one diagram each.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/22.mp4</video:content_loc>
        <video:publication_date>2026-09-01T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes</loc>
      <lastmod>2026-08-30</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/32-million-views-in-one-month"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/instagram.jpg</image:loc>
        <image:caption>Los números de Instagram el último mes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/x.jpg</image:loc>
        <image:caption>Los números de X el último mes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/threads.jpg</image:loc>
        <image:caption>Los números de Threads el último mes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/peldanos.svg</image:loc>
        <image:caption>Cuatro peldaños, no un salto</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/nichos.svg</image:loc>
        <image:caption>El mismo viaje, contado de las dos maneras</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/metodos.svg</image:loc>
        <image:caption>Cinco sitios donde las ideas ya vienen validadas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/mitad.svg</image:loc>
        <image:caption>La mitad que copias y la mitad que no se puede copiar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/pesos.svg</image:loc>
        <image:caption>Los pesos del ranker Phoenix, sacados del &lt;a href=&quot;https://github.com/xai-org/x-algorithm/blob/main/home-mixer/params/param.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;param.rs del repositorio que X publicó&lt;/a&gt;</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/comentarios.svg</image:loc>
        <image:caption>El comentario que se contesta y el que no lo lee ni el autor</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/hook.svg</image:loc>
        <image:caption>Lo que hago siempre y lo que no hago nunca</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/post-iphone.webp</image:loc>
        <image:caption>Cinco líneas, cinco saltos, un emoji y un cierre que obliga a abrir el hilo. 2M de visualizaciones</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/embudos.svg</image:loc>
        <image:caption>La misma estrategia que uso en ventas, aplicada a redes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/ig-seguidores.webp</image:loc>
        <image:caption>Instagram, seguidores en 30 días</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/ig-reproducciones.webp</image:loc>
        <image:caption>Instagram, reproducciones y de dónde vienen</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/threads-general.webp</image:loc>
        <image:caption>Threads, información general de los últimos 30 días</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/threads-audiencia.webp</image:loc>
        <image:caption>Threads, quién me está viendo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/x-impresiones.webp</image:loc>
        <image:caption>X, impresiones diarias de los últimos tres meses</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/x-metricas.webp</image:loc>
        <image:caption>X, el resumen de la cuenta a tres meses</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes.jpg</video:thumbnail_loc>
        <video:title>He hecho 32 millones de visualizaciones en un mes</video:title>
        <video:description>Es más fácil de lo que tú crees. Todo el mundo puede hacerlo. Simplemente lee esto:</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/19.mp4</video:content_loc>
        <video:publication_date>2026-08-30T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/32-million-views-in-one-month</loc>
      <lastmod>2026-08-30</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/32-million-views-in-one-month"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/instagram.jpg</image:loc>
        <image:caption>Instagram&apos;s numbers over the last month</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/x.jpg</image:loc>
        <image:caption>X&apos;s numbers over the last month</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/threads.jpg</image:loc>
        <image:caption>Threads&apos; numbers over the last month</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/peldanos.svg</image:loc>
        <image:caption>Four steps, not one jump</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/nichos.svg</image:loc>
        <image:caption>The same trip, told both ways</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/metodos.svg</image:loc>
        <image:caption>Five places where the ideas come pre-validated</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/mitad.svg</image:loc>
        <image:caption>The half you copy and the half nobody can copy</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/pesos.svg</image:loc>
        <image:caption>The Phoenix ranker weights, taken from &lt;a href=&quot;https://github.com/xai-org/x-algorithm/blob/main/home-mixer/params/param.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;param.rs in the repository X published&lt;/a&gt;</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/comentarios.svg</image:loc>
        <image:caption>The comment that gets a reply and the one the author never reads</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/hook.svg</image:loc>
        <image:caption>What I always do and what I never do</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/post-iphone.webp</image:loc>
        <image:caption>Five lines, five breaks, one emoji and a close that forces you to open the thread. 2M views</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/embudos.svg</image:loc>
        <image:caption>The same strategy I use in sales, applied to social</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/ig-seguidores.webp</image:loc>
        <image:caption>Instagram, followers over 30 days</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/ig-reproducciones.webp</image:loc>
        <image:caption>Instagram, plays and where they come from</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/threads-general.webp</image:loc>
        <image:caption>Threads, overview of the last 30 days</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/threads-audiencia.webp</image:loc>
        <image:caption>Threads, who is watching me</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/x-impresiones.webp</image:loc>
        <image:caption>X, daily impressions over the last three months</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/redes/x-metricas.webp</image:loc>
        <image:caption>X, the account summary over three months</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/he-hecho-32-millones-de-visualizaciones-en-un-mes.jpg</video:thumbnail_loc>
        <video:title>I did 32 million views in one month</video:title>
        <video:description>It is easier than you think. Anyone can do it. Just read this:</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/19.mp4</video:content_loc>
        <video:publication_date>2026-08-30T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/10-automatizaciones-de-ia-para-montar-este-finde</loc>
      <lastmod>2026-08-29</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/10-automatizaciones-de-ia-para-montar-este-finde"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/10-ai-automations-to-build-this-weekend"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/10-automatizaciones-de-ia-para-montar-este-finde"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/10-automatizaciones-de-ia-para-montar-este-finde.jpg</video:thumbnail_loc>
        <video:title>10 automatizaciones de IA que puedes montar este fin de semana</video:title>
        <video:description>No tienes que montarlas todas. Elige una y empieza por ella. Estas automatizaciones te ahorrarán mucho tiempo a la larga.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/18.mp4</video:content_loc>
        <video:publication_date>2026-08-29T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/10-ai-automations-to-build-this-weekend</loc>
      <lastmod>2026-08-29</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/10-automatizaciones-de-ia-para-montar-este-finde"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/10-ai-automations-to-build-this-weekend"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/10-automatizaciones-de-ia-para-montar-este-finde"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/10-automatizaciones-de-ia-para-montar-este-finde.jpg</video:thumbnail_loc>
        <video:title>10 AI automations you can build this weekend</video:title>
        <video:description>You do not have to build them all. Pick one and start there. These automations will save you a lot of time in the long run.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/18.mp4</video:content_loc>
        <video:publication_date>2026-08-29T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/evita-que-te-hackeen-si-haces-vibecoding</loc>
      <lastmod>2026-08-28</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/evita-que-te-hackeen-si-haces-vibecoding"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/dont-get-hacked-if-you-vibecode"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/evita-que-te-hackeen-si-haces-vibecoding"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cloudflare.svg</image:loc>
        <image:caption>Sin nada delante, todo el mundo llama a tu servidor. Con proxy, primero pasan por la puerta</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/https.svg</image:loc>
        <image:caption>Lo que hay que dejar puesto y lo que hay que quitar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/env.svg</image:loc>
        <image:caption>Dos líneas de diferencia entre las dos filas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/claves-en-el-codigo.svg</image:loc>
        <image:caption>La misma llamada, con la clave dentro y con la clave fuera</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rotar.svg</image:loc>
        <image:caption>Borrar la línea no borra nada: es una versión más encima</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/logs-de-despliegue.svg</image:loc>
        <image:caption>Cuatro sitios donde un secreto acaba escrito sin que nadie lo escriba</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/frontend.svg</image:loc>
        <image:caption>La misma clave según de qué lado de la línea esté</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/debug.svg</image:loc>
        <image:caption>El mismo error, contado al usuario y contado a tus registros</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/paneles.svg</image:loc>
        <image:caption>Lo que se monta para salir del paso y nadie vuelve a mirar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cabeceras.svg</image:loc>
        <image:caption>Cada cabecera cierra una forma distinta de usar tu web contra tu usuario</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cors.svg</image:loc>
        <image:caption>Quién puede llamar a tu API desde el navegador de otra persona</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/login.svg</image:loc>
        <image:caption>Todo lo que hay detrás de dos campos y un botón</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rate-limit.svg</image:loc>
        <image:caption>Cuántas contraseñas se prueban en una hora según lo que dejes</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/servidor.svg</image:loc>
        <image:caption>Ocultar el botón no impide la petición; el servidor sí</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rutas.svg</image:loc>
        <image:caption>El orden en el que se atiende una petición cuando todo nace cerrado</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/idor.svg</image:loc>
        <image:caption>El identificador viene del usuario; el permiso sale de la sesión</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rls.svg</image:loc>
        <image:caption>La misma clave del navegador, con la tabla abierta y con la tabla con reglas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/buckets.svg</image:loc>
        <image:caption>El repaso del almacenamiento, que casi nunca se hace</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/validacion.svg</image:loc>
        <image:caption>Si el esquema no lo aprueba, tu lógica ni se entera de que existió</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/sql.svg</image:loc>
        <image:caption>El mismo texto, leído como una orden o leído como un dato</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/nosql.svg</image:loc>
        <image:caption>El mismo problema con otra cara: aquí no se cuela una orden, se cuela un operador</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/subidas.svg</image:loc>
        <image:caption>Cinco comprobaciones antes de que un fichero ajeno toque tu disco</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/dependencias.svg</image:loc>
        <image:caption>El fallo no lo escribes tú: lo instalas y lo arrastras</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/backups.svg</image:loc>
        <image:caption>Una copia sin probar es una carpeta grande, no una copia</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cuentas.svg</image:loc>
        <image:caption>Todo lo que se abre con una sola contraseña tuya</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/incidente.svg</image:loc>
        <image:caption>El orden importa: primero se cierra, después se mira</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/evita-que-te-hackeen-si-haces-vibecoding.jpg</video:thumbnail_loc>
        <video:title>Evita que te hackeen si haces vibecoding</video:title>
        <video:description>Veintiséis agujeros por los que entran en las aplicaciones hechas con IA, de lo que arreglas esta tarde a lo que hay que entender</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/17.mp4</video:content_loc>
        <video:publication_date>2026-08-28T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/dont-get-hacked-if-you-vibecode</loc>
      <lastmod>2026-08-28</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/evita-que-te-hackeen-si-haces-vibecoding"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/dont-get-hacked-if-you-vibecode"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/evita-que-te-hackeen-si-haces-vibecoding"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cloudflare.svg</image:loc>
        <image:caption>With nothing in front, everyone calls your server. With a proxy, they hit the door first</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/https.svg</image:loc>
        <image:caption>What to leave switched on and what to take away</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/env.svg</image:loc>
        <image:caption>Two lines of difference between the two rows</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/claves-en-el-codigo.svg</image:loc>
        <image:caption>The same call, with the key inside and with the key outside</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rotar.svg</image:loc>
        <image:caption>Deleting the line deletes nothing: it is one more version on top</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/logs-de-despliegue.svg</image:loc>
        <image:caption>Four places a secret ends up written without anyone writing it</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/frontend.svg</image:loc>
        <image:caption>The same key, depending on which side of the line it sits</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/debug.svg</image:loc>
        <image:caption>The same error, told to the user and told to your logs</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/paneles.svg</image:loc>
        <image:caption>What gets built to get by, and nobody looks at again</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cabeceras.svg</image:loc>
        <image:caption>Each header closes a different way of using your site against your user</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cors.svg</image:loc>
        <image:caption>Who may call your API from someone else&apos;s browser</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/login.svg</image:loc>
        <image:caption>Everything sitting behind two fields and a button</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rate-limit.svg</image:loc>
        <image:caption>How many passwords get tried in an hour depending on what you allow</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/servidor.svg</image:loc>
        <image:caption>Hiding the button does not stop the request; the server does</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rutas.svg</image:loc>
        <image:caption>The order a request is handled in when everything is born closed</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/idor.svg</image:loc>
        <image:caption>The identifier comes from the user; the permission comes from the session</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/rls.svg</image:loc>
        <image:caption>The same browser key, with the table open and with the table ruled</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/buckets.svg</image:loc>
        <image:caption>The storage pass that almost nobody does</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/validacion.svg</image:loc>
        <image:caption>If the schema does not approve it, your logic never knows it existed</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/sql.svg</image:loc>
        <image:caption>The same text, read as an order or read as a value</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/nosql.svg</image:loc>
        <image:caption>The same problem wearing another face: here an operator slips in, not an order</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/subidas.svg</image:loc>
        <image:caption>Five checks before somebody else&apos;s file touches your disk</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/dependencias.svg</image:loc>
        <image:caption>You do not write this bug: you install it and carry it around</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/backups.svg</image:loc>
        <image:caption>An untested backup is a large folder, not a backup</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/cuentas.svg</image:loc>
        <image:caption>Everything one password of yours opens</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/hackeo/incidente.svg</image:loc>
        <image:caption>Order matters: you close first and look afterwards</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/evita-que-te-hackeen-si-haces-vibecoding.jpg</video:thumbnail_loc>
        <video:title>Don&apos;t get hacked if you vibecode</video:title>
        <video:description>Twenty-six holes people get into AI-built apps through, from what you fix this afternoon to what you have to understand</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/17.mp4</video:content_loc>
        <video:publication_date>2026-08-28T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/9-acronimos-que-necesitas-saber-en-2026</loc>
      <lastmod>2026-08-26</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-acronimos-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-acronyms-you-need-to-know-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-acronimos-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/dry.svg</image:loc>
        <image:caption>Lo que no se repite no son las líneas: es la decisión que hay detrás</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/kiss.svg</image:loc>
        <image:caption>La solución que se entiende sola y la que hay que descifrar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/yagni.svg</image:loc>
        <image:caption>Lo único que no se construye hoy es el cuadrante rojo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/solid.svg</image:loc>
        <image:caption>Una letra, un principio, una frase para cada uno</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/crud.svg</image:loc>
        <image:caption>Las cuatro operaciones, con su verbo de HTTP y su sentencia de SQL</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/acid.svg</image:loc>
        <image:caption>Una transferencia: o se apuntan los dos movimientos, o no se apunta ninguno</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/tdd.svg</image:loc>
        <image:caption>Rojo, verde, limpiar. Y vuelta a empezar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/mvp.svg</image:loc>
        <image:caption>Media rueda no lleva a nadie a ningún sitio; un monopatín sí</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/ci-cd.svg</image:loc>
        <image:caption>Todo lo que pasa entre tu commit y producción, sin que nadie toque nada</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-acronimos-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 acrónimos que necesitas saber sí o sí en 2026</video:title>
        <video:description>DRY, KISS, YAGNI, SOLID, CRUD, ACID, TDD, MVP y CI/CD: qué significan y qué está diciendo de verdad quien los suelta en una reunión.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/9.mp4</video:content_loc>
        <video:publication_date>2026-08-26T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/9-acronyms-you-need-to-know-in-2026</loc>
      <lastmod>2026-08-26</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-acronimos-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-acronyms-you-need-to-know-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-acronimos-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/dry.svg</image:loc>
        <image:caption>What must not repeat is not the lines: it is the decision behind them</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/kiss.svg</image:loc>
        <image:caption>The solution that explains itself and the one you have to decode</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/yagni.svg</image:loc>
        <image:caption>The only thing you do not build today is the red quadrant</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/solid.svg</image:loc>
        <image:caption>One letter, one principle, one sentence each</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/crud.svg</image:loc>
        <image:caption>The four operations, with their HTTP verb and their SQL statement</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/acid.svg</image:loc>
        <image:caption>A transfer: either both entries get written, or neither does</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/tdd.svg</image:loc>
        <image:caption>Red, green, clean up. Then round again</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/mvp.svg</image:loc>
        <image:caption>Half a wheel gets nobody anywhere; a skateboard does</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/acronimos/ci-cd.svg</image:loc>
        <image:caption>Everything between your commit and production, with nobody touching anything</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-acronimos-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 acronyms you absolutely need to know in 2026</video:title>
        <video:description>DRY, KISS, YAGNI, SOLID, CRUD, ACID, TDD, MVP and CI/CD: what they stand for and what someone is really saying when they drop one in a meeting.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/9.mp4</video:content_loc>
        <video:publication_date>2026-08-26T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026</loc>
      <lastmod>2026-08-25</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-frontend-skills-you-need-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/server-components.svg</image:loc>
        <image:caption>El componente se ejecuta en el servidor; al navegador solo llega HTML</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/signals.svg</image:loc>
        <image:caption>Sin signals se vuelve a ejecutar el árbol; con signals, solo lo que lee ese dato</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/css-moderno.svg</image:loc>
        <image:caption>La media query mira la ventana; la container query mira el hueco del componente</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/core-web-vitals.svg</image:loc>
        <image:caption>Las tres métricas de Google y el umbral que hay que bajar en cada una</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/accesibilidad.svg</image:loc>
        <image:caption>Lo que separa una pantalla que se puede usar de una que solo se puede mirar</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/view-transitions.svg</image:loc>
        <image:caption>Lo que antes pedía una librería y un truco, ahora lo hace el navegador</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/estrategias-de-render.svg</image:loc>
        <image:caption>Las cuatro se distinguen por una sola cosa: cuándo se genera el HTML</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/typescript.svg</image:loc>
        <image:caption>El cuadrante rojo es el estado que no existe y que tu tipo permite escribir</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/testing-ui.svg</image:loc>
        <image:caption>Muchos tests de componente, los justos de flujo completo</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 skills de frontend que necesitas saber sí o sí en 2026</video:title>
        <video:description>El frontend se ha movido al servidor, ha dejado de repintarlo todo y por fin tiene herramientas de diseño propias. Esto es lo que hay que saber.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/8.mp4</video:content_loc>
        <video:publication_date>2026-08-25T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/9-frontend-skills-you-need-in-2026</loc>
      <lastmod>2026-08-25</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-frontend-skills-you-need-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/server-components.svg</image:loc>
        <image:caption>The component runs on the server; only HTML reaches the browser</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/signals.svg</image:loc>
        <image:caption>Without signals the tree re-runs; with signals, only whatever reads that value</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/css-moderno.svg</image:loc>
        <image:caption>A media query looks at the window; a container query looks at the component&apos;s slot</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/core-web-vitals.svg</image:loc>
        <image:caption>Google&apos;s three metrics and the threshold you have to stay under for each</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/accesibilidad.svg</image:loc>
        <image:caption>What separates a screen you can use from one you can only look at</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/view-transitions.svg</image:loc>
        <image:caption>What used to need a library and a trick is now done by the browser</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/estrategias-de-render.svg</image:loc>
        <image:caption>All four differ in one single thing: when the HTML gets generated</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/typescript.svg</image:loc>
        <image:caption>The red quadrant is the state that does not exist and your type still allows</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/frontend/testing-ui.svg</image:loc>
        <image:caption>Plenty of component tests, only the necessary full-journey ones</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-skills-de-frontend-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 frontend skills you absolutely need in 2026</video:title>
        <video:description>Frontend has moved to the server, stopped repainting everything and finally has proper design tools of its own. Here is what you need to know.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/8.mp4</video:content_loc>
        <video:publication_date>2026-08-25T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/10-trucos-para-tener-tokens-infinitos-en-claude</loc>
      <lastmod>2026-08-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/10-trucos-para-tener-tokens-infinitos-en-claude"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/10-tricks-for-infinite-tokens-in-claude"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/10-trucos-para-tener-tokens-infinitos-en-claude"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/editar-prompt.svg</image:loc>
        <image:caption>Apilar mensajes multiplica el contexto; editar lo reemplaza</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/chat-nuevo.svg</image:loc>
        <image:caption>El mensaje 30 de un chat cuesta 300 veces más que el primero</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/combinar-preguntas.svg</image:loc>
        <image:caption>Tres turnos cargan el contexto tres veces; uno, una</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/projects.svg</image:loc>
        <image:caption>Un Project guarda el archivo una vez; cada chat lo reutiliza</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/memoria.svg</image:loc>
        <image:caption>Lo escribes una vez y aparece en todos los chats</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/desactivar-funciones.svg</image:loc>
        <image:caption>Cada herramienta activa añade tokens a cada respuesta, la uses o no</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/haiku.svg</image:loc>
        <image:caption>Las tareas simples son la mayoría del día y con Haiku casi no cuentan</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/ventana-5-horas.svg</image:loc>
        <image:caption>Una ráfaga te bloquea; tres sesiones te dan tres ventanas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/modelo-correcto.svg</image:loc>
        <image:caption>Precios por millón de tokens en la API a agosto de 2026</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/claude-code-contexto.svg</image:loc>
        <image:caption>/context enseña qué ocupa; /compact lo resume; /clear empieza de cero</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/10-trucos-para-tener-tokens-infinitos-en-claude.jpg</video:thumbnail_loc>
        <video:title>10 trucos para tener tokens infinitos en Claude</video:title>
        <video:description>Deja de llegar al límite de uso con Claude. Diez trucos para que tus tokens parezcan ilimitados: la forma en cómo lo usas hace que gastes mucho más.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/6.mp4</video:content_loc>
        <video:publication_date>2026-08-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/10-tricks-for-infinite-tokens-in-claude</loc>
      <lastmod>2026-08-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/10-trucos-para-tener-tokens-infinitos-en-claude"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/10-tricks-for-infinite-tokens-in-claude"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/10-trucos-para-tener-tokens-infinitos-en-claude"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/editar-prompt.svg</image:loc>
        <image:caption>Stacking messages multiplies the context; editing replaces it</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/chat-nuevo.svg</image:loc>
        <image:caption>Message 30 of a chat costs 300 times more than the first one</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/combinar-preguntas.svg</image:loc>
        <image:caption>Three turns load the context three times; one turn, once</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/projects.svg</image:loc>
        <image:caption>A Project stores the file once; every chat reuses it</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/memoria.svg</image:loc>
        <image:caption>You write it once and it shows up in every chat</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/desactivar-funciones.svg</image:loc>
        <image:caption>Every active tool adds tokens to every answer, whether you use it or not</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/haiku.svg</image:loc>
        <image:caption>Simple tasks are most of the day and with Haiku they barely count</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/ventana-5-horas.svg</image:loc>
        <image:caption>One burst locks you out; three sessions give you three windows</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/modelo-correcto.svg</image:loc>
        <image:caption>API prices per million tokens as of August 2026</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/tokens/claude-code-contexto.svg</image:loc>
        <image:caption>/context shows what takes up space; /compact summarises it; /clear starts over</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/10-trucos-para-tener-tokens-infinitos-en-claude.jpg</video:thumbnail_loc>
        <video:title>10 tricks to get infinite tokens in Claude</video:title>
        <video:description>Stop hitting the usage limit. Ten tricks to make your tokens feel unlimited: the same messages at a fraction of the cost, updated to how Claude works today.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/6.mp4</video:content_loc>
        <video:publication_date>2026-08-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/top-5-plugins-de-claude-code</loc>
      <lastmod>2026-08-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/top-5-plugins-de-claude-code"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/top-5-claude-code-plugins"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/top-5-plugins-de-claude-code"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/claude-mem.webp</image:loc>
        <image:caption>github.com/thedotmack/claude-mem · más de 90.000 estrellas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/caveman.webp</image:loc>
        <image:caption>github.com/JuliusBrussee/caveman · más de 98.000 estrellas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/taste-skill.webp</image:loc>
        <image:caption>github.com/Leonxlnx/taste-skill · más de 77.000 estrellas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/humanizer.webp</image:loc>
        <image:caption>github.com/blader/humanizer · más de 36.000 estrellas</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/marketingskills.webp</image:loc>
        <image:caption>github.com/coreyhaines31/marketingskills · más de 44.000 estrellas</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/top-5-plugins-de-claude-code.jpg</video:thumbnail_loc>
        <video:title>Top 5 plugins de Claude Code</video:title>
        <video:description>Ahorra tokens en todas tus suscripciones, mejora el diseño web, haz que el texto se humanice y ten un equipo de marketing entero.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/7.mp4</video:content_loc>
        <video:publication_date>2026-08-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/top-5-claude-code-plugins</loc>
      <lastmod>2026-08-24</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/top-5-plugins-de-claude-code"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/top-5-claude-code-plugins"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/top-5-plugins-de-claude-code"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/claude-mem.webp</image:loc>
        <image:caption>github.com/thedotmack/claude-mem · over 90,000 stars</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/caveman.webp</image:loc>
        <image:caption>github.com/JuliusBrussee/caveman · over 98,000 stars</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/taste-skill.webp</image:loc>
        <image:caption>github.com/Leonxlnx/taste-skill · over 77,000 stars</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/humanizer.webp</image:loc>
        <image:caption>github.com/blader/humanizer · over 36,000 stars</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/plugins/marketingskills.webp</image:loc>
        <image:caption>github.com/coreyhaines31/marketingskills · over 44,000 stars</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/top-5-plugins-de-claude-code.jpg</video:thumbnail_loc>
        <video:title>Top 5 Claude Code plugins</video:title>
        <video:description>Save tokens on every subscription, improve your web design, make your text sound human and have a whole marketing team.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/7.mp4</video:content_loc>
        <video:publication_date>2026-08-24T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/9-skills-de-backend-que-necesitas-saber-en-2026</loc>
      <lastmod>2026-08-23</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-skills-de-backend-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-backend-skills-you-need-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-skills-de-backend-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/rest-grpc.svg</image:loc>
        <image:caption>REST manda texto (JSON); gRPC manda binario (Protobuf) por HTTP/2</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/auth-passkeys-jwt.svg</image:loc>
        <image:caption>Passkey para iniciar sesión, JWT para acceder a las APIs</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/cache-redis.svg</image:loc>
        <image:caption>Cache-aside: primero Redis, y solo si falla, la base de datos</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/sql-nosql.svg</image:loc>
        <image:caption>SQL: tablas con estructura fija. NoSQL: documentos flexibles</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/async-reactivo.svg</image:loc>
        <image:caption>Asíncrono: pides y sigues. Reactivo: los datos fluyen solos</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/kafka-eventos.svg</image:loc>
        <image:caption>Productor publica, Kafka guarda, consumidores leen a su ritmo</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/owasp-zero-trust.svg</image:loc>
        <image:caption>OWASP: lo que te van a atacar. Zero Trust: verificar siempre</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/microservicios-malla.svg</image:loc>
        <image:caption>Microservicios independientes; la malla gestiona la red entre ellos</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/opentelemetry-observabilidad.svg</image:loc>
        <image:caption>OpenTelemetry recoge métricas, logs y trazas de todos tus servicios</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-skills-de-backend-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 skills de backend que necesitas saber sí o sí en 2026</video:title>
        <video:description>Aprende algunas de las cosas más importantes que se piden hoy a un desarrollador de backend.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/5.mp4</video:content_loc>
        <video:publication_date>2026-08-23T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/9-backend-skills-you-need-in-2026</loc>
      <lastmod>2026-08-23</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/9-skills-de-backend-que-necesitas-saber-en-2026"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/9-backend-skills-you-need-in-2026"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/9-skills-de-backend-que-necesitas-saber-en-2026"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/rest-grpc.svg</image:loc>
        <image:caption>REST sends text (JSON); gRPC sends binary (Protobuf) over HTTP/2</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/auth-passkeys-jwt.svg</image:loc>
        <image:caption>Passkey to sign in, JWT to access the APIs</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/cache-redis.svg</image:loc>
        <image:caption>Cache-aside: Redis first, the database only when it misses</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/sql-nosql.svg</image:loc>
        <image:caption>SQL: tables with a fixed structure. NoSQL: flexible documents</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/async-reactivo.svg</image:loc>
        <image:caption>Async: ask and move on. Reactive: data flows on its own</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/kafka-eventos.svg</image:loc>
        <image:caption>Producer publishes, Kafka stores, consumers read at their own pace</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/owasp-zero-trust.svg</image:loc>
        <image:caption>OWASP: what gets attacked. Zero Trust: always verify</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/microservicios-malla.svg</image:loc>
        <image:caption>Independent microservices; the mesh handles the network between them</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/backend/opentelemetry-observabilidad.svg</image:loc>
        <image:caption>OpenTelemetry collects metrics, logs and traces from all your services</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/9-skills-de-backend-que-necesitas-saber-en-2026.jpg</video:thumbnail_loc>
        <video:title>9 backend skills you absolutely need to know in 2026</video:title>
        <video:description>Learn some of the most important things a backend developer is expected to know today.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/5.mp4</video:content_loc>
        <video:publication_date>2026-08-23T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/un-momento-como-btc-en-2012</loc>
      <lastmod>2026-07-04</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/un-momento-como-btc-en-2012"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/a-btc-in-2012-moment"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/un-momento-como-btc-en-2012"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/claude-tokens.png</image:loc>
        <image:caption>Tokens gastados con la suscripción de Claude en los últimos 21 días</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/twitter-stats.png</image:loc>
        <image:caption>Mis estadísticas en Twitter. En solo 3 meses.</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/threads-stats.png</image:loc>
        <image:caption>Estadísticas de Threads</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/linkedin-stats.png</image:loc>
        <image:caption>Estadísticas de LinkedIn</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/post-engagement.png</image:loc>
        <image:caption>Post de engagement (1,5M)</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/post-personal.png</image:loc>
        <image:caption>Post personal polarizado (200.000)</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/post-conocimiento.png</image:loc>
        <image:caption>Post de conocimiento, sin polarizar (5.000)</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/un-momento-como-btc-en-2012.jpg</video:thumbnail_loc>
        <video:title>Estamos en un momento como el de $BTC en 2012 y lo estás desaprovechando</video:title>
        <video:description>IA barata y útil, algoritmos que premian al pequeño. Junta las dos y tienes la oportunidad de tu vida.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/4.mp4</video:content_loc>
        <video:publication_date>2026-07-04T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/a-btc-in-2012-moment</loc>
      <lastmod>2026-07-04</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/un-momento-como-btc-en-2012"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/a-btc-in-2012-moment"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/un-momento-como-btc-en-2012"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/claude-tokens.png</image:loc>
        <image:caption>Tokens spent on the Claude subscription over the last 21 days</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/twitter-stats.png</image:loc>
        <image:caption>My Twitter stats. In only three months.</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/threads-stats.png</image:loc>
        <image:caption>Threads stats</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/linkedin-stats.png</image:loc>
        <image:caption>LinkedIn stats</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/post-engagement.png</image:loc>
        <image:caption>Engagement post (1.5M)</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/post-personal.png</image:loc>
        <image:caption>Polarising personal post (200,000)</image:caption>
      </image:image>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/post-conocimiento.png</image:loc>
        <image:caption>Knowledge post, not polarising (5,000)</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/un-momento-como-btc-en-2012.jpg</video:thumbnail_loc>
        <video:title>We are at a $BTC-in-2012 moment and you are wasting it</video:title>
        <video:description>Cheap, useful AI and algorithms that reward the small player. Put the two together and you have the opportunity of your life.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/4.mp4</video:content_loc>
        <video:publication_date>2026-07-04T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/la-inteligencia-artificial-es-una-estafa</loc>
      <lastmod>2026-05-25</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/la-inteligencia-artificial-es-una-estafa"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/artificial-intelligence-is-a-scam"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/la-inteligencia-artificial-es-una-estafa"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/la-inteligencia-artificial-es-una-estafa.jpg</video:thumbnail_loc>
        <video:title>La Inteligencia Artificial es una estafa</video:title>
        <video:description>La IA no es inteligente, es lo que te han hecho creer. No piensa: hace predicciones matemáticas.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/3.mp4</video:content_loc>
        <video:publication_date>2026-05-25T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/artificial-intelligence-is-a-scam</loc>
      <lastmod>2026-05-25</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/la-inteligencia-artificial-es-una-estafa"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/artificial-intelligence-is-a-scam"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/la-inteligencia-artificial-es-una-estafa"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/la-inteligencia-artificial-es-una-estafa.jpg</video:thumbnail_loc>
        <video:title>Artificial intelligence is a scam</video:title>
        <video:description>AI is not intelligent, that is what you have been led to believe. It does not think: it makes mathematical predictions.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/3.mp4</video:content_loc>
        <video:publication_date>2026-05-25T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes</loc>
      <lastmod>2026-05-09</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/build-apps-while-you-eat-work-or-sleep"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/billionaireswar.jpg</image:loc>
        <image:caption>Billionaires War, montada entera con esta configuración</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes.jpg</video:thumbnail_loc>
        <video:title>Haz aplicaciones mientras comes, trabajas o duermes</video:title>
        <video:description>La configuración completa para crear aplicaciones gratis, sin conocimiento técnico y con todo el control desde el móvil.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/2.mp4</video:content_loc>
        <video:publication_date>2026-05-09T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/build-apps-while-you-eat-work-or-sleep</loc>
      <lastmod>2026-05-09</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/build-apps-while-you-eat-work-or-sleep"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes"/>
      <image:image>
        <image:loc>https://www.franpradas.com/articles/billionaireswar.jpg</image:loc>
        <image:caption>Billionaires War, built entirely with this setup</image:caption>
      </image:image>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/haz-aplicaciones-mientras-comes-trabajas-o-duermes.jpg</video:thumbnail_loc>
        <video:title>Build apps while you eat, work or sleep</video:title>
        <video:description>The complete setup for building applications for free, with no technical knowledge and full control from your phone.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/2.mp4</video:content_loc>
        <video:publication_date>2026-05-09T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/articulos/el-desarrollo-de-software-ha-muerto</loc>
      <lastmod>2026-04-12</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/el-desarrollo-de-software-ha-muerto"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/software-development-is-dead"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/el-desarrollo-de-software-ha-muerto"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/el-desarrollo-de-software-ha-muerto.jpg</video:thumbnail_loc>
        <video:title>El desarrollo de Software ha muerto</video:title>
        <video:description>La opinión de alguien que lleva más de 10 años desarrollando y siente que esta disciplina ha perdido el alma.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/1.mp4</video:content_loc>
        <video:publication_date>2026-04-12T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.6</priority>
    </url>
    <url>
      <loc>https://www.franpradas.com/en/articulos/software-development-is-dead</loc>
      <lastmod>2026-04-12</lastmod>
      <xhtml:link rel="alternate" hreflang="es" href="https://www.franpradas.com/articulos/el-desarrollo-de-software-ha-muerto"/>
      <xhtml:link rel="alternate" hreflang="en" href="https://www.franpradas.com/en/articulos/software-development-is-dead"/>
      <xhtml:link rel="alternate" hreflang="x-default" href="https://www.franpradas.com/articulos/el-desarrollo-de-software-ha-muerto"/>
      <video:video>
        <video:thumbnail_loc>https://www.franpradas.com/og/articulos/el-desarrollo-de-software-ha-muerto.jpg</video:thumbnail_loc>
        <video:title>Software development is dead</video:title>
        <video:description>The opinion of someone who has been developing for more than 10 years and feels this discipline has lost its soul.</video:description>
        <video:content_loc>https://www.franpradas.com/articles/videos/1.mp4</video:content_loc>
        <video:publication_date>2026-04-12T00:00:00+00:00</video:publication_date>
      </video:video>
      <priority>0.5</priority>
    </url>
</urlset>