📄 Defuddle — Get the main content of any page as Markdown
Fuente: GitHub — kepano/defuddle
Autor: Steph Ango (kepano)
Tipo: README del repositorio
Resumen
Defuddle extrae el contenido principal de una página web (o HTML) y lo devuelve como HTML o Markdown limpio, quitando el “clutter” (comentarios, sidebars, headers, footers, elementos no esenciales) y dejando solo el contenido primario. Fue creado como motor del Obsidian Web Clipper, pero corre en cualquier entorno (browser, Node.js, CLI). Su nombre quiere decir “desfudar”: quitar elementos innecesarios de una web para que sea legible.
Takeaways clave
- Alternativa a Mozilla Readability con diferencias: es más permisivo (quita menos elementos dudosos), salida consistente para footnotes/math/code, usa los estilos móviles de la página para adivinar elementos innecesarios, y extrae más metadata (incluidos datos schema.org).
- Tres bundles:
defuddle(core, browser, sin dependencias),defuddle/full(añade parsing de math y conversión a Markdown),defuddle/node(Node, acepta cualquier DOM: linkedom, JSDOM, happy-dom; incluye math + Markdown). - CLI completa (
npx defuddle parse ...): acepta fichero, URL o stdin; flags--markdown/-m,--json/-j,--frontmatter/-f,--property,--output,--lang,--user-agent(útil para sitios que dan 403 al UA por defecto). - Estandariza HTML para procesamiento posterior: quita el primer H1/H2 si coincide con el título, convierte H1→H2, limpia números de línea y highlight en code blocks, unifica footnotes, convierte MathJax/KaTeX a MathML, y estandariza callouts (GitHub alerts, Obsidian callouts, Bootstrap alerts) a blockquotes con
data-callout(en Markdown → callouts estilo Obsidian> [!info]). - Metadata rich: author, content, description, domain, favicon, image, language, metaTags, parseTime, published, site, schemaOrgData, title, wordCount, debug.
- Fallback a servicios de terceros en
parseAsync()cuando la página no tiene contenido usable (SPAs renderizadas en cliente, p. ej. FxTwitter API para X/Twitter); se desactiva conuseAsync: false. - Debug: da
contentSelector, lista deremovals(con razones) y errores; permite desactivar pasos (removeLowScoring,removeHiddenElements,removeSmallImages) o forzar un selector.
Nota práctico
La skill Defuddle de este mismo repo wiki (defuddle.md en raw) es una skill Hermes que envuelve esta librería: defuddle parse URL --md --frontmatter para sacar contenido limpio en Markdown. Encaja en la categoría Coste del concepto [[hermes-agent-skills]] (modo lector antes de leer = menos tokens de input).