Okay, confirmed that newline literals n are interpreted as intended:

(defun new-post ()
  (interactive)
  (let ((title (new-post-read-args "Post Title: ")))
  (switch-to-buffer
   (find-file
    (concat +blog-path+
	    (new-post-make-file-name title))))
  (beginning-of-buffer)
  (insert
   (concat "---\n" 
	   "layout: post\n"
	   (new-post-date-string)
	   "\n" "title: " title "\n"
	   "categories: \n"
	   "---\n"))))

So now I just do M-x new-post Something I am thinking about, type type type, and M-x publish.