See this blog post for background and instructions.
Created
May 16, 2016 21:50
-
-
Save rossmeissl/601f51ba16d225299b6135aaa3dd39f4 to your computer and use it in GitHub Desktop.
How to migrate your Hubspot blog to GitHub Pages, Jekyll, or somewhere else
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'active_support' | |
require 'fileutils' | |
require 'reverse_markdown' | |
require 'hubspot-ruby' | |
require 'sanitize' | |
Hubspot.configure hapikey: ENV.fetch('HUBSPOT_API_KEY') | |
HUBSPOT_BLOG_ID = ENV.fetch('HUBSPOT_BLOG_ID') | |
POSTS_DIR_NAME = 'blog' | |
POSTS_DIR = File.expand_path(POSTS_DIR_NAME, __dir__) | |
SANITIZE_CONFIG = Sanitize::Config.merge(Sanitize::Config::BASIC, elements: Sanitize::Config::BASIC[:elements] + %w(h1 h2 h3 h4 h5)) | |
HANDLEBARS_MATCHER = /\{\{.*\}\}/ | |
FileUtils.mkdir_p POSTS_DIR | |
FileUtils.rm Dir.glob("#{POSTS_DIR}/*") | |
Hubspot::Blog.find_by_id(HUBSPOT_BLOG_ID).posts(created__gt: (Time.now - 100.months), limit: 999).each do |post| | |
next if post['archived'] | |
slug = post['slug'].split('/').last | |
title = post['name'] | |
html = Sanitize.fragment(post['post_body'], SANITIZE_CONFIG).gsub(HANDLEBARS_MATCHER, '') | |
body_markdown = ReverseMarkdown.convert html | |
image = post['featured_image'] | |
description = post['meta_description'] | |
original_url = post['published_url'] | |
filename = File.join(POSTS_DIR, "#{slug}.md") | |
puts title | |
markdown = body_markdown.prepend <<-eof | |
--- | |
title: "#{title.gsub /"/, '\"'}" | |
--- | |
eof | |
File.write filename, markdown | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source 'https://rubygems.org' | |
gem 'hubspot-ruby' | |
gem 'pry' | |
gem 'reverse_markdown' | |
gem 'sanitize' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment