3 points par GN⁺ 2024-04-15 | 1 commentaires | Partager sur WhatsApp
  • MarkdownDown est un outil qui transforme n’importe quelle page web en un document Markdown propre
  • Il prend en charge le téléchargement d’images dans le résultat de conversion, ce qui permet de lier dans le Markdown les images enregistrées en local
  • L’option de suppression des éléments hors contenu permet de réduire les éléments sans rapport avec le corps de l’article
  • Il propose aussi une option pour appliquer un GPT Filter au résultat Markdown
  • Utile pour les utilisateurs qui veulent conserver le contenu d’une page web en Markdown ou organiser aussi les images avec

Organiser une page web en Markdown

  • MarkdownDown convertit une page web en Markdown propre
  • Pendant la conversion, il peut télécharger les images et inclure dans le résultat des liens vers les images locales

Options de conversion

  • Organisation centrée sur le contenu

    • L’option Remove non-content elements supprime les éléments qui ne relèvent pas du contenu
  • Traitement des images

    • L’option Download images locally and link them enregistre les images en local et les lie
  • Application du GPT Filter

    • L’option Apply GPT Filter on Markdown permet d’appliquer un GPT Filter au résultat Markdown

1 commentaires

 
GN⁺ 2024-04-15
Avis de Hacker News
  • Il y a trois problèmes distincts quand on transforme un site web en Markdown : récupérer tout le contenu de la page sans rien manquer, supprimer les publicités et les contenus annexes, et obtenir la bonne mise en page ainsi que le bon formatage des sections.
    Pour l’extraction précise du contenu et la mise en forme, les solutions basées sur Trafilatura, Newspaper4k et python-readability fonctionnent le mieux avec leurs réglages par défaut, tandis que pour une collecte exhaustive, la combinaison d’un service de scraping et de Selenium convient bien.
    Je me demande ce que cet outil fait différemment, ou mieux. Le domaine stagne depuis un moment, donc j’aimerais entendre ce que vous avez appris.

    • En particulier, dans les environnements où l’on n’a pas de runtime JavaScript, ou où l’on ne veut pas en utiliser, le scraping approfondi est difficile.
      Pour l’extraction de contenu, l’approche de la bibliothèque Postlight était assez propre. Elle attribue un score à chaque nœud HTML à partir d’heuristiques comme la longueur du texte, la densité de liens ou les classes CSS, puis choisit le nœud ayant le score le plus élevé. Je l’ai portée en Swift en développant une application personnelle de lecture différée.
      https://github.com/postlight/parser
    • Mon scraper d’articles web utilise maintenant Playwright avec un bloqueur de publicités, puis exécute readability de Mozilla sur la page, et un LLM vérifie le résultat.
      Si la vérification échoue, il découpe le contexte HTML de la page complète, le convertit en Markdown avec Pandoc, puis le LLM extrait le corps de l’article depuis le Markdown.
  • Vercel, vraiment… désormais, si le trafic arrive, il va falloir surveiller la facture. J’espère que vous ne l’utilisez pas de la manière que Vercel vous pousse constamment à adopter.

    • C’est un peu amer de voir qu’ils incitent à l’utiliser dans toute la documentation. Parfois, un simple WebP suffit largement.
      Comme dans le mème du bus : du côté heureux, il y a l’utilisateur et Vercel ; du côté triste, il y a le portefeuille.
      Bien sûr, exception faite si l’on a besoin de mise à l’échelle et de réduction dynamiques.
    • En pratique, ça a plutôt bien tenu et le coût était négligeable.
      Je n’ai rien fait de particulier pour gérer le trafic de HN ; c’était juste une application Next.js de base.
  • Proposer le téléchargement d’images et le filtrage basé sur GPT est une bonne idée.
    J’ai créé un outil similaire l’an dernier, mais il n’a pas ces fonctionnalités : https://url2text.com/
    L’UI peut être lente, mais on peut voir un exemple de sortie sur la page d’accueil.
    L’API sous-jacente est l’API de capture d’écran de sites web d’Urlbox, et elle est bien plus performante si on l’utilise directement. On peut demander en une seule fois du Markdown avec le HTML rendu par JavaScript, les métadonnées et une capture d’écran : https://urlbox.com/extracting-text
    On peut aussi enregistrer directement les résultats dans un stockage compatible S3 : https://urlbox.com/s3
    On peut également les recevoir via webhook : https://urlbox.com/webhooks
    Dans un side project, j’effectue plus d’un million de rendus par mois avec la fonctionnalité Markdown d’Urlbox, et ce Markdown est bien plus pratique pour les embeddings et les prompts.
    Pour scraper un site web entier de cette manière, le nouvel outil de dctanner vaut aussi le coup d’œil : https://usescraper.com/

    • Je suis le fondateur de https://usescraper.com. Il y a désormais aussi une option de scraping d’une URL unique : https://docs.usescraper.com/api-reference/scraper/scrape
      C’est 0,001 $ par page et ça utilise un navigateur Chrome headless. Les résultats sont rapides et on ne paie qu’à l’usage.
    • Ça a l’air correct, mais url2text ne semble pas avoir d’API, et urlbox ne semble pas proposer d’option pour ignorer la capture d’écran quand on veut seulement le texte.
      Si l’on n’a besoin que du texte, ça paraît assez cher.
  • Quand un site affiche un message de cookies, cet outil semble bloqué dessus et n’arrive pas à analyser le contenu réel.
    Par exemple, j’ai essayé avec https://www.cnbc.com/ et il n’a généré en Markdown que le message de cookies et le texte juridique autour.

    • Contourner ce genre de choses n’est pas simple, mais ça peut fonctionner de cette manière : https://url2text.com/u/wYVake
      J’ai eu de la chance de pouvoir le construire au-dessus d’une API mature qui gère déjà beaucoup de cas limites liés aux différents types de rendu de pages.
  • La conversion HTML→Markdown avec seulement htmltidy et Pandoc était déjà tout à fait utilisable.
    http://www.html-tidy.org/
    https://pandoc.org/

    • Je n’avais jamais entendu parler de tidy, mais ça semble prometteur.
      Je suis à la fois tenté et inquiet à l’idée de faire passer tout le HTML du template final dedans pour repérer les structures invalides restantes. Selon le degré de structure des corrections, on pourrait peut-être en faire une suite de tests.
  • J’ai aussi créé quelque chose de très similaire, smort.io. Il suffit d’ajouter smort.io/ devant l’URL d’un article pour pouvoir facilement l’éditer, l’annoter et le partager.
    Ça fonctionne aussi avec les articles ArXiv.
    Le Show HN de Smort est ici : https://news.ycombinator.com/item?id=30673502

  • Je l’ai essayé sur une page marketing complexe et il s’en est très bien sorti.
    Si c’est partageable, je suis curieux de savoir quelle charge cela impose à l’hôte. Est-ce à un niveau où l’on peut continuer à l’exploiter gratuitement, ou est-ce que l’efficacité coût finira par devenir mauvaise ?

    • Comme on lance une instance Chrome headless, c’est un peu lourd. Je vais regarder comment optimiser cette partie.
      À part ça, GPT-4 coûte cher, mais jusqu’ici les coûts restent négligeables, donc je suis confiant. Je pense que je pourrai le maintenir longtemps.
  • C’est l’un des cas où l’IA n’est pas nécessaire. Il existe un algorithme très efficace pour extraire le contenu d’une page, et l’une de ses implémentations est https://github.com/buriy/python-readability.

    • Il y a quelques années, quand j’avais comparé des outils de suppression du boilerplate, je me souviens que jusText donnait les meilleurs résultats avec ses paramètres par défaut.
      J’ai aussi essayé readability et quelques autres bibliothèques. Je me demande quel est l’état de l’art aujourd’hui.
    • Ici, l’IA est optionnelle. Ils utilisent readability pour nettoyer le HTML avant de le convertir en Markdown.
    • La dernière fois que j’ai utilisé readability, ça marchait bien pour les articles, mais ça peinait sur d’autres types de pages.
      Il supprimait beaucoup plus de contenu que je ne l’aurais voulu.
    • Je me demande comment on pourrait obtenir le même résultat ici avec cet outil seul, sans IA.
    • Honnêtement, je m’attendais à ce que ce soit surtout de la magie noire, mais le cœur du projet ressemble à un ensemble d’expressions régulières accumulé à grand-peine. Joli.
  • Le toujours excellent Pandoc (https://pandoc.org/) fait très bien ce genre de choses. En fait, il prend aussi en charge pratiquement tous les autres formats de documents.

    • D’accord. Pandoc est l’un des outils les plus utiles qui soient, et pourtant on en parle très peu.
      Il est incroyable, facile à utiliser et fonctionne bien. De nouveaux outils sortent souvent dans ce domaine, mais pour me faire utiliser autre chose que Pandoc, il faudrait vraiment une fonctionnalité unique et convaincante, ou une optimisation très poussée pour un cas d’usage précis.
  • Sympa. J’aimerais qu’il existe une extension de navigateur qui applique ça à toutes les pages que je lis et les enregistre quelque part.

    • SingleFile pour Firefox : https://addons.mozilla.org/en-US/firefox/addon/single-file/
    • L’option que j’utilise manuellement est Markdown clipper.
      https://github.com/deathau/markdown-clipper
      Il doit bien exister des dizaines d’extensions alternatives similaires.
    • La combinaison Wallabag + Obsidian + Wallabag Browser Ext est bonne. C’est déclenché manuellement, mais c’est excellent.
    • Omnivore utilise une archive web pour enregistrer une copie.
      https://omnivore.app/.
    • J’ai l’impression que des apps comme Pocket, Readwise Reader ou Matter couvrent déjà ce cas.
      Édit : j’ai lu trop vite. J’avais manqué la partie sur le traitement automatique et systématique.