RSSリーダーのFeedlyを使っていて、はてなブログとかは全文リーダー内に表示されるのに、うちだけ表示されないな?と疑問に思っていました。 今回ははてなブログのフィードとHugoのデフォルトのフィードを比べた上でよりRSSリーダーフレンドリーなフィードを構築していきます。
まずFeedlyで適当に普段読んでるhatenaブログをみてみると、取得してるURLが設定画面で把握できます。大抵は以下のようなXMLがでてきます:
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
<title>・x・ぼくののうみそ</title>
<link href="https://bokunonoumiso.hatenablog.com/"/>
<updated>2022-08-09T12:41:41+09:00</updated>
<author>
<name>bokunonoumiso</name>
</author>
<generator uri="https://blog.hatena.ne.jp/" version="149d375eb29bfc5c8439e961a2b85a">Hatena::Blog</generator>
<id>hatenablog://blog/6653812171403772804</id>
<entry>
<title>高い車に乗って安い車を煽る</title>
<link href="https://bokunonoumiso.hatenablog.com/entry/2022/08/09/124141"/>
<id>hatenablog://entry/4207112889907092076</id>
<published>2022-08-09T12:41:41+09:00</published>
<updated>2022-08-09T12:41:41+09:00</updated>
<summary type="html">高い車が安い車を煽る…</summary>
<content type="html"><p>高い車が安い車を煽る</p></content>
</entry>
</feed>
注意点としては
&
も変換されてしまいうまくいかなかった。<content:encoded>
を使うと良いらしい https://www.w3.org/wiki/RssContentHugo標準付属のrss.xmlはRSS 2.0なのかAtomなのかよくわからない感じですね。 hatenaブログのフィードっぽくしたテンプレートはこんな感じです。
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := slice -}}
{{- if or $.IsHome $.IsSection -}}
{{- $pages = $pctx.RegularPages -}}
{{- else -}}
{{- $pages = $pctx.Pages -}}
{{- end -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link href="{{ .Permalink }}"/>
<updated>{{ time.Format "2006-01-02T15:04:05-0700" .Site.LastChange | safeHTML }}</updated>
<author>
<name>{{ $.Site.Params.author }}</name>
</author>
<generator uri="https://gohugo.io" version="{{ hugo.Version }}">Hugo</generator>
<id>{{ .Permalink }}</id>
{{ range $pages }}
<entry>
<title>{{ .Title }}</title>
<link href="{{ .Permalink }}"/>
<id>{{ .Permalink }}</id>
<published>{{ .PublishDate.Format "2006-01-02T15:04:05-0700" | safeHTML }}</published>
<updated>{{ .Lastmod.Format "2006-01-02T15:04:05-0700" | safeHTML }}</updated>
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<summary type="html">{{ .Summary | plainify }}...</summary>
{{ printf `<content type="html"><![CDATA[%s]]></content>` .Content | safeHTML }}
</entry>
{{ end }}
</feed>
詳細は以下のcommitを見てください。
https://github.com/klknn/klknn.github.io/commit/afb831f515d54b451e70fbc5e5ae95e669d79c75
RSSリーダーって10年前まではみんな使ってたのにGoogle readerが終わって一気に死んだよね…インターネット老人ネタでした。
Copyright © klknn All Rights Reserved.