I want to be able to highlight a section of a web page and copy it to the clipboard then save it to my local disk as markdown. I need an efficient way to do that.

My current cumbersome method is:

  1. highlight section and copy to clipboard
  2. open Libre Office Writer
  3. paste into Writer
  4. save Writer doc as HTML
  5. open terminal
  6. cd to the directory where I saved the HTML
  7. pandoc -s -r html /home/me/a/b/mydoc.html -o /home/me/a/b/mydoc.md

Obviously, I need a better method! Any suggestions?


With a recent version of xclip (the -t option was added in 2010 but not released yet AFAICT, so you'd need to get it from subversion, or use the one packaged in Debian).

xclip -o -selection clipboard -t text/html | pandoc -r html -w markdown

And if you want to make that back into the clipboard:

xclip -o -selection clipboard -t text/html |
  pandoc -r html -w markdown |
  xclip -i -selection clipboard

Which you can do in a loop with:

while :; do
  xclip -o -selection clipboard -t text/html |
    pandoc -r html -w markdown |
    xclip -i -selection clipboard -quiet

The second xclip, with -quiet will block until something else claims the CLIPBOARD selection, that is until you select something else somewhere.

That way, you can copy back and forth between your browser and whatever you're pasting the markdown in.

@tink also has a useful link to a similar question on StackOverflow where you can find how to implement it in python.

  • The assumption is that you're selecting a web pages' actual source, not just browsing to it, correct? – slm Jun 6 '13 at 10:49
  • @slm, no. In browsers like firefox or chrome, when you select and/or copy some text in a (rendered) web page, the browser sets the selection both as a string (for text applications to use) and as html (for applications that understand it like libreoffice to use). Those are called targets. xclip -selection clipboard -t TARGETS will list the targets/formats that Firefox sets after you copy some text from there. – Stéphane Chazelas Jun 6 '13 at 10:53
  • Is this a new feature in xclip? I get a -t: No such file or dir. I'm using ver: 0.12. – slm Jun 6 '13 at 10:58
  • 1
    @StephaneChazelas Awesome solution! I got xclip from here: pkgs.org/debian-sid/debian-main-amd64/… and it installed in Kubuntu 12.04 with no issues at all. This is exactly the type of solution I hoped for. Great! – MountainX Jun 6 '13 at 19:44
  • 2
    @slm: My working version of xclip (installed from the link above) also shows version 0.12, but the deb is named xclip_0.12+svn84-2_amd64.deb. This one does include the -t option and that option is described in its man page. But the man page doesn't show the text/html option, and I probably would not have figured any of this out on my own. – MountainX Jun 6 '13 at 19:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.