Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

ClipBook

zkbkbzkbkb265 downloads

Store and quickly copy API keys, tokens, and text snippets from structured code blocks.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates4

Store and quickly copy API keys, tokens, and reusable text snippets from structured code blocks in Obsidian.

Usage

Create a fenced code block with the clipbook language identifier in any note:

```clipbook
API Token = !EXAMPLE-0000000000000000
Region = us-east-1

[AWS]
Access Key = !AKIA-EXAMPLE-0000
Secret Key = !EXAMPLE-0000000000000000
Region = us-east-1

[GitHub]
PAT = !ghp_EXAMPLE-0000
Username = octocat
```

In reading view, ClipBook renders this as a compact, structured list with copy buttons on each row. Sections are collapsible, masked values can be revealed with a click, and a quick-add button lets you append entries without editing the source.

Syntax

Syntax Meaning
Key = Value A copyable entry. The full value is copied on click.
Key = !Value A masked entry. The value is hidden by default (e.g., EXA···0000). Click the value to reveal it.
!Value A keyless masked entry (bare line, no key label).
= Value A keyless plain entry (no key label).
[Section Name] A section header to group entries visually. Click to collapse/expand.
# comment or ; comment A comment line, ignored by the parser.
Key = \!Value A plain entry whose value literally starts with ! (see Escaping).
  • Entries before the first [Section] render without a group header.
  • Values containing = are handled correctly (only the first = is used as the separator).
  • Empty lines are ignored.
  • Keys cannot contain =, or start with # or ;. Section names cannot contain ].
  • Leading and trailing whitespace is stripped from keys and values.

Escaping

Only the first character of a value can collide with the syntax, so only it is ever escaped. A leading backslash is dropped when the next character is ! or \:

Source Value
Key = \!secret !secret
Key = \\!x \!x
Key = C:\path C:\path

Backslashes anywhere else in a value are left alone, so paths and slash-heavy secrets need no escaping. ClipBook adds the escape for you when it writes an entry back — you only need it when hand-writing a value that starts with ! or \.

Masking

Prefix a value with ! to mask it. Masked values show a truncated form:

  • Long values (>10 chars): first 3 + ··· + last 4 characters
  • Medium values (4-10 chars): first 2 + ···
  • Short values (1-3 chars): ···

Click a masked value to reveal the full text. Press Escape to hide it again, or run ClipBook: Hide all revealed values to hide every revealed value at once — worth binding to a hotkey. Revealed values are also re-masked automatically after a configurable timeout, and when you switch tabs.

Collapsible sections

Sections with a [Header] can be collapsed and expanded by clicking the header. Collapsing is remembered for the rest of the session, so editing an entry does not spring every section back open. It is not written to the note — collapsing is a way of reading one, not a change to it. You can set sections to start collapsed by default in settings.

Inline editing

Click any Key name or Value to edit it in place — the cursor lands right where you clicked. For masked values, click once to reveal, then click again to edit. Press Enter to save or Escape to cancel. Changes are written back to the markdown source automatically, in reading view as well as in edit and live-preview modes.

Clearing a Key turns the entry into a keyless one. Clearing a Value leaves the entry in place with an empty value (keyless entries excepted — they would disappear entirely, so their value cannot be cleared).

Every row also has a delete button. It appears when you hover or focus the row, and on a touch screen it is always there, dimmed. Deleting shows a notice with an Undo link for ten seconds, which works whether or not the note is open in an editor.

Editing is not supported for clipbook blocks nested inside callouts or list items: the source lines carry a prefix ClipBook cannot map back safely, so it declines rather than risk mangling the note.

Quick add

Click the + Add button at the bottom of any clipbook block to append a new entry. The inline form lets you choose a section, key, value, and mask toggle, then writes directly back to the markdown source. New entries are appended to the end of their section, and a section that does not exist yet is created.

Each section header also has its own +, which opens the same form next to that section with the section already filled in — so adding to a section you can see does not mean telling a form which one you meant.

Keyboard

Each entry is a single tab stop. Tab moves between entries; the arrow keys move between a row's key, value, copy and delete; Home and End jump to the ends of a row. Enter or Space activates whatever is focused — revealing a masked value, editing a key, copying. Escape hides a revealed value, and cancels an edit.

Settings

Open Settings > ClipBook to configure:

Setting Default Description
Mask all values by default Off Mask every value, not just !-prefixed ones.
Auto-hide revealed values On (5 s) Re-mask revealed values after a delay (in seconds, or off).
Hide on tab switch On Re-mask all revealed values when switching tabs or windows.
Clear the clipboard after copying Off Empty the clipboard a while after a masked value is copied.
Sections start collapsed Off Whether sections are collapsed by default.
Mask new entries by default On Whether the mask checkbox is checked by default in quick-add.

Clipboard clearing is off by default because emptying the clipboard is a change to something the whole machine shares. When it is on, ClipBook only ever clears the value it put there — if you have copied something else since, that is left alone — and only for values the note marks as secrets with !. It also needs to read the clipboard back to make that check, which mobile webviews generally refuse outside a user gesture, so on those the clipboard is left as it is.

Commands

Command Description
ClipBook: Insert template block Inserts a template clipbook code block
ClipBook: Copy value… Fuzzy-find any entry in the vault and copy it, without opening the note
ClipBook: Hide all revealed values Re-masks every revealed value everywhere

Copy value… is the quickest way to use the plugin once you have more than a screenful of entries: open the command palette, type part of a key or a note name, press Enter. Only blocks at the top level of a note are indexed — one nested inside a callout or a list item is not found.

Installation

Copy main.js, manifest.json, and styles.css to your vault at:

<vault>/.obsidian/plugins/clipbook/

Then enable ClipBook in Settings > Community plugins.

Development

npm install
npm run dev     # watch build into main.js
npm run check   # typecheck, lint and test — what CI runs
npm test        # tests only

The Obsidian typings are pinned to the minAppVersion in manifest.json, so an API newer than the plugin claims to support fails to compile. Raising one means raising the other.

Keep example values in docs and fixtures obviously fake — EXAMPLE-0000… rather than something shaped like a real key. Secret scanners match on shape and on nearby words like "token", so a realistic-looking placeholder produces a real alert, and repeated false alerts are how a scanner stops being read.

Known limitations

  • Masking is visual only, not encryption. Values are stored as plain text in your notes and held in memory while rendered. Keep clipbook notes out of anything you sync or publish without meaning to.
  • Multiline values (SSH keys, certificates) are not supported. Each entry must be a single line.
  • Editing is unavailable for blocks nested inside callouts or list items.
  • Masked values are hidden when a note is printed or exported to PDF, but the plaintext still lives in the markdown itself — an exported markdown file carries everything.
HealthExcellent
ReviewSatisfactory
About
Store and quickly copy API keys, tokens, and reusable text snippets from fenced clipbook code blocks in your notes. Render a compact structured list with per-row copy buttons, masked values that reveal on click, collapsible sections, inline editing, and a quick-add button to append entries without editing the source.
DevelopersMarkdownInterface
Details
Current version
0.2.1
Last updated
4 weeks ago
Created
8 months ago
Updates
4 releases
Downloads
265
Compatible with
Obsidian 1.1.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
zkbkbzkbkb
GitHubzkbkb
  1. Community
  2. Plugins
  3. Developers
  4. ClipBook

Related plugins

Typewriter Mode

Typewriter scroll, writing focus, current line highlight, paragraph dimming, and more!

Lean Terminal

Embedded terminal panel powered by xterm.js and node-pty - no external windows.

Linter

Format and style your notes. Linter can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular Markdown contents like list, italics, and bold styles; and more with the use of custom rule options.

Hider

Hide interface elements such as tooltips, status bar, titlebar, and more.

BRAT

Easily install a beta version of a plugin for testing.

Claudian

Embeds Claude Code/Codex and other local Agents as AI collaborators in your vault.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Custom Frames

Turn web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.

Local REST API with MCP

Unlock your automation needs by interacting with your notes over a secure REST API.

Git

Integrate Git version control with automatic backup and other advanced features.