ブログ記事を半自動的に生成できないかいろいろ実験してみた

この記事は https://github.com/kamonohashiK/blog_automationに上げたIssueをプログラムで拾い上げれば、それをそのままブログの下書きに使えるのではないかというアイデアのもと、試験的に書いてみたものです。

まだまだ実用レベルには至っていないとは思うものの、過去の思考の過程を追っかけるにはいいんじゃないかと思ってあえて公開してみます。

GithubのIssueからブログ記事を自動投稿できるようにする

  • 自分の考えを表明するために文章を書かなきゃいけないなあと思った
  • ただまとまった量の文章を書こうとすると上手くまとめきれないことが多い
  • 毎日ネタをひねり出すのもつらい

  • Twitterとか断片的に情報出すのは無理なくできている

  • だったらいろんなサービスに断片的に書いていることを拾ってきて、それを一箇所にまとめてしまえばいいのではないか?

  • アウトプットしたいと思った理由:自分の人となりを知ってもらうこと

  • 何をしたらそれが伝わるか?(仮説):問題意識とその解決方法を見せる
  • その人が何をしたい(したくない)と思っているのか、そのために何をするのかを聞くのがいいんじゃないのか

  • GithubのIssueってそういう機能だよね、と思った

  • まずでかい問題があって、それを解決するための過程などを追記していく
  • だったらこれをそのままブログにすればよくね?と思った

  • ブログネタ(平たく言えば自分の問題意識)用のリポジトリを作って可視化

  • APIを叩いてその日起こしたIssueやコメントを機械的に拾って
  • ある程度編集したら記事として公開してしまう
  • どうせなら投稿もはてなAPIとかで自動化してしまいたい

  • GithubはてなAPIの存在は知ってるが、思った機能が使えるかどうかは知らない

  • まずはそれを調べるところから始めよう

GithubAPIでできることを調べる

1 を実現するために必要な情報が取れるのかを調べる

・指定したリポジトリのIssueとコメントの一覧が取れるか ・日付で絞り込みができたらなおGood

Issueごとのコメントはここで取れる

https://docs.github.com/en/rest/reference/issues#list-issue-comments

リポジトリごとのIssueのリスト https://docs.github.com/en/rest/reference/issues#list-repository-issues

まずIssueの一覧を取ってきてそのIDからコメントの一覧を取得するイメージかな?

楽勝で取れるっぽいので簡単なコード書いて試してみる

はてなブログAPIについて調べる

Github APIから取得したIssueの文章をはてなブログに投稿できるようにする

https://kamonohashik.hateblo.jp/

XMLをPOSTしてやると新規投稿ができるらしい

http://developer.hatena.ne.jp/ja/documents/blog/apis/atom

ここからログインしてread_public, write_publicを有効にする

https://www.hatena.ne.jp/kamonohashiy/config/auth/develop

適当極まりないがとりあえずPythonで要件を満たすコードが書けた。

パスワードとかもハードコーティングしちゃってるので、まだ公開はしない。 AWSにSAMで上げて自動投稿できるようにした段階でプッシュする。

cronで自動実行されない

SAMからローカルで実行したときは正常に動くのだが、cronで指定したはずの時間に自動実行されない。

何かが間違っているのか、要調査

Issueを起こしたときの最初のコメントが記事に反映されていない

タイトルの通り

Issueを取ってきたときのレスポンスのbodyにコメントが含まれているので、それを表示するよう修正。