to-markdown
tidy-html5
to-markdown | tidy-html5 | |
---|---|---|
5 | 9 | |
8,054 | 2,675 | |
3.2% | 0.8% | |
5.2 | 0.0 | |
13 days ago | 27 days ago | |
HTML | C | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
to-markdown
-
Show HN: I made a tool to clean and convert any webpage to Markdown
https://mixmark-io.github.io/turndown/
With some configuration you can get most of the way there.
-
I need automatic source URLs when I paste any text onto a card or note, like on OneNote.
// Original script // https://gist.github.com/kepano/90c05f162c37cf730abb8ff027987ca3 // Bookmarklet Converter // https://caiorss.github.io/bookmarklet-maker/ // Libraries // https://github.com/mixmark-io/turndown // https://github.com/mozilla/readability javascript: Promise.all([import('https://unpkg.com/[email protected]?module'), import('https://unpkg.com/@tehshrike/[email protected]'), ]).then(async ([{ default: Turndown }, { default: Readability }]) => { /* Optional vault name */ const vault = ""; /* Optional folder name such as "Clippings/" */ const folder = "Clippings/"; /* Optional tags */ const tags = ""; function getSelectionHtml() { var html = ""; if (typeof window.getSelection != "undefined") { var sel = window.getSelection(); if (sel.rangeCount) { var container = document.createElement("div"); for (var i = 0, len = sel.rangeCount; i < len; ++i) { container.appendChild(sel.getRangeAt(i).cloneContents()); } html = container.innerHTML; } } else if (typeof document.selection != "undefined") { if (document.selection.type == "Text") { html = document.selection.createRange().htmlText; } } return html; } const selection = getSelectionHtml(); const { title, byline, content } = new Readability(document.cloneNode(true)).parse(); function getFileName(fileName) { var userAgent = window.navigator.userAgent, platform = window.navigator.platform, windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']; if (windowsPlatforms.indexOf(platform) !== -1) { fileName = fileName.replace(':', '').replace(/[/\\?%*|"<>]/g, '-'); } else { fileName = fileName.replace(':', '').replace(/\//g, '-').replace(/\\/g, '-'); } return fileName; } const fileName = getFileName(title); if (selection) { var markdownify = selection; } else { var markdownify = content; } if (vault) { var vaultName = '&vault=' + encodeURIComponent(`${vault}`); } else { var vaultName = ''; } const markdownBody = new Turndown({ headingStyle: 'atx', hr: '---', bulletListMarker: '-', codeBlockStyle: 'fenced', emDelimiter: '*', }).turndown(markdownify); var date = new Date(); function convertDate(date) { var yyyy = date.getFullYear().toString(); var mm = (date.getMonth()+1).toString(); var dd = date.getDate().toString(); var mmChars = mm.split(''); var ddChars = dd.split(''); return yyyy + '-' + (mmChars[1]?mm:"0"+mmChars[0]) + '-' + (ddChars[1]?dd:"0"+ddChars[0]); } const today = convertDate(date); // This is the output template // It is similar to an Obsidian core template // except to insert a value we use: ${value} instead of {{value}} const fileContent =`--- type: clipping date_added: ${today} aliases: [] tags: [${tags}] --- author:: ${byline.toString().split('\n')[0].trim()} source:: [${title}](${document.URL}) ${markdownBody} `; // This copies your text to the clipboard navigator.clipboard.writeText(fileContent); // This creates a new document in Obsidian containing your clipping // I commented it out as this isn't what you asked for /* document.location.href = "obsidian://new?" + "file=" + encodeURIComponent(folder + fileName) + "&content=" + encodeURIComponent(fileContent) + vaultName; */ })
- Content Parser – Extract Markdown, HTML or text from content-heavy websites
-
Do you trust the Obsidian company?
turndown [MIT] https://mixmark-io.github.io/turndown/
-
Pathfinder 2 API (OGL Content)
Have a look at turndown: https://domchristie.github.io/turndown/
tidy-html5
- Show HN: I made a tool to clean and convert any webpage to Markdown
- Localize HTML Tidy (README.md)
-
libtidy, compilation errors
So I included the tidy libraries in my project.
-
Searching for the *old* W3C XHTML/CSS validator or something of equivalent functionality
Maybe look into HTML Tidy. It's job is to clean up HTML and convert legacy code to modern form, so it knows about DTDs. You might be able to pass it some options to get what you want.
-
Converting a IETM delivered in HTML to XML S1000D 4.0.
I've always used tidy for HTML/XML formatting jobs.
-
Expand one very long HTML line (>30k characters) as multi-line formatted indented HTML?
Personally I use command that switches the file type to html, and then formats it with tidy. It assumes you're pasting into a new buffer.
-
Unminify HTML in terminal
I use tidy.
-
Inspecting the Clipboard (on Linux)
So I installed HTML tidy.
-
The most underused browser feature
Prune instructs the parser to remove any elements within the extracted article block that look superfluous. This can result in false positives, so we tend to disable it when we've gone to the trouble of creating site-specific extraction rules.
Tidy determines if the source HTML should be cleaned up first with HTML Tidy - https://github.com/htacg/tidy-html5. If you're parsing the source HTML with an HTML 5 parser, as we are now, it shouldn't be necessary any more (I think we actually ignore it now). We used it more before when we relied on libxml parsing, which often trips up on modern HTML.
What are some alternatives?
CherryTree - cherrytree
parser - đź“ś Extract meaningful content from the chaos of a web page
draw.io - draw.io is a JavaScript, client-side editor for general diagramming.
readability.php - PHP port of Mozilla's Readability.js
SiMPad
readability - Readability is a library written in Go (golang) to parse, analyze and convert HTML pages into readable content. Originally an Arc90 Experiment, it is now incorporated into Safari’s Reader View.
OpenNote - OpenNote was built to be an open web-based alternative to Microsoft OneNote (T) and EverNote.
toltec - Community-maintained repository of free software for the reMarkable tablet.
Laverna - Laverna is a JavaScript note taking application with Markdown editor and encryption support. Consider it like open source alternative to Evernote.
readability - A standalone version of the readability lib
tiddlywiki-ipfs - IPFS with TiddlyWiki
SponsorBlock - Skip YouTube video sponsors (browser extension)