10 pontos por GN⁺ 2025-05-23 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2025-05-23
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.

    • Se você usa Go, há uma versão portada do Readability e do Trafilatura para Go que eu mantenho. A versão Go do Trafilatura tem desempenho parecido com a versão Python. Links de referência: go-shiori/go-readability, markusmobius/go-trafilatura
    • A documentação oficial do Trafilatura pode ser consultada aqui. Como curiosidade, Trafilatura significa "extrusão" em italiano. O nome viria da característica de o macarrão absorver bem o molho, junto com uma explicação interessante sobre a origem do termo ligado a massas. (E a observação de que o nome correto é trafilatura, não trifatura.)
  • 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.

    • Agradecimento pela dica recomendada.
  • 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.

    • Reclamação de que ainda há muito a melhorar nessa base de código. Compartilhamento de uma experiência pessoal de ter feito um fork para corrigir bugs no trabalho. Por exemplo, existe um bug em que páginas com idiomas como o neerlandês, que usam vírgulas entre números, fazem o sistema reconhecer todas as informações de preço como texto importante. Quando tentei abrir um PR, era obrigatório passar nos testes, mas os testes falhavam justamente nas páginas que eu havia testado, o que tornou o merge difícil e ineficiente.
  • 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.

    • Alguns clientes, incluindo o Kagi Assistant, oferecem a função de salvar o conteúdo da conversa diretamente em markdown. A opinião é que usar o web-clipper do Obsidian também é uma boa ideia.
    • Eu peço diretamente ao chatGPT resumos ou o conteúdo necessário em formato de arquivo markdown e uso assim.
  • 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.

    • Muitas vezes esse problema é causado por banners de privacidade ou avisos de cookies, especialmente na UE/Reino Unido/Califórnia. Em alguns sites, esses banners aparecem apenas como modal, e o modo de leitura lida bem com isso, mas em outros casos eles escondem totalmente o conteúdo por meio de redirecionamento ou renderização no lado do servidor. A recomendação é fechar esses banners antes de ativar o modo de leitura e tentar novamente.