Skip to content

Instantly share code, notes, and snippets.

@hiroara
Last active April 30, 2023 06:16
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiroara/4648755 to your computer and use it in GitHub Desktop.
Save hiroara/4648755 to your computer and use it in GitHub Desktop.
OctopressからQiitaへ記事を自動投稿するプラグインです。基本的にJekyllプラグインなのでJekyll単体でも使えるかもしれません(動作未確認)。 Octopressでこのプラグインを使うには、Gemfileに`gem 'qiita'`を追加して、pluginsフォルダ以下にqiita_post_generator.rbを配備してください。 あと、`_config.yml`に`qiita_token: abcdefghijklmnopqrstuvwxyz`の形式でQiita用のトークンを書いておきます。 rake generate の際に 2013-01-28-example-post.markdown のように qiita 属性 published: true が指定し…
layout title date comments published qiita categories
post
Qiita APIで自動投稿
2013-01-23 23:41
true
true
tags private
name versions
ruby
1.9.3
name versions
octopress
2.0
false
octopress

OctopressからQiitaへ記事を自動投稿するプラグインです。基本的にJekyllプラグインなのでJekyll単体でも使えるかもしれません(動作未確認)。

使い方

Octopressでこのプラグインを使うには、Gemfileにgem 'qiita'を追加して、pluginsフォルダ以下にqiita_post_generator.rbを配備してください。

あと、_config.ymlqiita_token: abcdefghijklmnopqrstuvwxyzの形式でQiita用のトークンを書いておきます。

rake generate の際に example-post.markdown のように qiita 属性 published: true が指定してあるポストのみが投稿されます。

# -*- encoding: utf-8 -*--
require 'qiita'
module Jekyll
class QiitaPost < Page
def initialize(site, title, content, name, url, options)
@dir = '_qiita_post'
@site = site
@title = title
@name = name
@url = url
@tags = options["tags"]
@private = options["private"]
self.output = content.dup
self.adjust_content!
self.process @name
end
def posted_item?
File.exists? self.file_path
end
def post_item(qiita)
qiita.post_item title: @title, body: self.output, tags: @tags, private: @private
self.write site.source
puts "posted to Qiita (#{@title})."
end
def adjust_content!
self.output.gsub! /\n? *<!-- *more *--> *\n/, "\n"
self.output.gsub! /\n? *\[!.+\](.+) *\n/, "\n"
self.output << <<-ORIGIN
[元記事](#{site.config['url'] + @url})
ORIGIN
end
def destination(dest)
File.join(dest, @dir, self.name)
end
def file_path
self.destination site.source
end
end
class QiitaPostGenerator < Generator
safe true
def generate(site)
qiita_token = site.config['qiita_token']
return unless qiita_token
site.posts.each do |post|
if post.data["qiita"] && post.data["published"]
qiita = Qiita.new token: qiita_token
q_post = QiitaPost.new site, post.data["title"], post.content, post.name, post.url, post.data["qiita"]
q_post.post_item qiita unless q_post.posted_item?
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment