はてなブログにorgファイルを投稿するためのCLIツールです。pandocを使用してorgファイルをmarkdownに変換し、はてなブログAtomPub APIを使用して投稿します。
- Go 1.18以上
- pandoc
go build -o hatena-blog-org./hatena-blog-org -file article.org -id your-hatena-id -key your-api-key -domain your-blog-domain-file: 投稿するorgファイルのパス(必須)-id: はてなID(必須)-key: APIキー(必須)-domain: ブログドメイン(必須)-category: カテゴリー(任意)-draft: 下書きとして投稿(任意)-config: 設定ファイルのパス(任意)-interactive: 対話モード(任意)
設定ファイル(JSON形式)を使用して認証情報を保存できます:
{
"hatena_id": "your-hatena-id",
"api_key": "your-api-key",
"blog_domain": "your-blog-domain"
}デフォルトの設定ファイルパス:
~/.config/hatena-blog-org/config.json
./hatena-blog-org -interactive対話モードでは、必要な情報を順次入力できます。
タイトルとカテゴリはOrgファイルの冒頭で指定できます:
#+title: ブログ記事のタイトル
#+filetags: :プログラミング:Go:技術ブログ:
記事の内容をここに書きます。
* 見出し1
これは記事の内容です。
** 見出し2
- リスト項目1
- リスト項目2
#+title:ディレクティブでタイトルを指定(大文字小文字は区別しません)- 指定しない場合は「Untitled」になります
#+title: 記事のタイトル
# または
#+TITLE: 記事のタイトル
#+filetags:ディレクティブでカテゴリを指定(大文字小文字は区別しません)- 複数の区切り文字に対応:スペース、コロン、混合形式
# スペース区切り
#+filetags: カテゴリ1 カテゴリ2 カテゴリ3
# コロン区切り(Orgモード標準)
#+filetags: :カテゴリ1:カテゴリ2:カテゴリ3:
# 混合形式
#+filetags: カテゴリ1:カテゴリ2 カテゴリ3:カテゴリ4
-categoryオプションで指定したカテゴリも追加されます
#+title: Goでのブログ投稿ツール作成
#+filetags: :Go:CLI:ブログ:技術:
Goを使ってはてなブログに投稿するCLIツールを作成しました。
* 概要
このツールの特徴は以下の通りです。
** 機能
- orgファイルの自動変換
- カテゴリの自動設定
- 下書き投稿対応
** コード例
#+begin_src go
package main
import "fmt"
func main() {
fmt.Println("Hello, はてなブログ!")
}
#+end_src
* まとめ
便利なツールができました。
- はてなブログの設定画面で「詳細設定」を開く
- 「AtomPub」セクションでAPIを有効化
- 「ルートエンドポイント」に表示されるURLを確認
- アカウント設定でAPIキーを確認
go test -vこのツールは画像のアップロードをサポートしていません。
- orgファイル内の
[[attachment:image.png]]のような画像リンクは、マークダウン変換時にとして出力されますが、画像ファイル自体はアップロードされません - 画像を含む記事を投稿したい場合は、事前にはてなフォトライフなどに画像をアップロードし、そのURLを使用してください
- ATTACHプロパティ(
:ATTACH:タグ)やIDプロパティ({#...}形式)は投稿時に自動的に除去されます
- 複雑なorgファイルの機能(表、数式、特殊ブロックなど)は、pandocの変換結果に依存します
- はてなブログ固有の記法(はてな記法)には対応していません
- APIキーは機密情報です。適切に管理してください
- 設定ファイルは適切な権限(600)で保存されます
- pandocがインストールされていない場合、変換テストはスキップされます