Craft.do Web Clipper Bookmarklet
date
Sep 11, 2021
slug
craft_web_clipper
status
Published
tags
Craft.do
Bookmarklet
summary
Save web page content to Craft Inbox with one click.
type
Post
Waiting for the official API…
Save web page content to Craft Inbox with one click.
Modified from Obsidian Bookmarklet.
For reference: Using URL Scheme – Craft
Source Code
javascript: Promise.all([ import("<https://unpkg.com/[email protected]?module>"), import("<https://unpkg.com/@tehshrike/[email protected]>"), ]).then(async ([{ default: Turndown }, { default: Readability }]) => { 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(); if (selection) { var markdownify = selection; } else { var markdownify = content; } 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); const clipContent = "author: " + byline + "\\n" + "source: [" + title + "](" + document.URL + ")\\n" + "clipped: [[" + today + "]]\\n\\n" + "----\\n\\n" + markdownBody; console.log(clipContent); });
Compressed version
javascript:Promise.all([import("<https://unpkg.com/[email protected]?module"),import("https://unpkg.com/@tehshrike/[email protected]>"),]).then(async([{default:Turndown},{default:Readability}])=>{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();if(selection){var markdownify=selection}else{var markdownify=content}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);const clipContent="author: "+byline+"\\nsource: ["+title+"]("+document.URL+")\\nclipped: [["+today+"]]\\n\\n----\\n\\n"+markdownBody;console.log(clipContent)});