markdown-to-html について
markdown-to-htmlは、MarkdownをHTMLに変換し、独自の変換スクリプト作成を案内するスキルです。開発者や文書作成者向けに、marked.js、pandoc、gomarkdown、静的サイトの作業手順を扱います。
主な機能
- 01MarkdownファイルからHTMLへの変換
- 02単一ファイルと一括変換
- 03marked.jsとpandocの設定
- 04GoのMarkdownパーサーとJekyllの利用
- 05サニタイズと描画問題への対処
活用シーン
- 01MarkdownからHTML文書を生成
- 02描画したMarkdownのプレビュー
- 03Markdownを使った静的サイト構築
- 04独自ツール向けの変換手順選定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill markdown-to-htmlインストール後、Claude Code で/markdown-to-htmlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/basic-markdown-to-html.mdcode-blocks-to-html.mdcollapsed-sections-to-html.mdcollapsed-sections.mdcode-blocks.mdgomarkdown.mdjekyll.mdmarked.mdhugo.mdbasic-markdown.mdtables-to-html.mdtables.mdpandoc.mdwriting-mathematical-expressions-to-html.mdwriting-mathematical-expressions.md詳細
Markdown から HTML への変換
marked.js ライブラリを使用して Markdown ドキュメントを HTML に変換するためのエキスパートスキル、またはデータ変換スクリプトを作成するためのスキルです。この場合、markedJS/marked リポジトリに類似したスクリプトを指します。カスタムスクリプトの場合、知識は marked.js に限定されず、データ変換のために pandoc や gomarkdown/markdown のようなツールのデータ変換メソッドを利用します。テンプレートシステムには jekyll/jekyll や gohugoio/hugo があります。
変換スクリプトまたはツールは、単一ファイル、バッチ変換、高度な構成を処理する必要があります。
このスキルを使用する場面
- ユーザーが「markdown を html に変換」または「md ファイルを変換」を依頼する場合
- ユーザーが「markdown をレンダリング」して HTML 出力したい場合
- ユーザーが .md ファイルから HTML ドキュメントを生成する必要がある場合
- ユーザーが Markdown コンテンツから静的サイトを構築している場合
- ユーザーが markdown を html に変換するテンプレートシステムを構築している場合
- ユーザーが既存のテンプレートシステム用のツール、ウィジェット、またはカスタムテンプレートに取り組んでいる場合
- ユーザーが Markdown をレンダリングされた HTML としてプレビューしたい場合
Markdown から HTML への変換
基本的な必須変換
詳細は basic-markdown-to-html.md を参照してください
```markdown
# Level 1
## Level 2
One sentence with a [link](https://example.com), and a HTML snippet like `<p>paragraph tag</p>`.
- `ul` list item 1
- `ul` list item 2
1. `ol` list item 1
2. `ol` list item 1
| Table Item | Description |
| One | One is the spelling of the number `1`. |
| Two | Two is the spelling of the number `2`. |
```js
var one = 1;
var two = 2;
function simpleMath(x, y) {
return x + y;
}
console.log(simpleMath(one, two));
```
```
```html
<h1>Level 1</h1>
<h2>Level 2</h2>
<p>One sentence with a <a href="https://example.com">link</a>, and a HTML snippet like <code><p>paragraph tag</p></code>.</p>
<ul>
<li>`ul` list item 1</li>
<li>`ul` list item 2</li>
</ul>
<ol>
<li>`ol` list item 1</li>
<li>`ol` list item 2</li>
</ol>
<table>
<thead>
<tr>
<th>Table Item</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>One</td>
<td>One is the spelling of the number `1`.</td>
</tr>
<tr>
<td>Two</td>
<td>Two is the spelling of the number `2`.</td>
</tr>
</tbody>
</table>
<pre>
<code>var one = 1;
var two = 2;
function simpleMath(x, y) {
return x + y;
}
console.log(simpleMath(one, two));</code>
</pre>
```
コードブロックの変換
詳細は code-blocks-to-html.md を参照してください
```markdown
your code here
```
```html
<pre><code class="language-md">
your code here
</code></pre>
```
```js
console.log("Hello world");
```
```html
<pre><code class="language-js">
console.log("Hello world");
</code></pre>
```
```markdown
```
```
visible backticks
```
```
```
```html
<pre><code>
```
visible backticks
```
</code></pre>
```
折りたたみセクションの変換
詳細は collapsed-sections-to-html.md を参照してください
```markdown
<details>
<summary>More info</summary>
### Header inside
- Lists
- **Formatting**
- Code blocks
```js
console.log("Hello");
```
</details>
```
```html
<details>
<summary>More info</summary>
<h3>Header inside</h3>
<ul>
<li>Lists</li>
<li><strong>Formatting</strong></li>
<li>Code blocks</li>
</ul>
<pre>
<code class="language-js">console.log("Hello");</code>
</pre>
</details>
```
数式の変換
詳細は writing-mathematical-expressions-to-html.md を参照してください
```markdown
This sentence uses `$` delimiters to show math inline: $\sqrt{3x-1}+(1+x)^2$
```
```html
<p>This sentence uses <code>$</code> delimiters to show math inline:
<math-renderer><math xmlns="http://www.w3.org/1998/Math/MathML">
<msqrt><mn>3</mn><mi>x</mi><mo>−</mo><mn>1</mn></msqrt>
<mo>+</mo><mo>(</mo><mn>1</mn><mo>+</mo><mi>x</mi>
<msup><mo>)</mo><mn>2</mn></msup>
</math>
</math-renderer>
</p>
```
```markdown
**The Cauchy-Schwarz Inequality**\
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
```
```html
<p><strong>The Cauchy-Schwarz Inequality</strong><br>
<math-renderer>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<mrow><mo>(</mo>
<munderover><mo data-mjx-texclass="OP">∑</mo>
<mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi>
</munderover>
<msub><mi>a</mi><mi>k</mi></msub>
<msub><mi>b</mi><mi>k</mi></msub>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<mo>≤</mo>
<mrow><mo>(</mo>
<munderover><mo>∑</mo>
<mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow>
<mi>n</mi>
</munderover>
<msubsup><mi>a</mi><mi>k</mi><mn>2</mn></msubsup>
<mo>)</mo>
</mrow>
<mrow><mo>(</mo>
<munderover><mo>∑</mo>
<mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow>
<mi>n</mi>
</munderover>
<msubsup><mi>b</mi><mi>k</mi><mn>2</mn></msubsup>
<mo>)</mo>
</mrow>
</math>
</math-renderer></p>
```
テーブルの変換
詳細は tables-to-html.md を参照してください
```markdown
| First Header | Second Header |
| ------------- | ------------- |
| Content Cell | Content Cell |
| Content Cell | Content Cell |
```
```html
<table>
<thead><tr><th>First Header</th><th>Second Header</th></tr></thead>
<tbody>
<tr><td>Content Cell</td><td>Content Cell</td></tr>
<tr><td>Content Cell</td><td>Content Cell</td></tr>
</tbody>
</table>
```
```markdown
| Left-aligned | Center-aligned | Right-aligned |
| :--- | :---: | ---: |
| git status | git status | git status |
| git diff | git diff | git diff |
```
```html
<table>
<thead>
<tr>
<th align="left">Left-aligned</th>
<th align="center">Center-aligned</th>
<th align="right">Right-aligned</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">git status</td>
<td align="center">git status</td>
<td align="right">git status</td>
</tr>
<tr>
<td align="left">git diff</td>
<td align="center">git diff</td>
<td align="right">git diff</td>
</tr>
</tbody>
</table>
```
markedJS/marked の使用
前提条件
- Node.js がインストールされていること (CLI またはプログラムによる使用の場合)
- CLI 用に marked をグローバルにインストール:
npm install -g marked - またはローカルにインストール:
npm install marked
クイック変換方法
marked.md の クイック変換方法 を参照してください
ステップバイステップのワークフロー
marked.md の ステップバイステップのワークフロー を参照してください
CLI 構成
構成ファイルの使用
永続的なオプションのために ~/.marked.json を作成します:
{
"gfm": true,
"breaks": true
}
またはカスタム構成を使用します:
marked -i input.md -o output.html -c config.json
CLI オプションリファレンス
| オプション | 説明 |
|---|---|
-i, --input <file> | 入力 Markdown ファイル |
-o, --output <file> | 出力 HTML ファイル |
-s, --string <string> | ファイルの代わりに文字列を解析 |
-c, --config <file> | カスタム構成ファイルを使用 |
--gfm | GitHub Flavored Markdown を有効化 |
--breaks | 改行を <br> に変換 |
--help | すべてのオプションを表示 |
セキュリティ警告
⚠️ Marked は出力 HTML をサニタイズしません。 信頼できない入力には、サニタイザーを使用してください:
import { marked } from 'marked';
import DOMPurify from 'dompurify';
const unsafeHtml = marked.parse(untrustedMarkdown);
const safeHtml = DOMPurify.sanitize(unsafeHtml);
推奨サニタイザー:
- DOMPurify (推奨)
- sanitize-html
- js-xss
サポートされている Markdown フレーバー
| フレーバー | サポート |
|---|---|
| オリジナル Markdown | 100% |
| CommonMark 0.31 | 98% |
| GitHub Flavored Markdown | 97% |
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| ファイル先頭の特殊文字 | ゼロ幅文字を削除: content.replace(/^[\u200B\u200C\u200D\uFEFF]/,"") |
| コードブロックがハイライトされない | highlight.js などの構文ハイライターを追加 |
| テーブルがレンダリングされない | gfm: true オプションが設定されていることを確認 |
| 改行が無視される | オプションで breaks: true を設定 |
| XSS 脆弱性の懸念 | DOMPurify を使用して出力をサニタイズ |
pandoc の使用
前提条件
- Pandoc がインストールされていること (https://pandoc.org/installing.html からダウンロード)
- PDF 出力の場合: LaTeX のインストール (macOS では MacTeX、Windows では MiKTeX、Linux では texlive)
- ターミナル/コマンドプロンプトへのアクセス
クイック変換方法
方法 1: CLI による基本的な変換
# Convert markdown to HTML
pandoc input.md -o output.html
# Convert with standalone document (includes header/footer)
pandoc input.md -s -o output.html
# Explicit format specification
pandoc input.md -f markdown -t html -s -o output.html
方法 2: フィルターモード (対話型)
# Start pandoc as a filter
pandoc
# Type markdown, then Ctrl-D (Linux/macOS) or Ctrl-Z+Enter (Windows)
Hello *pandoc*!
# Output: <p>Hello <em>pandoc</em>!</p>
方法 3: フォーマット変換
# HTML to Markdown
pandoc -f html -t markdown input.html -o output.md
# Markdown to LaTeX
pandoc input.md -s -o output.tex
# Markdown to PDF (requires LaTeX)
pandoc input.md -s -o output.pdf
# Markdown to Word
pandoc input.md -s -o output.docx
CLI の設定
| オプション | 説明 |
|---|---|
-f, --from <format> | 入力フォーマット (markdown、html、latex など) |
-t, --to <format> | 出力フォーマット (html、latex、pdf、docx など) |
-s, --standalone | ヘッダー/フッター付きの単独ドキュメントを生成 |
-o, --output <file> | 出力ファイル (拡張子から推測) |
--mathml | TeX 数式を MathML に変換 |
--metadata title="Title" | ドキュメントのメタデータを設定 |
--toc | 目次を含める |
--template <file> | カスタムテンプレートを使用 |
--help | すべてのオプションを表示 |
セキュリティに関する警告
⚠️ Pandoc は入力を忠実に処理します。 信頼できない markdown を変換する場合:
--sandboxモードを使用して外部ファイルへのアクセスを無効にする- 処理前に検証する
- ブラウザーで表示する場合は HTML 出力をサニタイズする
# Run in sandbox mode for untrusted input
pandoc --sandbox input.md -o output.html
対応する Markdown フレーバー
| フレーバー | サポート |
|---|---|
| Pandoc Markdown | 100% (ネイティブ) |
| CommonMark | 完全対応 (-f commonmark を使用) |
| GitHub Flavored Markdown | 完全対応 (-f gfm を使用) |
| MultiMarkdown | 部分対応 |
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| PDF 生成が失敗する | LaTeX (MacTeX、MiKTeX、texlive のいずれか) をインストールする |
| Windows で文字エンコーディングの問題 | pandoc を使用する前に chcp 65001 を実行する |
| 単独ドキュメント用のヘッダーがない | 完全なドキュメントにするには -s フラグを追加する |
| 数式がレンダリングされない | --mathml または --mathjax オプションを使用する |
| テーブルがレンダリングされない | パイプとダッシュを使った正しいテーブル構文を確認する |
gomarkdown/markdown の使用
前提条件
- Go 1.18 以上がインストールされていること
- ライブラリをインストール:
go get github.com/gomarkdown/markdown - CLI ツールの場合:
go install github.com/gomarkdown/mdtohtml@latest
クイック変換方法
方法 1: シンプルな変換 (Go)
package main
import (
"fmt"
"github.com/gomarkdown/markdown"
)
func main() {
md := []byte("# Hello World\n\nThis is **bold** text.")
html := markdown.ToHTML(md, nil, nil)
fmt.Println(string(html))
}
方法 2: CLI ツール
# Install mdtohtml
go install github.com/gomarkdown/mdtohtml@latest
# Convert file
mdtohtml input.md output.html
# Convert file (output to stdout)
mdtohtml input.md
方法 3: カスタムパーサーとレンダラー
package main
import (
"github.com/gomarkdown/markdown"
"github.com/gomarkdown/markdown/html"
"github.com/gomarkdown/markdown/parser"
)
func mdToHTML(md []byte) []byte {
// Create parser with extensions
extensions := parser.CommonExtensions | parser.AutoHeadingIDs | parser.NoEmptyLineBeforeBlock
p := parser.NewWithExtensions(extensions)
doc := p.Parse(md)
// Create HTML renderer with extensions
htmlFlags := html.CommonFlags | html.HrefTargetBlank
opts := html.RendererOptions{Flags: htmlFlags}
renderer := html.NewRenderer(opts)
return markdown.Render(doc, renderer)
}
CLI の設定
mdtohtml CLI ツールには最小限のオプションしかありません:
mdtohtml input-file [output-file]
高度な設定を行うには、パーサーとレンダラーのオプションを指定して Go ライブラリをプログラムから使用します:
| パーサー拡張 | 説明 |
|---|---|
parser.CommonExtensions | テーブル、フェンス付きコード、自動リンク、取り消し線など |
parser.AutoHeadingIDs | 見出しの ID を生成 |
parser.NoEmptyLineBeforeBlock | ブロックの前に空行を必要としない |
parser.MathJax | LaTeX 数式の MathJax サポート |
| HTML フラグ | 説明 |
|---|---|
html.CommonFlags | 一般的な HTML 出力フラグ |
html.HrefTargetBlank | リンクに target="_blank" を追加 |
html.CompletePage | 完全な HTML ページを生成 |
html.UseXHTML | XHTML 出力を生成 |
セキュリティに関する警告
⚠️ gomarkdown は出力 HTML をサニタイズしません。 信頼できない入力の場合は Bluemonday を使用してください:
import (
"github.com/microcosm-cc/bluemonday"
"github.com/gomarkdown/markdown"
)
maybeUnsafeHTML := markdown.ToHTML(md, nil, nil)
html := bluemonday.UGCPolicy().SanitizeBytes(maybeUnsafeHTML)
推奨サニタイザー: Bluemonday
対応する Markdown フレーバー
| フレーバー | サポート |
|---|---|
| オリジナル Markdown | 100% |
| CommonMark | 高 (拡張機能あり) |
| GitHub Flavored Markdown | 高 (テーブル、フェンス付きコード、取り消し線) |
| MathJax/LaTeX Math | 拡張機能により対応 |
| Mmark | 対応 |
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| Windows/Mac の改行が解析されない | parser.NormalizeNewlines(input) を使用する |
| テーブルがレンダリングされない | parser.Tables 拡張を有効にする |
| コードブロックがハイライトされない | Chroma などの構文ハイライターと統合する |
| 数式がレンダリングされない | parser.MathJax 拡張を有効にする |
| XSS 脆弱性 | Bluemonday を使用して出力をサニタイズする |
jekyll の使用
前提条件
- Ruby バージョン 2.7.0 以上
- RubyGems
- GCC および Make(ネイティブ拡張用)
- Jekyll と Bundler のインストール:
gem install jekyll bundler
クイック変換方法
方法 1: 新しいサイトを作成する
# Create a new Jekyll site
jekyll new myblog
# Change to site directory
cd myblog
# Build and serve locally
bundle exec jekyll serve
# Access at http://localhost:4000
方法 2: 静的サイトをビルドする
# Build site to _site directory
bundle exec jekyll build
# Build with production environment
JEKYLL_ENV=production bundle exec jekyll build
方法 3: ライブリロード開発
# Serve with live reload
bundle exec jekyll serve --livereload
# Serve with drafts
bundle exec jekyll serve --drafts
CLI 設定
| コマンド | 説明 |
|---|---|
jekyll new <path> | 新しい Jekyll サイトを作成する |
jekyll build | _site ディレクトリにサイトをビルドする |
jekyll serve | ビルドしてローカルで配信する |
jekyll clean | 生成されたファイルを削除する |
jekyll doctor | 設定の問題をチェックする |
| 配信オプション | 説明 |
|---|---|
--livereload | 変更時にブラウザをリロードする |
--drafts | 下書き記事を含める |
--port <port> | サーバーポートを設定する(デフォルト: 4000) |
--host <host> | サーバーホストを設定する(デフォルト: localhost) |
--baseurl <url> | ベース URL を設定する |
セキュリティに関する警告
⚠️ Jekyll のセキュリティに関する考慮事項:
- 本番環境で
safe: falseを使用することは避けてください _config.ymlのexcludeを使用して、機密ファイルが公開されないようにしてください- 外部入力を受け付ける場合は、ユーザー生成コンテンツをサニタイズしてください
- Jekyll とプラグインを最新の状態に保ってください
# _config.yml security settings
exclude:
- Gemfile
- Gemfile.lock
- node_modules
- vendor
対応する Markdown フレーバー
| フレーバー | サポート |
|---|---|
| Kramdown(デフォルト) | 100% |
| CommonMark | プラグイン経由(jekyll-commonmark) |
| GitHub Flavored Markdown | プラグイン経由(jekyll-commonmark-ghpages) |
| RedCarpet | プラグイン経由(非推奨) |
_config.yml で Markdown プロセッサを設定します:
markdown: kramdown
kramdown:
input: GFM
syntax_highlighter: rouge
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| Ruby 3.0+ で配信に失敗する | bundle add webrick を実行する |
| Gem 依存関係のエラー | bundle install を実行する |
| ビルドが遅い | --incremental フラグを使用する |
| Liquid 構文エラー | コンテンツ内のエスケープされていない { を確認する |
| プラグインが読み込まれない | _config.yml の plugins リストに追加する |
hugo の使用
前提条件
- Hugo がインストールされていること(https://gohugo.io/installation/ からダウンロード)
- Git(テーマおよびモジュール用に推奨)
- Go(任意、Hugo Modules 用)
クイック変換方法
方法 1: 新しいサイトを作成する
# Create a new Hugo site
hugo new site mysite
# Change to site directory
cd mysite
# Add a theme
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
echo "theme = 'ananke'" >> hugo.toml
# Create content
hugo new content posts/my-first-post.md
# Start development server
hugo server -D
方法 2: 静的サイトをビルドする
# Build site to public directory
hugo
# Build with minification
hugo --minify
# Build for specific environment
hugo --environment production
方法 3: 開発サーバー
# Start server with drafts
hugo server -D
# Start with live reload and bind to all interfaces
hugo server --bind 0.0.0.0 --baseURL http://localhost:1313/
# Start with specific port
hugo server --port 8080
CLI 設定
| コマンド | 説明 |
|---|---|
hugo new site <name> | 新しい Hugo サイトを作成する |
hugo new content <path> | 新しいコンテンツファイルを作成する |
hugo | public ディレクトリにサイトをビルドする |
hugo server | 開発サーバーを起動する |
hugo mod init | Hugo Modules を初期化する |
| ビルドオプション | 説明 |
|---|---|
-D, --buildDrafts | 下書きコンテンツを含める |
-E, --buildExpired | 期限切れコンテンツを含める |
-F, --buildFuture | 未来の日付のコンテンツを含める |
--minify | 出力を縮小する |
--gc | ビルド後にガベージコレクションを実行する |
-d, --destination <path> | 出力ディレクトリ |
| サーバーオプション | 説明 |
|---|---|
--bind <ip> | バインドするインターフェース |
-p, --port <port> | ポート番号(デフォルト: 1313) |
--liveReloadPort <port> | ライブリロードポート |
--disableLiveReload | ライブリロードを無効にする |
--navigateToChanged | 変更されたコンテンツに移動する |
セキュリティに関する警告
⚠️ Hugo のセキュリティに関する考慮事項:
- 外部コマンド用に
hugo.tomlでセキュリティポリシーを設定してください - 公開リポジトリでは
--enableGitInfoを慎重に使用してください - ユーザー生成コンテンツに対してショートコードのパラメータを検証してください
# hugo.toml security settings
[security]
enableInlineShortcodes = false
[security.exec]
allow = ['^go$', '^npx$', '^postcss$']
[security.funcs]
getenv = ['^HUGO_', '^CI$']
[security.http]
methods = ['(?i)GET|POST']
urls = ['.*']
対応する Markdown フレーバー
| フレーバー | サポート |
|---|---|
| Goldmark(デフォルト) | 100%(CommonMark 準拠) |
| GitHub Flavored Markdown | 完全対応(テーブル、取り消し線、自動リンク) |
| CommonMark | 100% |
| Blackfriday(レガシー) | 非推奨、推奨されません |
hugo.toml で Markdown を設定します:
[markup]
[markup.goldmark]
[markup.goldmark.extensions]
definitionList = true
footnote = true
linkify = true
strikethrough = true
table = true
taskList = true
[markup.goldmark.renderer]
unsafe = false # Set true to allow raw HTML
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| パスで「Page not found」が表示される | 設定の baseURL を確認してください |
| テーマが読み込まれない | themes/ または Hugo Modules のテーマを確認してください |
| ビルドが遅い | --templateMetrics を使用してボトルネックを特定してください |
| 生の HTML がレンダリングされない | goldmark 設定で unsafe = true を設定してください |
| 画像が読み込まれない | static/ フォルダーの構成を確認してください |
| モジュールエラー | hugo mod tidy を実行してください |
参考資料
Markdown の記述とスタイリング
- basic-markdown.md
- code-blocks.md
- collapsed-sections.md
- tables.md
- writing-mathematical-expressions.md
- Markdown Guide: https://www.markdownguide.org/basic-syntax/
- Styling Markdown: https://github.com/sindresorhus/github-markdown-css
markedJS/marked
- 公式ドキュメント: https://marked.js.org/
- 高度なオプション: https://marked.js.org/using_advanced
- 拡張性: https://marked.js.org/using_pro
- GitHub リポジトリ: https://github.com/markedjs/marked
pandoc
- はじめに: https://pandoc.org/getting-started.html
- 公式ドキュメント: https://pandoc.org/MANUAL.html
- 拡張性: https://pandoc.org/extras.html
- GitHub リポジトリ: https://github.com/jgm/pandoc
gomarkdown/markdown
- 公式ドキュメント: https://pkg.go.dev/github.com/gomarkdown/markdown
- 高度な設定: https://pkg.go.dev/github.com/gomarkdown/[email protected]/html
- Markdown の処理: https://blog.kowalczyk.info/article/cxn3/advanced-markdown-processing-in-go.html
- GitHub リポジトリ: https://github.com/gomarkdown/markdown
jekyll
- 公式ドキュメント: https://jekyllrb.com/docs/
- 設定オプション: https://jekyllrb.com/docs/configuration/options/
- プラグイン: https://jekyllrb.com/docs/plugins/
- GitHub リポジトリ: https://github.com/jekyll/jekyll
hugo
- 公式ドキュメント: https://gohugo.io/documentation/
- すべての設定: https://gohugo.io/configuration/all/
- エディタープラグイン: https://gohugo.io/tools/editors/
- GitHub リポジトリ: https://github.com/gohugoio/hugo