diff --git a/layers/+blog/org2blog/README.org b/layers/+blog/org2blog/README.org
new file mode 100644
index 000000000000..31f03263a8f2
--- /dev/null
+++ b/layers/+blog/org2blog/README.org
@@ -0,0 +1,42 @@
+#+TITLE: org2blog layer
+#+HTML_HEAD_EXTRA:
+
+* Table of Contents :TOC_4_org:noexport:
+ - [[Description][Description]]
+ - [[Install][Install]]
+ - [[Key bindings][Key bindings]]
+
+* Description
+This layer provides org to wordpress blog integration. For standard
+configurations one simply needs to configure the hostname of the wordpress blog
+and enter the username and password in a ~.netrc~ or ~.authinfo.gpg~ file.
+
+* Install
+To use org2blog add it to your =~/.spacemacs= file
+
+#+begin_src emacs-lisp
+ (setq-default dotspacemacs-configuration-layers
+ '((org2blog :variables org2blog-name "myblog.wordpress.com")))
+#+end_src
+
+Additionally add an entry for the blog in your ~.netrc~ or ~.authinfo~ file.
+
+#+caption: example ~.authinfo.gpg~
+#+begin_example
+ machine myblog.wordpress.com login myusername password mypassword
+#+end_example
+
+* Key bindings
+
+| Key Binding | Description |
+|---------------+------------------------------------------------|
+| ~ o b~ | org2blog/wp-new-entry |
+| ~ m B n~ | org2blog/wp-preview-buffer-post |
+| ~ m B N~ | org2blog/wp-preview-subtree-post |
+| ~ m B d~ | org2blog/wp-post-buffer |
+| ~ m B p~ | org2blog/wp-post-buffer-as-page |
+| ~ m B s~ | org2blog/wp-post-buffer-as-subtree |
+| ~ m B B~ | org2blog/wp-post-buffer-and-publish |
+| ~ m B P~ | org2blog/wp-post-buffer-as-page-and-publish |
+| ~ m B S~ | org2blog/wp-post-buffer-as-subtree-and-publish |
+|---------------+------------------------------------------------|
diff --git a/layers/+blog/org2blog/config.el b/layers/+blog/org2blog/config.el
new file mode 100644
index 000000000000..7a8c5f128938
--- /dev/null
+++ b/layers/+blog/org2blog/config.el
@@ -0,0 +1,10 @@
+;;
+;; Author: Christian E. Hopps
+;;
+;; URL: https://github.com/syl20bnr/spacemacs
+;;
+;; This file is not part of GNU Emacs.
+;;
+
+(defvar org2blog-name nil
+ "hostname of the wordpress blog (e.g., myserverblog.org or myname.wordpress.com)")
diff --git a/layers/+blog/org2blog/packages.el b/layers/+blog/org2blog/packages.el
new file mode 100644
index 000000000000..3b56488f08e6
--- /dev/null
+++ b/layers/+blog/org2blog/packages.el
@@ -0,0 +1,66 @@
+;;; packages.el --- org2blog layer packages file for Spacemacs.
+;;
+;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
+;;
+;; Author: Christian E. Hopps
+;; URL: https://github.com/syl20bnr/spacemacs
+;;
+;; This file is not part of GNU Emacs.
+;;
+;;; License: GPLv3
+
+;;; Commentary:
+
+;; Org2blog layer.
+
+;;; Code:
+
+(defconst org2blog-packages
+ '((org2blog :location (recipe :fetcher github :repo "punchagan/org2blog"))
+ org
+ metaweblog
+ xml-rpc))
+
+(defun org2blog/init-xml-rpc ()
+ (use-package xml-rpc))
+
+(defun org2blog/init-metaweblog ()
+ (use-package metaweblog))
+
+(defun org2blog/init-org2blog ()
+ (use-package org2blog
+ :commands (org2blog/wp-mode org2blog/wp-new-entry org2blog/wp-login)
+ :init
+ (spacemacs/set-leader-keys "ob" 'org2blog/wp-new-entry)
+ :config
+ (progn
+ ;; Map emacs languages to HTML recognized ones.
+ (setq org2blog/wp-shortcode-langs-map '(("emacs-lisp" . "lisp") ("sh" . "bash")))
+
+ (if org2blog-name
+ (setq org2blog/wp-blog-alist
+ `((,org2blog-name
+ :url ,(concat "http://" org2blog-name "/xmlrpc.php")
+ :username ,(car (auth-source-user-and-password org2blog-name))
+ :password ,(cadr (auth-source-user-and-password org2blog-name)))))))))
+
+(defun org2blog/post-init-org ()
+ (spacemacs/set-leader-keys-for-major-mode 'org-mode
+ "Bx" 'org2blog/wp-delete-entry
+ "BX" 'org2blog/wp-delete-page
+ "Bl" 'org2blog/wp-login
+ ;; preview ('n' unixy dry-run)
+ "Bn" 'org2blog/wp-preview-buffer-post
+ "BN" 'org2blog/wp-preview-subtree-post
+ ;; post, capitalize for -and-publish
+ "Bb" 'org2blog/wp-post-buffer
+ "Bp" 'org2blog/wp-post-buffer-as-page
+ "Bs" 'org2blog/wp-post-subtree
+
+ "BB" 'org2blog/wp-post-buffer-and-publish ;; need prefix key
+ "BP" 'org2blog/wp-post-buffer-as-page-and-publish ;; need prefix key
+ "BS" 'org2blog/wp-post-subtree-as-page-and-publish
+ ;; "bpS" 'org2blog/wp-post-subtree-as-page
+ )
+)
+;;; packages.el ends here