🤔
Zennのスラッグ(slug)とは
slug(スラッグ)は、記事や本のユニークなIDのような文字列です。例えばslugがexample-article
の記事のURLは
https://zenn.dev/ユーザー名/articles/example-article
となります。
slugの指定
ウェブ上で記事や本を作成する場合、slugはランダムで作成されます。
コンテンツのGitHubリポジトリ管理を行っている場合は、slugを任意に指定できます。
- 記事の場合はmarkdownファイル名を
articles/[slug].md
という形式にします - 本の場合はディレクトリ名を
books/[:slug]
という形式にします
Zenn CLIを使うとファイルの作成時にslugを指定することができます。たとえばwhat-is-slug
というslugの記事を作成したい場合は以下のようなコマンドを実行します。
$ npx zenn new:article --slug what-is-slug
# => articles/what-is-slug.md`が作成される
詳しくはZenn CLIを使ったファイルの作成方法をご覧ください。
slug指定時の注意点
- slugはサイト全体で(記事や本などのコンテンツの種類ごとに)ユニークにする必要があります。他ユーザーの記事で使用済みのslugも使用できないのでご注意ください。
- slugは半角英小文字(
a-z
)、半角数字(0-9
)、ハイフン(-
)、アンダースコア(_
)の12〜50字の組み合わせにする必要があります。 - slugは一度zenn.dev上で作成されたら変更できません(slugを変えると別の投稿として作成されます)。
Discussion
質問です。
なぜ slug は12〜50字が必要ですか?
slugが重複する可能性を低くするためです。
slugに大文字を含んでいると
とエラーになったのですが、slugは小文字のみという制約があるのでしょうか?
はい、slugには小文字の半角英数字のみ(
[a-z0-9_]
)を利用できます。了解しました。注意点に「小文字の」を追加してもらえると助かります。
すいません、「注意点」ではなく「エラーメッセージ」でした。
わかりづらくてすみません。承知しました!
アンダースコア(
_
)を含んだslugで記事を公開できてしまったのですが、意図した仕様でしょうか?指定した slug が短いときに、ランダムに付け足して12字以上にしてくれる機能があると嬉しいな。
例えば
--slug 'erc20-*'
と指定できる、とか。自分の検索容易性のため、先頭部分は好きなのを付けたい
slugの具体的な指定方法をこのページに記載しておいていただきたいです。
追記しました。
早速対応頂きありがとうございます。私のコメントの意図が不明瞭で申し訳ございません。私のコメントは、
のようにslugを指定できることがこのページに記載されていたほうがよいのでないか、というものでした。
「zenn slug 指定」と検索するとこのページがトップにヒットするため、
このページだけでslugの具体的な指定方法がわかるようになっているとよいと思います。
たしかにその通りですね。追記しました。
質問です
slugを用いると以下のルールでURLが発行されるわけですが、slugの名前空間がユーザーのリソースごとではなく、zenn全体なのは違和感があります。
このslugの仕様は改善できないものでしょうか?
なら、slugがzenn全体で一意であることをユーザーに求めるのはまだ理解できるのですが・・・
同感です。
大いに違和感があります。
書いている本人がファイルを見ただけでは内容が判らないというのはとても困るので、可能なら判り易い名前が良いのですが、そういうのは競合し易い名前でしょう。
ですが、ユーザ名を名前空間に含んでいるなら全体が競合する事は考えなくても良いはずで...
質問が2か月も放置されているというのは、検討する気も無いって事でしょうかねぇ。
避けられない仕様なら受け入れるしかないのですが、競合した場合はどうなるのでしょうか?
また、競合している事を事前に察知する事は可能なのでしょうか?
この辺りに引っ掛かって、全然書き始める事が出来ないで居ます。
お返事遅くなりすみません。
slugの仕様に関してはシステム設計の根幹に関わる部分なので変更する予定はありません。
GitHubでコンテンツを管理する場合、slugの衝突を事前に検知できないという課題はあると思っていますが、実際にはほぼ発生していないので対応を見送っている状況です。
多分「当初は」そうだったのかもしれないけれど、名前空間のほぼ先頭に、一意であるだろうユーザ名があるので、現在では冗長な仕様なんじゃないかという(質問者さんの)指摘だろうと思います。
僕も、仕様を見直しても良いのではないかと感じて、賛同しました。
それとも、管理上はユーザ名を含まないモノでフラットに並べているのでしょうか?
その場合はどうなるのかも質問したつもりですが?
この件については、解決方法は無いと?
競合覚悟でやってみる(競合時の挙動は未回答)か、別の質問者さんみたいに先頭を意味のある文字列にして以降をランダムで埋めるか位でしょうか...
新規でslugを設定した時に従来のidで記載されている記事を削除することはできないのでしょうか?
それぞれ旧ID,新slugの2種類ずつページができてしまい、GitHubでみてもGit確認しても404吐かれるのにZennだけ反映されている状況で手出しが出来ず、、
記事の削除はダッシュボードから行ってください。GitHubから削除しただけでは、Zenn上の記事は削除されません。
参考: https://zenn.dev/zenn/articles/zenn-cli-guide#記事の削除