Defuddle - código aberto de HTML para Markdown para substituir o Readability
(github.com/kepano)- Ferramenta que remove elementos desnecessários de páginas da web (comentários, barras laterais, cabeçalhos, rodapés etc.) e deixa apenas o conteúdo principal
- Diferente do Mozilla Readability, funciona com mais flexibilidade e oferece padronização consistente de HTML para fórmulas, blocos de código, notas de rodapé etc.
- Foi desenvolvido para o Obsidian Web Clipper e busca compatibilidade com outras ferramentas de conversão de HTML para Markdown (como Turndown)
- Inclui recursos de extração de vários metadados, como estilos mobile e dados do schema.org
- Compatível tanto com Node.js quanto com navegadores, com diferentes bundles disponíveis conforme o uso
Diferenças entre Defuddle e Readability
- Filtragem mais permissiva para reduzir a remoção de elementos incertos
- Tratamento consistente de áreas especiais, como notas de rodapé, fórmulas e código
- Leva em conta a folha de estilos mobile da página
- Permite extrair informações adicionais, como metadados do schema.org, imagens, favicon e data de publicação
Composição dos bundles
- Bundle Core (
defuddle): adequado para uso no navegador, sem dependências externas - Bundle Full (
defuddle/full): inclui recursos adicionais, como parsing de fórmulas - Bundle Node (
defuddle/node): otimizado para ambiente Node.js (JSDOM), com suporte completo a fórmulas e conversão para Markdown
Estrutura do objeto retornado
O Defuddle retorna um objeto com informações como as abaixo
- author: nome do autor do artigo ou da página
- content: string com o conteúdo principal processado
- description: descrição resumida do artigo ou da página
- domain: nome de domínio do site
- favicon: URL do favicon principal do site
- image: URL da imagem principal
- metaTags: informações de meta tags
- parseTime: tempo de processamento (em milissegundos)
- published: informações de data de publicação
- site: nome do site
- schemaOrgData: dados extraídos do schema.org
- title: título do conteúdo
- wordCount: número de palavras do conteúdo principal
Opções
- debug: ativa logging de depuração
- url: define a URL da página a ser analisada
- markdown: converte o conteúdo principal para Markdown
- separateMarkdown: retorna HTML e Markdown ao mesmo tempo
- removeExactSelectors: opção para remover seletores de correspondência exata (anúncios, botões sociais etc.) (padrão: true)
- removePartialSelectors: opção para remover seletores de correspondência parcial (anúncios semelhantes etc.) (padrão: true)
1 comentários
Comentários do Hacker News
Não gosto da forma como o editor WYSIWYG que uso converte de markdown para HTML, então tenho a expectativa de que, se eu mesmo criar a barra de ferramentas e o editor e aplicar esta ferramenta, talvez consiga um resultado melhor.
Recentemente pesquisei um tema parecido, mas não tinha confiança na qualidade do Readability implementado em várias linguagens. O Readability.js era o melhor, mas o ambiente Javascript não servia para o meu projeto. No fim, escolhi a biblioteca Python Trafilatura para extrair conteúdo da mais alta qualidade com metadados precisos. A sugestão é comparar minha implementação com o Trafilatura para encontrar pontos de melhoria.
Uso o Obsidian Clipper desde o lançamento e valorizo especialmente o recurso de extração baseado em perfis por site. Mesmo para quem não usa Obsidian, a qualidade da extração em markdown é uma das mais confiáveis que já vi até hoje.
Com os sites ficando cada vez mais complexos e cheios de distrações, acho essencial existir um conversor robusto para markdown que permita ao leitor focar no conteúdo real. Fico feliz em ver surgir um projeto para preencher o vazio deixado pelo Readability e torço por ele.
Fiquei impressionado com a qualidade da conversão para markdown do Obsidian Web Clipper, fui analisar o código-fonte e acabei descobrindo o Defuddle. Pretendo usá-lo no meu app de read-it-later/knowledge-base que estou desenvolvendo, então já queria agradecer desde já.
Fico na dúvida se o Readability da Mozilla está mesmo abandonado. O último release foi há 2 meses e o mantenedor Gijs responde issues de forma bem ativa.
Apresentação de um projeto semelhante feito em PHP: markydown. A vantagem é a facilidade de self-hosting.
Um caso real de uso em que o Obsidian Web Clipper é muito útil: converter conversas do chatGPT para markdown ou usar de forma simples para impressão.
Curiosidade sobre por que, em alguns sites, ao acessar no modo de leitura (por exemplo, o leitor do iPhone), a tela fica em branco ou o texto não aparece direito. Isso acontece com frequência especialmente em sites de notícias. Surge a dúvida se a causa é esconder o conteúdo de propósito para exibir anúncios e, se for possível, como isso é feito.