taktamur's Scrap Blog

Tag: #hugo

4 scraps

🤖 GA4 と Cloudflare Web Analytics を両方入れた

[blog.taktamur.me] にアクセス解析を入れた。

やったこと

[baseof.html] の <head> に gtag.js 追加。

<script async src="https://www.googletagmanager.com/gtag/js?id=G-TJH5375VBJ"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-TJH5375VBJ');
</script>

[Cloudflare Pages] の Metrics → Web Analytics 有効化。JS 追加不要。

ハマり

  • Web Analytics の有効化UIは Metrics タブの中。独立したタブじゃなかった。
  • 有効化しても即反映されず、次回デプロイが必要。空コミットでトリガーした。

確認

$ curl -s https://blog.taktamur.me/ | grep gtag
<script async src="https://www.googletagmanager.com/gtag/js?id=G-TJH5375VBJ"></script>
$ curl -s https://blog.taktamur.me/ | grep cloudflareinsights
cloudflareinsights.com/beacon.min.js

GA4 は Google Analytics のリアルタイム、CF は ダッシュボード の Web Analytics でデータ確認。


🤖 Discordのチャットからブログ記事が公開されるまでの仕組み

💡 この記事は、まさにこの記事で説明しているフローを使って作られました。Discord で「整理して記事にして」と言ったら Hermes が markdown を書いて GitHub に push、数分後には blog.taktamur.me に反映されています。

システム構成

ユーザがDiscrodに書き込みすると、それがHermes Agentが読み取り解釈します。Hermes AgentはAI Agentで、モデルとしてはDeepseek v4 Proを使っています。

Hermes Agentはgitリポジトリに記事を追加して、pushします。Cloudflareはgithub連動していて、更新に追従してblog.taktamur.meを更新します。 流れ図

レイヤー 役割
Discord ユーザー入力。チャット感覚で記事のネタを投げる
Hermes Agent AI アシスタント。Discord メッセージを受信し、記事の執筆・編集を行う
GitHub プライベートリポジトリ taktamur/hugo-scrap-blog。記事の markdown ファイルを管理
Cloudflare Pages Git 連携で自動ビルド&デプロイ。push を検知して hugo を実行
blog.taktamur.me 公開ブログ。Hugo で生成された静的サイト

ステップ別の流れ

  1. 投稿 — Discord の #一般 チャンネル(またはスレッド)に「これ記事にして」と書く
  2. 受信&整形 — Hermes Agent が内容を受け取り、日付・タグを判断して markdown に整形
  3. ファイル作成/tmp/hugo-scrap-proto/scrap-blog/content/scraps/.md ファイルを生成(事前に git pull を実行)
  4. Git pushgit addgit commitgit push origin main
  5. 自動デプロイ — Cloudflare Pages が push を検知し、hugo ビルド → デプロイ(数分で完了)
  6. 公開https://blog.taktamur.me/ に記事が表示される

記事ファイルの中身

---
date: 2026-07-25
tags: ["タグ1", "タグ2"]
title: "記事のタイトル"
---

本文はここに。Markdown形式で自由に書く。

LLM生成記事には 🤖 マーカーを付ける(最初の見出しに `## 🤖` を付与、または `title: "🤖 タイトル"`
  • frontmatter: title でタイトルを明示(省略可。省略時は本文の最初の見出しが使われる)
  • タグは日本語可(preserveTaxonomyNames: true
  • 🤖 マーカーで LLM が書いた記事であることを明示

🤖 Hugo スクラップブログを本番化した

昨日 /tmp/hugo-scrap-proto/scrap-blog/ に作った Hugo スクラップブログのプロトタイプを、Cloudflare Pages にデプロイして本番公開した。

やったこと

  • GitHub private repo 作成: taktamur/hugo-scrap-blog に初期コミットを push
  • 本番設定: hugo.yaml の baseURL を blog.taktamur.me に、languageCodelocale に修正(Hugo v0.158+ の deprecation 対応)
  • Cloudflare Pages Git 連携: API トークン不要の Git 連携方式でセットアップ。push を検知して自動ビルド&デプロイ
  • カスタムドメイン: blog.taktamur.me を設定(DNS 自動設定)
  • 動作確認: トップページ、タグページ、RSS、サイトマップすべて 200 OK

わかったこと

  • cloudflare/pages-action は deprecated(2024年10月)。現在は cloudflare/wrangler-action@v3 が公式推奨
  • Hugo だけの静的サイトなら、GitHub Actions より Cloudflare Pages の Git 連携の方がシンプル(トークン不要、PR プレビュー自動付き)
  • Cloudflare Pages のデフォルト Hugo バージョンは古いので、環境変数 HUGO_VERSION=0.164.0 を明示設定する必要がある

今後の運用

リポジトリに Markdown 記事を追加して main に push するだけで公開される。タグ説明文は content/tags/◯◯/_index.md に書けばタグページに反映。


🤖 Hugoの機能を調べた

ブログを作る前に、Hugoに何ができて何ができないかを調べた。

できること

  • Markdown → HTML変換(コードハイライト付き)
  • 複数タグ・タグ別一覧(タクソノミー標準装備)
  • タグ説明文(_index.md の frontmatter)
  • 日付順ソート(date フィールドで自動)
  • テンプレートカスタマイズ(Go Template)
  • 下書き管理(draft: true でビルド除外)
  • 画像の最適化・リサイズ(ビルド時自動)
  • RSSフィード自動生成
  • サイトマップ自動生成
  • 日本語タグ対応(preserveTaxonomyNames: true
  • データファイル参照(JSON/YAML をテンプレートから利用)
  • 多言語対応(i18n)
  • ページ分割(ページネーション)
  • ビルド爆速(1000記事でも数秒)
  • Cloudflare Pages / Netlify に無料デプロイ

できないこと

  • 全文検索
  • コメント機能
  • ユーザー認証・ログイン
  • スマホからの直接投稿
  • リアルタイム更新
  • 動的フィルタリング(タグのAND/OR検索など)
  • アクセス解析
  • データベース連携

📝 メモ:できないことの一部はクライアントJSや外部サービスで補えるらしい(pagefindで全文検索、giscusでコメント、GitHub Mobileでスマホ投稿、Decap CMSで管理画面)。実際に試したら別記事にする。


← All Tags