article
ampless とは何か
AWS Amplify Gen 2 の上で動かすオープンソース CMS。管理サーバーを持たず、投稿・タグ・テーマ・MCP を組み合わせて、ブログやドキュメントを小さく始められます。
ampless は、AWS Amplify Gen 2 の上で動かすことを前提にしたオープンソース CMS です。管理サーバーを常時立てておくのではなく、AppSync、DynamoDB、S3、Cognito、Lambda など、Amplify が用意するマネージドサービスを組み合わせてサイトを公開します。
このサイト自体も ampless で動いています。下のスクリーンショットは、my-docs テーマで作った紹介ホームです。プロダクト紹介のページとして見せつつ、記事ページはそのままドキュメントとして読めるようにしています。

別ドメインで動かしている ishinao.net も、同じコードベースからテーマを分けて作りました。投稿モデルやサーバレス構成は共通のまま、色、余白、トップページの構成だけをテーマ側で変えています。

何ができるか
ブログ、プロダクト紹介、ドキュメント、社内ナレッジ、採用、イベント告知。ampless では、投稿(Post)、タグ、テーマの組み合わせを変えて、こうした用途を作り分けます。
投稿本文は format で扱い方を選びます。tiptap、markdown、html、static の四つに、metadata.no_layout を組み合わせると、公開のしかたは大きく五通りです。同じ slug の名前空間に、普通の記事も、デザイナーが作った HTML も、zip で渡された LP も並べられます。
| format | レイアウトモード | 用途 |
|---|---|---|
| tiptap | テーマレイアウト | リッチエディタで書く読み物 |
| markdown | テーマレイアウト | git 派の開発者向け、GFM 対応 |
| html | テーマレイアウト | デザイナー納品の HTML 素片 |
| html | metadata.no_layout: true |
<head> まで自前で組む単独ページ |
| static | バンドル配信 | LP やキャンペーン用の zip バンドル |
詳しくは post-formats にまとめています。
何ではないか
- 常時稼働の管理サーバーを抱える CMS ではありません。 公開ページは Next.js の SSR と CloudFront キャッシュ、管理 API は AppSync GraphQL、メディアは S3 に分けています。アクセスがない時間帯に余計なサーバーを動かし続けないので、固定費も小さくできます。
- WordPress 互換を狙う CMS ではありません。 WXR データインポートはロードマップに残していますが、プラグインや Gutenberg ブロックの互換は最初から対象にしていません。
- 複数サイトを 1 つの管理画面で束ねる CMS ではありません。 1 Amplify デプロイ = 1 サイトです。複数サイトを持ちたいときは、Amplify プロジェクトごと分ける運用にしています。CDN のキャッシュキーを考えると、このほうが素直です。
設計上の特徴
マルチフォーマット投稿モデル
本文は、format ごとの素の形で DynamoDB に保存します。tiptap なら JSON、markdown ならソース文字列、html なら HTML 文字列、static なら manifest です。
HTML への変換は、公開リクエストが来たときにテーマ側で行います。変換済みの派生ファイルを先に S3 へ置いておく方式ではありません。投稿モデルが一種類だけなので、リッチエディタで書く人、Markdown で書く人、HTML を持ち込む人の記事が、同じ slug 体系に自然に並びます。
テーマがレイアウトを担う
テーマは themes/<name>/ に入ります。公式テーマをコピーして themes/my-*/ に置けば、公式側のアップデートは取り込みつつ、自分のサイトの見た目だけを別に育てられます。
出荷時には blog / corporate / dads / docs / landing / minimal の 6 種類のテーマがあります。切り替えは管理画面から行い、再デプロイは不要です。
MCP 経由の編集アクセス
管理 UI が使っている AppSync スキーマを、MCP HTTP ハンドラも IAM(SigV4)で叩きます。アクセストークン(amk_...)はハッシュ化して保存し、実際の認可境界は Lambda の IAM ロールに置いています。
言い換えると、トークンを持っていること = admin 相当の CMS アクセスを持っていることに近いです。発行できるのは admin だけですが、AI エージェントを編集者として入れるなら、この点を理解したうえで渡す相手や範囲を決める必要があります。この記事も MCP 経由で投入しました。
IAM をプラグインのサンドボックスに使う
プラグインは trust_level(untrusted / trusted)ごとに別々の Lambda 関数として動かし、IAM ポリシーで権限を絞ります。独自の VM サンドボックスを中に抱えるのではなく、AWS 標準の権限境界をそのまま使う方針です。
想定するユーザー
- すでに AWS を使っている開発者や技術者
- WordPress のセキュリティ運用に疲れているチーム
- 個人で複数サイトを軽く回したい運用者
非開発者だけで最初から最後まで運用する動線は、v1 のスコープに入れていません。git push と Amplify Hosting の操作がある程度わかる人に向けています。
関連記事
- 投稿フォーマット → post-formats
- サーバレス構成の全体像 → serverless-stack
- MCP HTTP トランスポート → mcp-http-transport