1. はじめに|MarkdownをHTMLに変換したい理由
Markdownで書いた記事やドキュメントを、PythonでHTMLに変換したいと思ったことはありませんか?
技術ブログの作成、静的サイトの構築、レポートやドキュメントの自動生成など、
実は「Markdown → HTML」の変換は、Pythonと相性がとても良い処理のひとつです。
ただ、
「Markdownってそもそも何?」
「Pythonで本当に簡単に変換できるの?」
「静的サイトにも使えるの?」
と、最初は不安に感じますよね。
この記事では、Python初心者の方でも理解できるように、
Markdownの基本から、Pythonを使ったHTML変換の方法までを順を追ってやさしく解説します。
コピペで動かせるサンプルコードも紹介するので、
「とりあえず動かしてみたい」という方でも安心です。
この記事を読み終えるころには、MarkdownファイルをPythonでHTMLに変換し、
ブログや静的サイトに活用できるようになります。
2. 必要なライブラリと環境構築
MarkdownをPythonでHTMLに変換するためには、まず専用のライブラリをインストールする必要があります。
といっても、やることはとてもシンプルなのでご安心を!
必要なのは「markdown」ライブラリだけ!
Pythonには、MarkdownをHTMLに変換するための便利なライブラリがいくつかありますが、今回は最も基本的なライブラリである
👉 markdown を使っていきます。
インストール方法
以下のコマンドをターミナルやコマンドプロンプトで実行してください。
pip install markdown
※ もし仮想環境(venvなど)を使っている場合は、その環境を有効化してから実行してくださいね。
環境のチェック
インストールが完了したら、Pythonで以下のコードを試してみましょう:
import markdown
print(markdown.markdown("# Hello, Markdown!"))
ちゃんと実行できて、以下のような出力が出ればOKです!
<h1>Hello, Markdown!</h1>
これでMarkdownの記法が、HTMLタグに変換されたことが確認できますね!
注意ポイント(よくあるつまずき)
ModuleNotFoundError: No module named 'markdown'というエラーが出た場合は、インストールができていない可能性があります。pip install markdownをもう一度確認しましょう。- Pythonのバージョンは3.x系をおすすめします(3.7以上が安心です)。

これで準備はバッチリ!
次は実際にMarkdownからHTMLに変換してみましょう。
3. MarkdownからHTMLへの基本的な変換方法
それではいよいよ、MarkdownのテキストをHTMLに変換してみましょう!
Pythonのコードはとってもシンプルなので、初心者の方でもすぐに試せますよ。
最も基本的なコード
まずは、文字列として書かれたMarkdownをHTMLに変換する方法から紹介します。
import markdown
# Markdown形式の文字列
md_text = """
# こんにちは!
これは**太字**のテキストです。
- リスト1
- リスト2
"""
# HTMLに変換
html = markdown.markdown(md_text)
# 結果を表示
print(html)
実行結果(一部)
<h1>こんにちは!</h1>
<p>これは<strong>太字</strong>のテキストです。</p>
<ul>
<li>リスト1</li>
<li>リスト2</li>
</ul>
このように、Markdownで書かれた見出しやリスト、太字などが自動的にHTMLタグに変換されているのがわかりますね!
コツ:日本語もそのまま使える!
markdownライブラリは、UTF-8で書かれた日本語のMarkdownも問題なく変換できます。
なので、日本語のブログやドキュメントにもそのまま活用できますよ。
応用:複数のMarkdownテキストをまとめて変換したいときは?
複数のMarkdown文字列がある場合は、リストでループ処理を使えばOKです。
md_list = ["# 見出し1", "## 見出し2", "**太字テキスト**"]
for md in md_list:
html = markdown.markdown(md)
print(html)
出力されるHTMLは、それぞれのMarkdown記法に対応したタグになります。

このように、たった数行でMarkdownをHTMLに変換できるのがPythonの魅力。
次は、Markdownファイルを読み込んでHTMLファイルとして保存する方法にチャレンジしてみましょう!
4. 応用編|ファイルを読み込んでHTMLに変換して保存する方法
さて、ここまではMarkdownの文字列をHTMLに変換する方法を紹介しましたが、
実際には .md ファイルとして保存されたMarkdown文書を変換したい場面の方が多いですよね。
ここでは、Markdownファイルを読み込んでHTMLファイルとして保存する方法をわかりやすく解説します!
ステップ① Markdownファイルを用意しよう
まずは、変換元となるMarkdownファイルを作成しましょう。
例:sample.md
# サンプルタイトル
これはPythonでMarkdownをHTMLに変換するテストです。
- 箇条書き1
- 箇条書き2
ステップ② Pythonで読み込んでHTMLに変換する
次に、MarkdownファイルをPythonで読み込み、HTMLに変換して保存するコードを書いていきます。
import markdown
# 入力ファイルと出力ファイルのパス
input_file = "sample.md"
output_file = "sample.html"
# ファイルを読み込む
with open(input_file, "r", encoding="utf-8") as f:
md_text = f.read()
# Markdown → HTML に変換
html = markdown.markdown(md_text)
# HTMLファイルとして保存
with open(output_file, "w", encoding="utf-8") as f:
f.write(html)
print("変換が完了しました!")
出力されたHTMLを確認しよう
このスクリプトを実行すると、同じディレクトリに sample.html というファイルが生成されます。
そのファイルをブラウザで開けば、MarkdownがきれいにHTMLとして表示されているのが確認できます!
ちょっと便利に!コマンドライン対応もできる
複数のMarkdownファイルを変換したいときや、引数でファイルを指定したいときは、argparseを使うのがおすすめです。
import argparse
import markdown
parser = argparse.ArgumentParser()
parser.add_argument("input_file")
parser.add_argument("output_file")
args = parser.parse_args()
with open(args.input_file, "r", encoding="utf-8") as f:
md_text = f.read()
html = markdown.markdown(md_text)
with open(args.output_file, "w", encoding="utf-8") as f:
f.write(html)
print("変換完了!")
これで以下のように実行できます:
python convert.py input.md output.html

このように、Pythonを使えばMarkdown → HTMLの変換が自動化できます。
次は、このHTMLをテンプレートに埋め込んで「静的サイト」に仕上げていく方法を紹介します!
5. HTMLテンプレートと組み合わせて静的サイト化する
MarkdownをHTMLに変換できるようになったら、次はそのHTMLをWebページとして完成させるステップです。
ただの変換結果だけでは、CSSもなく、ちょっと味気ない見た目になってしまいますよね。
そこでここでは、テンプレートHTMLと組み合わせて「静的サイト」風に整える方法を解説します!
HTMLテンプレートを用意しよう
まずはベースとなるテンプレートを1つ作っておきましょう。
template.html というファイルを以下のように作成します:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>{title}</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header><h1>{title}</h1></header>
<main>
{content}
</main>
<footer><p>© 2025 My Static Site</p></footer>
</body>
</html>
{title} と {content} の部分が、あとでPythonから差し込むプレースホルダーです。
テンプレートにMarkdownを埋め込むコード
Python側では以下のように処理します:
import markdown
# ファイル読み込み
with open("sample.md", "r", encoding="utf-8") as f:
md_text = f.read()
# Markdown → HTMLに変換
html_body = markdown.markdown(md_text)
# テンプレート読み込み
with open("template.html", "r", encoding="utf-8") as f:
template = f.read()
# タイトルと本文を差し込み
html_output = template.format(title="サンプル記事", content=html_body)
# 出力ファイルに保存
with open("output.html", "w", encoding="utf-8") as f:
f.write(html_output)
print("テンプレート付きHTMLを出力しました!")
スタイルも追加してみよう(style.css)
簡単なCSSファイルも一緒に用意してみましょう:
body {
font-family: sans-serif;
max-width: 800px;
margin: 2em auto;
padding: 1em;
background: #f8f8f8;
}
h1 {
border-bottom: 2px solid #333;
padding-bottom: 0.3em;
}
main {
background: #fff;
padding: 1em;
border-radius: 5px;
}
これでWebページらしく整った見た目になります!
複数Markdownファイルをまとめて変換するには?
フォルダの中にある .md ファイルをすべて処理する例も紹介しておきます:
import os
import markdown
input_dir = "md_files"
output_dir = "html_files"
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.endswith(".md"):
with open(os.path.join(input_dir, filename), "r", encoding="utf-8") as f:
md_text = f.read()
html_body = markdown.markdown(md_text)
with open("template.html", "r", encoding="utf-8") as f:
template = f.read()
html_output = template.format(title=filename.replace(".md", ""), content=html_body)
with open(os.path.join(output_dir, filename.replace(".md", ".html")), "w", encoding="utf-8") as f:
f.write(html_output)
print("すべてのMarkdownファイルを静的HTMLに変換しました!")

こうして、Pythonスクリプトだけで簡易的な静的サイトジェネレーターが作れちゃいます。
次は、PelicanやMkDocsなどのツールとの違いを見てみましょう!
6. PelicanやMkDocsなどとの違い
ここまで、Pythonで自作スクリプトを使ってMarkdownからHTMLを生成し、静的サイトとして出力する方法を紹介してきました。
でも実は、**PelicanやMkDocsのような「静的サイトジェネレーター(SSG)」**を使えば、もっと手軽に整ったサイトを作ることもできます。
では、「自作スクリプト」と「SSG」では、何が違うのでしょうか?
ここでしっかり比較しておきましょう。
🔧 自作スクリプトの特徴
| 項目 | 内容 |
|---|---|
| カスタマイズ性 | 自分好みに100%カスタム可能 |
| 学習コスト | Python初心者にはちょっとだけハードルあり |
| デザイン | CSSやテンプレートも自作が必要 |
| 用途 | 小規模なページ、ツールとしての使い捨て変換に最適 |
✅ こんな人に向いてる!
- プログラミングの練習としてMarkdown処理をやってみたい人
- 軽量なツールでサクッとHTML出力したい人
- 自動変換スクリプトを業務で使いたい人
🧰 PelicanやMkDocsの特徴
| 項目 | 内容 |
|---|---|
| セットアップ | pip installで簡単インストール |
| 構成管理 | 設定ファイル(config.ymlなど)で一括管理できる |
| テンプレート | テーマやテンプレートが最初から豊富 |
| 拡張性 | プラグインや拡張が豊富で、サイト構築が楽になる |
✅ こんな人に向いてる!
- ブログやドキュメントを本格的に公開したい人
- 複数ページのMarkdownを整理してサイト化したい人
- カスタマイズは最低限にして、短時間で完成させたい人
どちらを選ぶべき?
| 目的 | おすすめ |
|---|---|
| 軽量でシンプルな変換がしたい | Pythonの自作スクリプト |
| 高機能でデザインも整えたい | PelicanやMkDocsなどのSSG |
ちなみに…
静的サイトジェネレーターのPelicanを使ってCloudflare Pagesにデプロイする方法も、こちらの記事で解説しています👇
🔗 Pelicanでブログを作ってCloudflare Pagesにデプロイする方法
7. まとめ|PythonでMarkdownをHTMLに変換すれば自由度も高い!
ここまでお読みいただき、ありがとうございました!
この記事では、Pythonを使ってMarkdownをHTMLに変換する方法を、以下の流れでやさしく解説してきました。
✔ 今回学んだことの振り返り
- Markdownは、シンプルに書けて整った文書を作れる便利な記法
- Pythonの
markdownライブラリを使えば、たった数行でHTMLに変換できる .mdファイルを読み込んでHTMLファイルとして保存する方法もバッチリ- テンプレートHTMLと組み合わせれば、静的なWebページとしても使える
- PelicanやMkDocsなどのツールと比較して、自作スクリプトなら軽量かつ柔軟に対応可能!
💡 Pythonだからこそ、こんな活用ができる!
- 自分好みに処理フローをカスタマイズできる
- 複数ファイルを一括変換 → 業務やブログ更新を自動化
- WebアプリやCI/CDに組み込んで、効率化・省力化にもつなげられる
MarkdownをHTMLに変換するだけならツールも豊富ですが、Pythonを使えばコードで自在にコントロールできるのが魅力です。
「ちょっとした変換スクリプトが欲しい」「でも自由度は高くしたい」という方には、ぴったりなアプローチですよ!

ということで、ぜひみなさんもこの記事を参考に、自分だけの変換ツールや静的サイトを作ってみてくださいね!
🔗 あわせて読みたい
Markdown変換や静的サイトに関連する記事もチェックしてみましょう!
- 📘 Pelicanでブログを作ってCloudflare Pagesにデプロイする方法
→ 静的サイトを高速に公開できる、Python製ブログジェネレーター「Pelican」の入門記事です。 - 🛠️ Python初心者でも楽しく作れる!かんたん自作プログラム5選
→ Markdown変換と同じような「ミニツール開発」を気軽に楽しみたい方におすすめ。 - 📄 PythonでPDFを操作する方法まとめ|分割・結合・暗号化を簡単に自動化しよう!
→ HTMLに変換したあと、PDF化したい人にも役立つスクリプト例を紹介しています。
よくある質問(Q&A)
- QMarkdownファイルを変換するとき、目次やコードハイライトもできますか?
- A
はい、
markdownライブラリの拡張機能(Extensions)を使えば可能です。
例:markdown.markdown(text, extensions=["fenced_code", "toc"])
- QCSSはどう適用すればいいの?
- A
HTMLテンプレートに
<link rel="stylesheet" href="style.css">を入れておけば、CSSを適用できます。スタイルファイルはHTMLと同じフォルダに置いてください。
- QPelicanやMkDocsを使うのと、Pythonスクリプトで変換するのはどちらがいい?
- A
自由度重視ならPythonスクリプト、本格的なWebサイトを作りたいならPelicanやMkDocsがおすすめです。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。