10 puan yazan GN⁺ 2025-05-23 | 1 yorum | WhatsApp'ta paylaş
  • Web sayfalarında gereksiz öğeleri (yorumlar, kenar çubuğu, üst bilgi, alt bilgi vb.) kaldırıp yalnızca ana içeriği bırakan bir araçtır
  • Mozilla Readability'den farklı olarak daha esnek çalışır ve formüller, kod blokları, dipnotlar vb. için tutarlı HTML standardizasyonunu destekler
  • Obsidian Web Clipper için geliştirilmiştir ve diğer HTML-to-Markdown dönüştürme araçlarıyla (Turndown vb.) uyumluluğu hedefler
  • Mobil stil ve schema.org verileri gibi çeşitli meta veri çıkarma özelliklerini yerleşik olarak sunar
  • Hem Node.js hem de tarayıcıyı destekler; kullanım amacına göre farklı paketler seçilebilir

Defuddle'ın Readability'den farkları

  • Daha hoşgörülü filtreleme ile belirsiz öğelerin kaldırılmasını azaltır
  • Dipnot, formül, kod gibi özel alanları tutarlı biçimde işler
  • Sayfanın mobil stil sayfasını dikkate alır
  • schema.org meta verileri, görseller, favicon, yayımlanma tarihi gibi ek bilgileri çıkarabilir

Paket yapısı

  • Core paketi (defuddle): Tarayıcı kullanımı için uygundur, harici bağımlılık yoktur
  • Full paketi (defuddle/full): Formül ayrıştırma gibi ek özellikler içerir
  • Node paketi (defuddle/node): Node.js (JSDOM) ortamı için optimize edilmiştir, formül ve Markdown dönüşümünü eksiksiz destekler

Döndürülen nesnenin yapısı

Defuddle aşağıdaki bilgileri içeren bir nesne döndürür

  • author: makale veya sayfanın yazar adı
  • content: arıtılmış ana içerik metni
  • description: makale veya sayfanın özet açıklaması
  • domain: sitenin alan adı
  • favicon: sitenin ana favicon URL'si
  • image: ana görsel URL'si
  • metaTags: meta etiket bilgileri
  • parseTime: işlem süresi (milisaniye cinsinden)
  • published: yayımlanma tarihi bilgisi
  • site: site adı
  • schemaOrgData: schema.org'dan çıkarılan veriler
  • title: içeriğin başlığı
  • wordCount: ana içerikteki kelime sayısı

Seçenekler

  • debug: hata ayıklama loglamasını etkinleştirir
  • url: analiz edilecek sayfanın URL'sini belirtir
  • markdown: ana içeriği Markdown'a dönüştürür
  • separateMarkdown: HTML ve Markdown'ı aynı anda döndürür
  • removeExactSelectors: tam eşleşen seçicileri (reklamlar, sosyal düğmeler vb.) kaldırma seçeneği (varsayılan true)
  • removePartialSelectors: kısmi eşleşen seçicileri (benzer reklamlar vb.) kaldırma seçeneği (varsayılan true)

1 yorum

 
GN⁺ 2025-05-23
Hacker News görüşleri
  • Kullandığım WYSIWYG editörün Markdown'dan HTML'e dönüştürme biçimi hoşuma gitmediği için, araç çubuğunu ve editörü kendim yapıp bu aracı uygularsam daha iyi sonuçlar görebileceğimi düşünüyorum.

  • Kısa süre önce benzer bir konuyu araştırmıştım ve çeşitli dillerde uygulanmış Readability sürümlerinin kalitesinden emin olamamıştım. Readability.js en iyisiydi, ancak JavaScript ortamı projem için uygun değildi. Sonunda, metadata dahil en yüksek kalitede içerik çıkarmak için Python'daki Trafilatura kütüphanesini seçtim. Benim uygulamamla Trafilatura'yı karşılaştırırsanız iyileştirme noktaları bulabilirsiniz.

    • Go kullanıyorsanız, bakımını yaptığım Go için Readability ve Trafilatura portları var. Trafilatura'nın Go sürümü, performans olarak Python sürümüne benzer. Referans bağlantıları: go-shiori/go-readability, markusmobius/go-trafilatura
    • Trafilatura'nın resmi belgelerine buradan bakabilirsiniz. Bu arada Trafilatura, İtalyancada "ekstrüzyon" anlamına geliyor. Makarna sosu iyi tutan yapısından türetilmiş bir ad olduğu açıklanıyor; ayrıca pasta terimleriyle ilgili ilginç bir arka plan da var. (Ve doğru yazımın trifatura değil trafilatura olduğu da belirtiliyor.)
  • Obsidian Clipper'ı çıktığı ilk günden beri kullanıyorum ve özellikle site bazlı profil temelli çıkarım özelliğini çok takdir ediyorum. Obsidian kullanıcısı olmasanız bile, Markdown çıkarım kalitesi şimdiye kadar gördüklerim arasında en güvenilir seviyede.

    • Tavsiye için teşekkürler.
  • Son dönemde web siteleri giderek daha karmaşık ve dikkat dağıtıcı hale gelirken, okuyucunun gerçek içeriğe odaklanmasını sağlayacak sağlam bir Markdown dönüştürücüye gerçekten ihtiyaç var. Readability'nin bıraktığı boşluğu dolduran bir projenin çıkmasına sevindim ve destekliyorum.

  • Obsidian Web Clipper'ın Markdown dönüşüm kalitesine hayran kalıp kaynak kodunu incelerken Defuddle'ı keşfettim. Kendi geliştirdiğim read-it-later/bilgi tabanı uygulamasında kullanmayı planlıyorum; bu yüzden şimdiden teşekkür etmek istedim.

  • Mozilla'nın Readability'sinin gerçekten sahipsiz bırakılıp bırakılmadığını merak ediyorum. Son sürüm 2 ay önce yayımlandı ve bakımcı Gijs'in issue'lara verdiği yanıtlar da oldukça aktif.

    • Yine de bu kod tabanında iyileştirilmesi gereken çok şey var. İş gereği hata düzeltmek için bir kez fork'lamak zorunda kalmıştım. Örneğin, Hollanda'daki gibi sayılar arasında virgül kullanılan dilleri içeren sayfalarda tüm fiyat bilgilerini önemli metin olarak algılayan bir hata var. PR göndermeye çalıştım ama testlerin geçmesi zorunluydu; benim test ettiğim sayfada testler başarısız olduğu için birleştirme süreci gereksiz yere zorlaştı.
  • PHP ile geliştirdiğim benzer proje markydown burada. Kolay self-hosting avantajı var.

  • Obsidian Web Clipper, ChatGPT konuşmalarını Markdown'a dönüştürmek veya basitçe yazdırmak için kullanmak açısından çok faydalı bir araç.

    • Kagi Assistant dahil bazı istemciler, konuşmaları doğrudan Markdown olarak kaydetme özelliği sunuyor. Obsidian'ın web-clipper'ını kullanma fikri de gayet iyi.
    • Ben ise ChatGPT'den özetleri veya ihtiyaç duyduğum içeriği doğrudan Markdown dosyası şeklinde istemeyi tercih ediyorum.
  • Bazı web sitelerinde okuma moduyla erişince (örneğin iPhone Reader) ekranın bembeyaz görünmesinin ya da yazının düzgün çıkmamasının nedenini merak ediyorum. Bunu özellikle haber sitelerinde sık yaşıyorum. Reklam gösterimi için içeriği bilerek gizlemeleri mi sebep oluyor, eğer öyleyse bunu nasıl yapıyorlar?

    • Bu tür sorunların nedeni özellikle AB/BK/Kaliforniya gibi bölgelerde çoğu zaman gizlilik banner'ları veya çerez bildirimleri oluyor. Bazı sitelerde bu banner'lar yalnızca modal olarak açılıyor ve okuma modunda düzgün işlenebiliyor; ama başka durumlarda yönlendirme veya sunucu taraflı render ile içeriği tamamen perdeleyebiliyorlar. Okuma modunu kullanırken önce ilgili banner'ı kapatıp sonra tekrar denemeniz önerilir.