---
title: k1LoW/deck の Page key を活用する
slug: using-deck-with-page-key
created_time: 2026-06-10T14:16:00.000Z
last_edited_time: 2026-06-10T14:35:00.000Z
tags:
  - deck
  - Claude Code
  - Agent Skills
published: true
locale: ja
---
ここしばらくプレゼンテーション資料作りには **k1LoW/deck** を利用している。Markdownファイルを書けばGoogleスライドが作れるスグレモノだ。

https://github.com/k1LoW/deck/

ソースファイルがプレーンテキストである利点のひとつに、Claude Codeのようなコーディング用のAIエージェントをスライド作成に活用できる点がある。アウトラインをもとにざっとスライドを作らせてから手直しすることも多いし、スライドを書きながら正確な引用をするための出典をWeb検索させたり、事実関係の裏取りをさせたり、アシスタントとしていろいろ役に立つ。

## ページの識別子

スライドがある程度の枚数できてくると、論理構造を見直す中で「このページとこのページの順序が逆だな」とか、「ここのページの間に1枚補足が足りないな」とか気づくことがある。そういう並べ替えを手でやってもいいのだが、最近はAIエージェントに並べ替えも指示したくなった。ただし問題があり、まさに書いたように「このページ」というように指示代名詞になりがちで、単一のページならまだしも、複数のページについて指示するのは困難だった。

最初に思いつくのは「x番目のページ」という位置インデックスでの識別だが、Markdownファイルの中でページ数はわかりにくいし、並べ替えをすると変わってしまう。コンテキストの中で整合性が取れなくなるのでインデックスは却下した。

ということで、独自のルールとしてページのメタデータの中に識別子を含めて、一意に指示できるようにした。下記のように、レイアウトの設定をするページコンフィグに `key` フィールドを追加し、適当なランダム文字列が識別子として機能する。

```markdown
---

<!-- { "key": "abcd", "layout": "...." } -->

# Heading

---
```

これが思いのほか手元でうまくいったので、deck本体に `key` フィールドを予約する提案をして、最新バージョンで取り込んでもらえた。これで `key` フィールドが将来的に別の用途で使われることはないし、`deck apply` 時点で `key`フィールドが重複するページがあったらエラーになる安全装置付きだ。至れり尽くせり。

https://github.com/k1LoW/deck/issues/523

https://github.com/k1LoW/deck/pull/527

## lacolaco/deck-skills

`key`フィールドを使った指示で円滑にスライド編集作業をするために作った自分用のAgent Skillsがあるので、この際公開してしまうことにした。`key`フィールドの使い方の一例として誰かの参考になれば幸い。とはいえ、他人が使うことは想定してないので汎用性についてはあしからず。

https://github.com/lacolaco/deck-skills