AIモデル Qwen/Qwen3-8B による翻訳。
原文言語:Simplified Chinese、翻訳先言語:japanese、翻訳時間:2026-05-01 15:22
。AI 翻訳は参考に限り、内容の完全な正確性を保証できません。原文をご参照ください。
前言
静的サイトの構築コストは低く、セキュアで軽量ですが、最大の欠点はバックエンドが存在せず、サイトの更新が面倒です。Decap CMS はこの問題を解決します。
本文では Decap CMS を紹介し、Decap CMS のデプロイチュートリアルを詳しく説明します。これにより、静的サイトをオンラインで更新できるようになります。
注意:本チュートリアルは一気呵成に進めます(😂)。お手伝いしてくださいますようお願いします。
Decap CMS 紹介

Decap CMS(以前は Netlify CMS と呼ばれていました)は Git に基づき、オープンソースのコンテンツ管理システム(CMS)であり、静的サイトおよびヘッドレス(headless)CMS アーキテクチャに特化しています。Hexo、Jekyll、Hugo などの静的サイトジェネレータと組み合わせて使用され、ユーザーは直感的なグラフィカルインターフェースを通じてサイトのコンテンツを管理できます。
オープンソースで無料です。Github には 17.7k のスターがついています。
メリット
- サーバー不要
- オープンソース
- 始めやすい(個人的には)
- ユーザーフレンドリーなインターフェース
- GitHub アカウントがなくてもすぐにアクセス可能
- Git で管理される
- ローカルに自動的に記事のバックアップを保存(
localStorage)
デメリット
- インターフェースが少し見栄えしない(おそらく自分の要求が高すぎる)
- 他のサイトで全選択してコピーした内容を Decap CMS に貼り付けると、Markdown に変換されない
(素早くコピペ)
デプロイ前の準備
- GitHub アカウントがあり、自分のブログのソースコードを格納する Rope を GitHub 上に用意していること
- Netlify アカウントがあり、ブログのソースコード Rope に接続された Site を持っていること
- Hexo についてある程度の知識があること
開始
本文は大きく3つの部分に分けることができます。個人的には source\admin\config.yml の設定が最も難しいと感じています。configuration-options を参考にしながら、少しずつ設定を行ってください。
Netlifyの設定
Netlify で自分のサイトを開き、Site configuration > Identity に移動します。Enable Identity をクリックして Netlify Identity を有効化します。

下にスクロールして、Registration preferences を見つけ、Configure をクリックします。Registration を Invite only に設定してください。Ctrl キーを押しながら Identity tab を新しいタブで開きます。後で使用します。

さらに下にスクロールして、Git Gateway を見つけ、Enable Git Gateway をクリックして有効化します。

これでこのタブは閉じても大丈夫です。次に Identity tab タブに移動し、Invite users をクリックして自分のメールアドレスを入力し、Send をクリックしてください。あなたのメールアドレスには招待メールが届きますが、今は気にしなくても大丈夫です。


Netlify の設定はこれで完了です。
Hexoのソースコードとフロントエンドの変更
_config.yml を編集し、admin ディレクトリのレンダリングをスキップしてください。admin は Decap CMS を設定するためのディレクトリです。admin に他の path を指定する場合は可能です。ただし、以下の admin の記述をあなたの path に変更する必要があります。
skip_render:
- 'admin/**/*'

source\admin ディレクトリを作成し、そのディレクトリ内に index.html を作成してください。以下のコードを貼り付けてください。
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="x-UA-Compatible" content="IE=Edge">
<meta name="robots" content="noindex" />
<title>Decap CMS</title>
<!-- <link rel="icon" type="image/svg+xml" sizes="180x180" href="favicon.svg"> -->
<script type="text/javascript" src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
<link href="/admin/config.yml" type="text/yaml" rel="cms-config-url">
</head>
<body>
<script src="https://unpkg.com/decap-cms@^3.0.0/dist/decap-cms.js"></script>
</body>
</html>

config.yml を作成し、以下のコードを貼り付けてください。
例示コード
backend:
name: git-gateway
branch: master # 要更新的分支(可选;默认为主分支)
commit_messages:
create: Create {{collection}} “{{slug}}”
update: Update {{collection}} “{{slug}}”
delete: Delete {{collection}} “{{slug}}”
uploadMedia: Upload “{{path}}”
deleteMedia: Delete “{{path}}”
openAuthoring: '{{message}}'
logo_url: /favicon.svg # 你的 logo
# 禁用部署预览链接
# show_preview_links: false
# This line should *not* be indented
publish_mode: editorial_workflow
# This line should *not* be indented
media_folder: "source/images/uploads" # 媒体文件将存储在图片/上载下的Repo中。
public_folder: "/images/uploads" # 上传的媒体的src属性将以/images/uploads开头。
site_url: https://xxxxxx.org/ # 网站网址
display_url: https://xxxxxx.org/ # 显示网址
locale: "zh_Hans" # 语言环境
collections:
- name: "posts" # 在路由中使用,例如:/admin/collections/blog。
label: "Posts" # 在用户界面中使用
folder: "source/_posts/" # 存储文件的文件夹的路径。
# filter: {field: "categories", value: "Posts"} # 筛选
create: true # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "Posts: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", required: false}
- {label: "分类", name: "categories", widget: "list", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
# - name: "pages"
# label: "Pages"
# files:
# - file: "source/about/index.md"
# name: "about"
# label: "关于"
# fields:
# - {label: "标题", name: "title", widget: "string"}
# - {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
# - {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
# - {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
# - {label: "layout", name: "layout", widget: "string", required: false}
# - {label: "摘要", name: "description", widget: "string", required: false}
# - {label: "内容", name: "body", widget: "markdown", required: false}
# - name: all
# label: 'all posts and pages (测试)'
# folder: 'source'
# create: true
# # 添加嵌套对象将显示集合文件夹结构
# nested:
# depth: 100 # 在收藏树中显示的最大深度
# summary: '{{title}}' # 树节点的可选摘要,默认为推断出的标题字段
# fields:
# - {label: "标题", name: "title", widget: "string"}
# - {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
# - {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
# - {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
# - {label: "layout", name: "layout", widget: "string", required: false}
# - {label: "摘要", name: "description", widget: "string", required: false}
# - {label: "密码", name: "password", widget: "string", required: false}
# - {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
# - {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
# - {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
# - {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
# - {label: "内容", name: "body", widget: "markdown", required: false}
# # 添加带有路径属性的元对象,可以编辑条目的路径
# # 移动现有条目会将该条目整个子树移动到新位置
# meta: { path: { widget: string, label: 'Path', index_file: 'index' } }
# - name: 'data'
# label: 'Data'
# label_singular: 'data'
# description: 'Manage the list of data.'
# files:
# - name: 'friends'
# label: 'Friends List'
# file: 'source/_data/friends.yml'
# fields:
# - label: 'friendlinks'
# name: 'friendlinks'
# widget: 'list'
# fields:
# - label: '分组标题'
# name: 'group'
# widget: 'string'
# - label: '分组描述'
# name: 'description'
# widget: 'string'
# required: false
# - label: 'Items'
# name: 'items'
# widget: 'list'
# fields:
# - label: '名称'
# name: 'title'
# widget: 'string'
# - label: '头像'
# name: 'avatar'
# widget: 'string'
# - label: '链接'
# name: 'url'
# widget: 'string'
# - label: '日期'
# name: 'adddate'
# widget: "datetime"
# format: "YYYY-MM-DD HH:mm:ss"
# dateFormat: "YYYY-MM-DD"
# timeFormat: "HH:mm:ss"
# required: false
# - label: 'RSS'
# name: 'rss'
# widget: 'string'
# required: false
# - label: '联系方式'
# name: 'contact'
# widget: 'string'
# required: false
# - label: '截图'
# name: 'screenshot'
# widget: 'string'
# required: false
# - label: '关键词'
# name: 'keywords'
# widget: 'string'
# required: false
# - label: '描述'
# name: 'description'
# widget: 'string'
# required: false
# - name: 'sites'
# label: 'Sites List'
# file: 'source/_data/sites.yml'
# fields:
# - label: 'sites'
# name: 'sites'
# widget: 'list'
# fields:
# - label: '分组标题'
# name: 'group'
# widget: 'string'
# - label: '分组描述'
# name: 'description'
# widget: 'string'
# required: false
# - label: 'Items'
# name: 'items'
# widget: 'list'
# fields:
# - label: '名称'
# name: 'title'
# widget: 'string'
# - label: '头像'
# name: 'avatar'
# widget: 'string'
# - label: '链接'
# name: 'url'
# widget: 'string'
# - label: '截图'
# name: 'screenshot'
# widget: 'string'
# required: false
# - label: '关键词'
# name: 'keywords'
# widget: 'string'
# required: false
# - label: '描述'
# name: 'description'
# widget: 'string'
# required: false

上記の設定ファイル内の logo_url、site_url、display_url を自分のものに変更してください。
logo_url: /favicon.svg # 你的 logo
site_url: https://xxxxx.org/ # 网站网址
display_url: https://xxxxx.org/ # 显示网址
これは設定ファイルの例です。設定ファイルを編集することで、Decap CMS 上で記事を新規作成・公開したり、ページを追加・編集したり、友達リンクを追加したり、テーマの設定を変更したりすることが可能です。
設定ファイルの内容は非常に複雑で煩雑です。ここでは詳細には説明しません。configuration-options にアクセスして、自分のカスタマイズ設定を行ってください。
私のコードを添付します
backend:
name: git-gateway
branch: master # 要更新的分支(可选;默认为主分支)
commit_messages:
create: Create {{collection}} “{{slug}}”
update: Update {{collection}} “{{slug}}”
delete: Delete {{collection}} “{{slug}}”
uploadMedia: Upload “{{path}}”
deleteMedia: Delete “{{path}}”
openAuthoring: '{{message}}'
logo_url: https://assets.buasis.eu.org/me/favicon.svg
# 禁用部署预览链接
# show_preview_links: false
# This line should *not* be indented
publish_mode: editorial_workflow
# This line should *not* be indented
media_folder: "source/images/uploads" # 媒体文件将存储在图片/上载下的Repo中。
public_folder: "/images/uploads" # 上传的媒体的src属性将以/images/uploads开头。
site_url: https://buasis.eu.org/ # 网站网址
display_url: https://buasis.eu.org/ # 显示网址
locale: "zh_Hans" # 语言环境
collections:
- name: "all-posts" # 在路由中使用,例如:/admin/collections/blog。
label: "All-Posts" # 在用户界面中使用
folder: "source/_posts/" # 存储文件的文件夹的路径。
# filter: {field: "categories", value: "Posts"}
create: false # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "Posts: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", required: false}
- {label: "分类", name: "categories", widget: "list", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: "posts" # 在路由中使用,例如:/admin/collections/blog。
label: "Posts" # 在用户界面中使用
folder: "source/_posts/" # 存储文件的文件夹的路径。
filter: {field: "categories", value: "Posts"}
create: true # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "Posts: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", required: false}
- {label: "分类", name: "categories", default: "Posts", widget: "list", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: "ssn" # 在路由中使用,例如:/admin/collections/blog。
label: "碎碎念" # 在用户界面中使用
folder: "source/_posts" # 存储文件的文件夹的路径。
filter: {field: "categories", value: "碎碎念"}
create: true # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "碎碎念: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", default: "S:N" , required: true}
- {label: "分类", name: "categories", widget: "list", default: "碎碎念", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "list", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: "sy" # 在路由中使用,例如:/admin/collections/blog。
label: "摄影" # 在用户界面中使用
folder: "source/_posts" # 存储文件的文件夹的路径。
filter: {field: "categories", value: "摄影"}
create: true # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "摄影: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", required: false}
- {label: "分类", name: "categories", widget: "list", default: "摄影", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: "zc" # 在路由中使用,例如:/admin/collections/blog。
label: "摘抄" # 在用户界面中使用
folder: "source/_posts/zc" # 存储文件的文件夹的路径。
filter: {field: "categories", value: "摘抄"}
create: true # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "摘抄: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", required: false}
- {label: "分类", name: "categories", widget: "list", default: "摘抄", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: "bj" # 在路由中使用,例如:/admin/collections/blog。
label: "便笺" # 在用户界面中使用
folder: "source/_posts/bj" # 存储文件的文件夹的路径。
filter: {field: "categories", value: "便笺"}
create: true # 允许用户在这个集合中创建新的文件。
fields: # 每份文件的字段,通常是前面的内容。
- {label: "标题", name: "title", default: "便笺: ", widget: "string"}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "标签", name: "tags", widget: "list", required: false}
- {label: "分类", name: "categories", widget: "list", default: "便笺", required: false}
- {label: "关键词", name: "keywords", widget: "list", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "永久链接", name: "permalink", widget: "string", required: false}
- {label: "评论", name: "comments", widget: "boolean", default: true, required: false}
- {label: "置顶", name: "pin", widget: "boolean", default: false, required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: "pages"
label: "Pages"
files:
- file: "source/about/index.md"
name: "about"
label: "关于"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- file: "source/all-web/index.md"
name: "all-web"
label: "All-Web"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- file: "source/music/index.md"
name: "music"
label: "网易云音乐"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- file: "source/name/index.md"
name: "name"
label: "NAME MD5值"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- file: "source/reading/index.md"
name: "reading"
label: "阅读足迹"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- file: "source/software/index.md"
name: "software"
label: "我的宝藏软件"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- file: "source/friends/index.md"
name: "friends"
label: "友链"
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
- name: pages-test
label: 'Pages (测试)'
label_singular: 'Page'
folder: 'source'
create: true
# 添加嵌套对象将显示集合文件夹结构
nested:
depth: 100 # 在收藏树中显示的最大深度
summary: '{{title}}' # 树节点的可选摘要,默认为推断出的标题字段
filter:
exclude:
- '_post' # 排除 source/_post 文件夹中的内容
fields:
- {label: "标题", name: "title", widget: "string"}
- {label: "评论", name: "comments", widget: "boolean", default: false, required: false}
- {label: "发布日期", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "更新日期", name: "updated", widget: "datetime", format: "YYYY-MM-DD HH:mm:ss", dateFormat: "YYYY-MM-DD", timeFormat: "HH:mm:ss", required: false}
- {label: "layout", name: "layout", widget: "string", required: false}
- {label: "摘要", name: "description", widget: "string", required: false}
- {label: "密码", name: "password", widget: "string", required: false}
- {label: "abstract", name: "abstract", default: "有东西被加密了, 请输入密码查看.", widget: "string", required: false}
- {label: "message", name: "message", default: "您好, 这里需要密码.", widget: "string", required: false}
- {label: "wrong_pass_message", name: "wrong_pass_message", default: "抱歉, 这个密码看着不太对, 请再试试.", widget: "string", required: false}
- {label: "wrong_hash_message", name: "wrong_hash_message", default: "抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.", widget: "string", required: false}
- {label: "内容", name: "body", widget: "markdown", required: false}
# 添加带有路径属性的元对象,可以编辑条目的路径
# 移动现有条目会将该条目整个子树移动到新位置
meta: { path: { widget: string, label: 'Path', index_file: 'index' } }
- name: 'data'
label: 'Data'
label_singular: 'data'
description: 'Manage the list of data.'
files:
- name: 'friends'
label: 'Friends List'
file: 'source/_data/friends.yml'
fields:
- label: 'friendlinks'
name: 'friendlinks'
widget: 'list'
fields:
- label: '分组标题'
name: 'group'
widget: 'string'
- label: '分组描述'
name: 'description'
widget: 'string'
required: false
- label: 'Items'
name: 'items'
widget: 'list'
fields:
- label: '名称'
name: 'title'
widget: 'string'
- label: '头像'
name: 'avatar'
widget: 'string'
- label: '链接'
name: 'url'
widget: 'string'
- label: '日期'
name: 'adddate'
widget: "datetime"
format: "YYYY-MM-DD HH:mm:ss"
dateFormat: "YYYY-MM-DD"
timeFormat: "HH:mm:ss"
required: false
- label: 'RSS'
name: 'rss'
widget: 'string'
required: false
- label: '联系方式'
name: 'contact'
widget: 'string'
required: false
- label: '截图'
name: 'screenshot'
widget: 'string'
required: false
- label: '关键词'
name: 'keywords'
widget: 'string'
required: false
- label: '描述'
name: 'description'
widget: 'string'
required: false
- name: 'sites'
label: 'Sites List'
file: 'source/_data/sites.yml'
fields:
- label: 'sites'
name: 'sites'
widget: 'list'
fields:
- label: '分组标题'
name: 'group'
widget: 'string'
- label: '分组描述'
name: 'description'
widget: 'string'
required: false
- label: 'Items'
name: 'items'
widget: 'list'
fields:
- label: '名称'
name: 'title'
widget: 'string'
- label: '头像'
name: 'avatar'
widget: 'string'
- label: '链接'
name: 'url'
widget: 'string'
- label: '截图'
name: 'screenshot'
widget: 'string'
required: false
- label: '关键词'
name: 'keywords'
widget: 'string'
required: false
- label: '描述'
name: 'description'
widget: 'string'
required: false
保存後に Git を GitHub にプッシュしてください。
あなたの Decap CMS にアクセスする
あなたのメールボックスを開き、招待メールを見つけます。右クリックして『Accept the invite』を選択し、リンクをコピーしてください。

リンクは一般的に https://xxxxxx.org/#invite_token=xxxxxx です。リンクを https://xxxxxx.org/admin/#invite_token=xxxxxx に変更し、ブラウザで https://xxxxxx.org/admin/#invite_token=xxxxxx を開きます。開くと Complete your signup というポップアップが表示されます。自分のパスワードを入力し、Sign up をクリックして登録を完了してください。

その後、楽しく記事を執筆できます。

本チュートリアルで何か問題に遭遇した場合は、下記のディスカッションセクションでご相談ください。
気に入ったならばコメントを残してくださいね~