【Blogger】コメントを記事としてインポートする
投稿日:
更新日:
コメントを 1 件ずつ独立した記事としてインポートする簡単な方法を見つけたので、本記事でその方法を示す。
Blogger は記事とコメントをどう判別しているのか
Blogger のバックアップファイルは、Blogger ダッシュボードの設定画面の「ブログの管理」>「コンテンツをバックアップ」からダウンロードできる。
この .xml
ファイルにはブログの記事やページ、コメントだけでなく、ブログの設定項目やテンプレートの情報なども各 entry
要素に含まれている。
当初はコメントの記事化にこのバックアップファイルを利用しようと考えていた。
Blogger の仕様を調べるのに、以下のリファレンスガイドが参考になった。
このページの「投稿にコメントをリンクする」の項に、Blogger が記事とコメントをどうやって判別しているのかの説明がある。リンク先の内容を以下に一部抜粋する。
Blogger のエクスポート形式では、投稿とコメントの両方のエントリが 1 つの Atom フィード ドキュメントに含まれます。Blogger は、この 2 種類のエントリを区別するために
<atom:category>
要素を利用します。この要素には、エントリが投稿用かコメント用かを表す term パラメータが含まれます。
上の文章にさらに付け加えると、Blogger は各 entry
内にある category
要素の term
属性の #
以降の文字列によって、そのエントリが記事(上の引用で言うところの「投稿」)かコメントかを判別している。
記事(投稿)の場合
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/blogger/2008/kind#post"/>
コメントの場合
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/blogger/2008/kind#comment"/>
バックアップファイルとブログフィードの共通点
Blogger が記事とコメントをどう判別しているかがわかったので、コメントの記事化もそう難しくはなさそうだ。
早速以下の手順でやってみたところうまくいった。
- バックアップファイルをダウンロードする
- ファイルをテキストエディタで開き、コメントの
entry
タグのみを残す kind#comment
をkind#post
に全置換して保存する- 編集したバックアップファイルを Blogger にインポートする
ただこの方法は、.xml
ファイルの編集を伴うのでスマホからだと実行が難しいし、2 の「コメントの entry
タグのみを残す」作業のためにコードを整形したり消したい部分を選択したり……が地味に面倒だった。
そんなある日、あるカスタマイズのためにブログのコメントフィードをいじっていたら、ふと Atom 形式のフィードの記述がバックアップファイルと似ていることに気が付いた。
調べてみたら、Blogger のブログフィードはデフォルトの状態では Atom 1.0 という形式だということがわかった。
そして、Blogger のバックアップファイルの形式も Atom 1.0。
同じ形式ならもしかして……?と、保存したコメントフィードを出来心で Blogger にインポートしたところ、エラーもなく受け入れられた。
ただ予想外だったのが、コメントがコメントとしてではなく、記事としてインポートされたことだった。
兎にも角にもこの方法を使えば当初の目的が果たせることがわかったので、そのやり方を次項で詳しく述べていく。
フィードを利用してコメントを記事としてインポートする
※はじめてこの方法を試す場合は、テスト用のブログに少数(5 件や 10件など)のコメントのインポートを推奨。一気に数百件とかやってしまうと消すのめちゃくちゃたいへんなので……(実体験)
まず、コメント本文の全文が取得できるように設定する。Blogger ダッシュボードの設定画面の「サイトフィード」を以下のどちらかにすればいい。
- 「ブログフィードを許可」が「完全」または「追記の区切りまで」
- 「ブログフィードを許可」が「カスタム」かつ「ブログのコメント フィード」が「完全」
設定がうまくいったら、以下のようなコメントフィード URL でコメント本文の全文が取得できる。デフォルトで Atom 1.0 形式なので、?alt=atom
は付けなくていい。
https://[blogName].blogspot.com/feeds/comments/default
ただし上に挙げた URL のままでは最大で 25 件しかコメントを取得できない。フィードの URL に ?max-results=300
を付ければ、1 つのフィードから最大で 300 件のコメントが取得できる。
https://[blogName].blogspot.com/feeds/comments/default?max-results=300
300 件以上のコメントを取得したい場合は、フィードの URL に ?max-results=300&start-index=301
を付ければ次の 300 件のコメントが取得できる。
https://[blogName].blogspot.com/feeds/comments/default?max-results=300&start-index=301
さらに多くのコメントを取得したい場合は start-index
の数値を 300 ずつ増やしていけばいい。
さらにパラメータでコメントフィードの取得範囲を絞りたい場合は、以下のツールを使うのがおすすめ。
また、以下の URL のように特定の記事のコメントだけを取得することもできる。
https://[blogName].blogspot.com/feeds/[postId]/comments/default
[postId]
の部分は、その記事の編集画面にアクセスするとアドレスバーに https://www.blogger.com/blog/post/edit/[blogId]/[postId]
と表示されるので、その [postId]
の数字をコピペする。
取得したいコメントのフィードを表示できたら、そのページで Ctrl + S(Mac の場合は command + S)を押す。「名前を付けて保存」ダイアログボックスが開くので、ファイル名を任意の文字列、拡張子を .xml
にして保存。
あとは、Blogger ダッシュボードの設定画面の「ブログの管理」>「コンテンツをインポート」で、先程作成した .xml
ファイルを選択すれば、以下の画像のようにコメントが記事としてインポートされる。

なぜコメントが記事としてインポートされるのか
なぜコメントフィードを保存してインポートすると、Blogger に記事とみなされるのか。当然不思議に思ったので理由を調べてみた。
Blogger のバックアップファイルとコメントフィードのコメントエントリを比較すると、細かい記述の違いはあれど、特に違ったのがコメントフィードの entry
タグには category
要素がないことだった。
前述の通り、category
要素の term
属性の記述によって、そのエントリが記事かコメントかが判別される。
しかしコメントフィードにはそもそも category
要素が存在しないので、そのエントリがコメントであることを判別できない。そのため記事としてインポートされる、ということだと思う。
あとがき
コメントフィードを使って、簡単にコメントを 1 件ずつ記事としてインポートする方法について書いた。
実は上にリンクを張ったリファレンス ガイドに思いっきり「Atom フィード」という単語が登場しているので、勘のいい人ならバックアップファイルとブログの Atom フィードの共通点にすぐ気付くと思う。私は JSON 形式のフィードしか普段いじってなかったのと、そもそも勘が悪いので気付くのに時間がかかった。
自分以外誰が参考にするんだって内容ではあるけども、個人的には Blogger に対する知見がさらに深まったのでわりと満足している。