eSheepDev.BlogGenerator
0.0.8
dotnet tool install --global eSheepDev.BlogGenerator --version 0.0.8
dotnet new tool-manifest
dotnet tool install --local eSheepDev.BlogGenerator --version 0.0.8
#tool dotnet:?package=eSheepDev.BlogGenerator&version=0.0.8
nuke :add-package eSheepDev.BlogGenerator --version 0.0.8
BlogGenerator
マークダウン形式ファイルをHTMLに変換し、ブログとして公開するための静的サイトジェネレーター
概要
BlogGeneratorは、Markdownファイルをもとに静的なブログサイトを生成するツールです。
設定したテーマに基づいて、記事ページ、インデックスページ、タグページ、アーカイブページを生成します。
また、RSS/Atomフィードの生成もサポートしています。
特徴
- Markdownからの静的サイト生成
- Razor構文によるカスタマイズが可能なテーマ
- タグ、アーカイブページの自動生成
- RSS/Atomフィード対応
- oEmbedを使用したリッチコンテンツの埋め込み
- Amazonアソシエイトタグのサポート
必要条件
- .NET 10.0以上
使い方
コマンドライン引数
基本的な使用方法:
dotnet BlogGenerator.dll --input /path/to/input --output /path/to/output --theme /path/to/theme
dotnet toolを使用してインストールすることもできます:
dotnet tool install -g eSheepDev.BlogGenerator
dotnet toolを使用して実行する場合:
bloggen --input /path/to/input --output /path/to/output --theme /path/to/theme
生成とプレビュー
次の兄弟ディレクトリ構成になっている場合、同梱のPowerShellスクリプトでビルド、サイト生成、ローカルプレビューをまとめて実行できます。
Blog/
├─ BlogGenerator/
├─ theme/
├─ article/
└─ output/
.\build-preview.ps1 `
-ThemeRoot ..\theme `
-ArticleRoot ..\article
生成に成功すると output に成果物を作成し、http://127.0.0.1:8765/ でPythonのWebサーバーを起動します。終了するときは Ctrl+C を押します。
ThemeRootにはtemplatesディレクトリとblogconfig.jsonを持つテーマルート、ArticleRootにはMarkdown記事と静的ファイルを持つ入力ルートを指定します。相対パスと絶対パスのどちらも使用できます。
ポートを変更する場合:
.\build-preview.ps1 `
-ThemeRoot ..\theme `
-ArticleRoot ..\article `
-Port 8080
生成だけ行い、Webサーバーを起動しない場合:
.\build-preview.ps1 `
-ThemeRoot ..\theme `
-ArticleRoot ..\article `
-NoServer
スクリプトは新しい成果物を別ディレクトリへ生成・検証してから output と差し替えます。既存の output は output.previous-日時-ID という名前で残るため、不要になったことを確認してから削除してください。また、記事リポジトリの .git などの管理用ディレクトリは一時入力から除外され、成果物にはコピーされません。
必須オプション:
-i, --input, /input- Markdownファイルを含む入力フォルダーを指定します-o, --output, /output- HTMLファイルを出力するフォルダーを指定します--theme, /theme- テーマフォルダーを指定します
オプション引数:
-c, --config, /config- 設定ファイルのパスを指定します--oembed, /oembed- oEmbedキャッシュファイルのパスを指定します
設定ファイル
設定は以下の優先順位で適用されます(上に行くほど優先度が高い):
- 環境変数(
BLOGGEN_プレフィックス) - コマンドラインオプションで指定された設定ファイル
- カレントディレクトリの
appsettings.json - ユーザーホームフォルダの
~/.bloggen/config.json
設定ファイルの例(JSON形式):
{
"SiteOption": {
"SiteName": "サイト名",
"SiteDescription": "サイトの説明",
"SiteUrl": "https://example.com/",
"SiteAuthor": "サイト運営者名",
"SiteAuthorDescription": "サイト運営者の説明",
"AmazonAssociateTag": "amazon-tag"
},
"FeedOption": {
"MaxFeedItems": 10,
"UseRss2": true,
"UseAtom": true,
"RssFileName": "feed.rss",
"AtomFileName": "feed.atom",
"Language": "ja-JP"
}
}
環境変数
環境変数でも設定可能です(BLOGGEN_ プレフィックスが必要):
サイト設定
BLOGGEN_SITENAME- サイト名BLOGGEN_SITEURL- サイトURL(必須)BLOGGEN_SITEDESCRIPTION- サイトの説明BLOGGEN_SITEAUTHOR- 著者名BLOGGEN_SITEAUTHORDESCRIPTION- 著者の説明BLOGGEN_AMAZONTAG- Amazonアソシエイトタグ
フィード設定
BLOGGEN_FEED_USERSS2- RSS2.0フィードを生成するかどうか(true/false デフォルト: true)BLOGGEN_FEED_USEATOM- Atomフィードを生成するかどうか(true/false デフォルト: true)BLOGGEN_FEED_RSSFILENAME- RSSフィードのファイル名(デフォルト: feed.rss)BLOGGEN_FEED_ATOMFILENAME- Atomフィードのファイル名(デフォルト: feed.atom)BLOGGEN_FEED_MAXITEMS- フィードに含める記事の最大数(デフォルト: 10)BLOGGEN_FEED_LANGUAGE- フィードの言語(デフォルト: ja-JP)
Frontmatter
各マークダウンファイルの先頭にYAML形式のFrontmatterを記述できます:
---
Title: 記事のタイトル
Tags:
- "tag1"
- "tag2"
Published: 2025-01-01 20:00:00
IsFixedPage: false
---
ここから記事の本文...
IsFixedPage は固定ページの場合に true に設定します。通常時は省略可能です。
ページ分割
ページ分割は
で行います。これにより、インデックスページやアーカイブページでの表示を制御できます。
oEmbedによるリッチコンテンツ埋め込み
oEmbedに対応したサイトのコンテンツを埋め込むことができます:
[oembed:"https://www.example.com/page1"]
--oembed のオプションでキャッシュファイルを指定することで、oEmbedのキャッシュを保存できます。これにより、次回以降同じURLをキャッシュのデータで処理して生成時間を短縮できます。
キャッシュファイルはJSON形式で保存されます。
Amazonリンクの拡張
Amazonの商品リンクを自動的にアソシエイトタグ付きの形式に変換します。
[amazon:XXXXXXXXXX]
ライセンス
MIT License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.