Skip to content

Instantly share code, notes, and snippets.

@JenniferMack
Last active August 29, 2015 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JenniferMack/8ae067b639caf96eafec to your computer and use it in GitHub Desktop.
Save JenniferMack/8ae067b639caf96eafec to your computer and use it in GitHub Desktop.
Post to WordPress from Ulysses using the xmlrpc interface.
#!/usr/bin/env ruby
require 'xmlrpc/client'
wordpress = XMLRPC::Client.new_from_hash(
{ "host" => "yourblogname",
"user" => "yourWPusername",
"password" => "yourWPpassword",
"use_ssl" => nil, #change to true if hosted on SSL
#-------------------------------------------------------#
"path" => "/xmlrpc.php"
})
post = []
content = {}
ARGF.each_line do |line|
next if "\n" == line
post << line.chomp.gsub(/(a\W+)(href="[^#])/, '\1target="_blank" \2')
end
content["title"] = post.shift.gsub(/<\/*h1>/, '')
content["mt_keywords"] = post.shift.gsub(/<\/*p>/, '').split(/,\s*/)
content["description"] = post.join("\n\n").sub(/<p>MORE<\/p>/, '<!--more-->')
begin
postnum = wordpress.call(
'metaWeblog.newPost',
0,
wordpress.user,
wordpress.password,
content,
false # false for draft, true for publish
)
puts "Posting Success! (##{postnum})"
rescue => err
puts "Posting error: #{err}"
end
@JenniferMack
Copy link
Author

This is the fastest way to get HTML from Ulysses to WordPress.

Notes:

All links will have target=“_blank” added to them.

Change use_ssl to true if you’re blog is on SSL capable host.

Change line 33 to true if you want it published when posted. Draft is the default.

Usage:

In Ulysses, copy as html or use the export panel. Make sure it’s set for “snippet.” Then from the terminal do : pbpaste | wp-post.rb

This will also work as an Automator action, and the output is notification center friendly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment