<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Go on Yoshiyuki Kurose</title><link>http://yoshiyuki-140.github.io/tags/go/</link><description>Recent content in Go on Yoshiyuki Kurose</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Mon, 15 Jun 2026 13:28:43 +0900</lastBuildDate><atom:link href="http://yoshiyuki-140.github.io/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>タイトルからHugoのSlugを自動生成してくれるCLIツールを作ってみた!</title><link>http://yoshiyuki-140.github.io/posts/generate-hugo-slugs-cli-tool/</link><pubDate>Mon, 15 Jun 2026 13:28:43 +0900</pubDate><guid>http://yoshiyuki-140.github.io/posts/generate-hugo-slugs-cli-tool/</guid><description>&lt;h1 id="概要"&gt;概要&lt;/h1&gt;
&lt;p&gt;Hugo&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;は静的サイト生成のためのツールで，マークダウンで書いた記事等をHTML/CSSファイルにしてくれます．
しかしHugoは新しい記事のテンプレートを作る際にSlug&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;を考える必要があり，手間でした．
uuidgen&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;などを使っても同様の省力化はできますが，その場合は生成されるテンプレートファイル名と記事の中身が紐づかず管理が面倒になってしまいます．
そこで，軽量なローカルLLMを使うことでタイトルに意味が紐づいたSlugを生成してくれるCLIツール&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;を作成しました．&lt;/p&gt;
&lt;p&gt;&lt;img alt="動作例" loading="lazy" src="http://yoshiyuki-140.github.io/posts/generate-hugo-slugs-cli-tool/images/output.gif"&gt;&lt;/p&gt;
&lt;h2 id="仕組み"&gt;仕組み&lt;/h2&gt;
&lt;p&gt;&lt;img alt="コンポーネント" loading="lazy" src="http://yoshiyuki-140.github.io/posts/generate-hugo-slugs-cli-tool/images/image-1.png"&gt;&lt;/p&gt;
&lt;p&gt;仕組みはシンプルです．&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;① ユーザにセクション名と作成予定の記事のタイトルを聞きます．&lt;/li&gt;
&lt;li&gt;② LLMに適切なシステムプロンプトとユーザが入力した記事のタイトルを与え，Slugの候補を生成してもらいます．&lt;/li&gt;
&lt;li&gt;③ Slugの候補は必要に応じて再生成し，決まり次第hugoのコマンドを呼び出して記事のひな形を作成します．&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="インストール"&gt;インストール&lt;/h2&gt;
&lt;p&gt;前提として，Ollama&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;とHugo&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;の&lt;a href="https://github.com/gohugoio/hugo#standard-edition"&gt;Standard edition&lt;/a&gt;をインストールしておく必要があります．&lt;/p&gt;
&lt;p&gt;&lt;code&gt;hugo-llslug&lt;/code&gt;自体のインストール方法は&lt;a href="https://github.com/yoshiyuki-140/hugo-llslug/blob/main/docs/README.ja.md#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB"&gt;こちら&lt;/a&gt;にまとめました．
プラットフォームに合わせてインストールしてください．&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;このツールによりhugoで記事を書き始める手間が減り，かつローカルLLMなのでネットがない場所でも楽しく記事を書き始めることができます．&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a href="https://gohugo.io/"&gt;Hugo Top Page&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/ja/docs/Glossary/Slug"&gt;Slug(スラッグ)&lt;/a&gt;&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;&lt;a href="https://man7.org/linux/man-pages/man1/uuidgen.1.html"&gt;uuidgenコマンド&lt;/a&gt;&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;&lt;a href="https://github.com/yoshiyuki-140/hugo-llslug"&gt;hugo-llslug GitHub&lt;/a&gt;&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;&lt;a href="https://ollama.com/"&gt;Ollama Top Page&lt;/a&gt;&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item></channel></rss>