ブログを作りたかったが、コードを書く気力はなかった
ブログを始めようと思ったとき、まずWordPressを考えた。でもサーバー代がかかるし、テーマ選びやプラグイン管理が面倒だ。noteやZennも考えたが、自分のドメインでやる意味がほしかった。
Next.jsで自作するのは決めた。でも全コードを自分で書く気力はなかった。そこでagentic codingでAIに任せてみることにした。結果、ドメイン代だけで動くブログができた。
ブログ構築手段の比較
| WordPress | note/Zenn | agentic codingでNext.js | |
|---|---|---|---|
| 初期コスト | 月1,000円〜 | 無料 | ドメイン代のみ |
| 自由度 | 高い | 低い | 完全自由 |
| 構築の手間 | 中 | ゼロ | AIに任せれば中〜小 |
| 運用の手間 | 中 | ゼロ | ほぼゼロ |
やったこと:手順ベースの完全公開
1. プロジェクトの土台を作る
まずAIにこう指示した。
「Next.js 16のApp Routerでブログを作って。TypeScript、Tailwind CSS v4。マークダウンファイルを読み込んで一覧表示と詳細表示ができる最小構成で。npmパッケージは `gray-matter` と `marked` を使う。Vercelにデプロイする前提で」
使ったライブラリはこれだけだ。
"dependencies": {
"gray-matter": "^4.0.3",
"marked": "^18.0.3",
"next": "16.2.6",
"react": "19.2.4",
"react-dom": "19.2.4"
}gray-matter はマークダウンのYAML frontmatterをパースする。marked はマークダウンをHTMLに変換する。この2つだけで、データベースなしのブログが成立する。2. ディレクトリ構成をAIと詰める
App Routerのディレクトリ構成をAIに提案させて、自分の好みに調整した。
app/
├── _layout/ # ヘッダー、フッター、グローバルレイアウト
├── blog/
│ ├── _content/ # マークダウン記事ファイル(12〜16記事)
│ ├── _lib/ # 記事の読み込み・パース・関連記事ロジック
│ ├── _layout/ # ブログカード、目次、パンくず、著者ボックス等
│ └── [slug]/ # 動的ルーティング(各記事ページ)
├── about/ # Aboutページ
├── privacy/ # プライバシーポリシー
├── disclaimer/ # 免責事項
├── sitemap.ts # サイトマップ自動生成
├── rss.xml/ # RSSフィード
├── robots.ts # robots.txt
└── site.ts # サイト名・著者情報の一元管理3. 記事管理の仕組みを作る
AIに指示して `app/blog/_lib/posts.ts` を作成。ここにすべてのロジックを集約した。
getAllPosts()—_content/内の全.mdファイルを読み込み、日付降順で返すgetPostBySlug(slug)— 指定スラッグの記事をパースしてHTML化getAllSlugs()—generateStaticParams()用に全スラッグを返す(SSG)getAllCategories()/getAllTags()— カテゴリ・タグのフィルタリング用getRelatedPosts(slug)— タグ一致度で関連記事をスコアリング
記事のfrontmatterはこう。
---
title: "記事タイトル"
description: "メタディスクリプション"
date: "2026-05-19"
category: "ウェルネス"
tags: ["最適化疲れ", "認知負荷", "AI疲れ"]
image: "/blog/slug/opengraph-image"
series: "optional-series-slug"
seriesOrder: 1
---4. SEOとメタ情報を仕込む
AIに指示して以下の静的ファイルを生成。
app/sitemap.ts— 全記事+固定ページのサイトマップXMLを自動生成app/robots.ts— フルクロール許可+sitemap参照app/rss.xml/route.ts— RSS 2.0フィード- 各記事の
generateMetadata()— title, description, OpenGraph, Twitterカード app/blog/[slug]/opengraph-image.tsx— タイトル入りOGP画像を動的生成- JSON-LD: Organization, WebSite, BlogPosting, FAQ, Product/Review, BreadcrumbList
5. アフィリエイトリンクを自動処理する
`app/blog/_lib/affiliate-domains.ts` にアフィリエイト対象ドメインを登録しておくと、markedのカスタムレンダラーが自動で `target="_blank" rel="nofollow noopener noreferrer sponsored"` とPRバッジを付与する。
6. Vercelにデプロイして独自ドメインを設定
GitHubリポジトリを作り、Vercelにインポートした。デプロイ設定はデフォルトのまま。独自ドメインだけVercelの管理画面で追加して、DNSにCNAMEレコードを設定。これで `baboblog.com` が動き始めた。
git push するだけ。CI/CDの設定すら不要だった。7. 日々の執筆と運用
記事はすべて自分で書いている。`app/blog/_content/{slug}.md` にマークダウンで保存して `git push` するだけ。Vercelが自動ビルド&デプロイして数分で公開される。コードの基盤をAIに作らせたぶん、書くことに集中できるようになった。
かかったコスト
| 項目 | 費用 |
|---|---|
| ドメイン(baboblog.com) | 約1,500円/年 |
| Vercel(Hobbyプラン) | 無料 |
| GitHub | 無料 |
| **合計** | **年1,500円** |
なぜこの方法を勧めるのか
WordPressでもnoteでもなく、自分でコードを管理する方法を選んだ理由は一つ。AIに書かせたコードをAIに修正させられるからだ。WordPressのPHPやnoteの制限の中で戦うより、Next.js + TypeScriptというAIが得意なスタックで全部を管理するほうが速かった。
TypeScript + ESLint でAIの出力を検証できる環境を先に整えておくこと。ドメイン代だけで動くブログを、AIにコードを書かせて作る。この方法は十分に再現可能だ。マークダウンをGitHubにプッシュするだけで記事が公開される。サーバー管理もデータベースもない。残るのは「自分が何を書きたいか」だけだった。