Turn a note into a one-page report that people can read, edit in place and share.
Stop rewriting your notes for your team. Add myone.page: true to a note and it opens as a styled one-page report:
big numbers, cards, funnels, tables, a Gantt timeline. Click any text to edit it, and the edit is saved back to the
note. It stays a plain Markdown note you can still open, search and link.
See finished pages first (each one is a single note, open in a browser, no sign-in): investor update · board pre-read · client proposal · client results report · strategy memo · product brief · Obsidian plugin market analysis
The plugin is free. Pages, editing on the page, HTML export and writing pages with AI work without an account, with no time limit. Sharing is optional: publish a page to myone.page and your team edits it in the browser, with their edits back in your note within 60 seconds, end-to-end encrypted. Your first 3 shared pages are free (the people you share with sign in); a paid plan adds unlimited pages and links open to anyone. Readers don't need Obsidian and pay nothing. See Share on the web.
Run New page from template (or the ribbon's page icon, New MyOnePage… on a folder in the file explorer, or
the button in the plugin's settings) and pick one. You get a new note with the outline of that kind of page, open at
once: the parts, numbers, cards and timeline it needs, each field saying what goes there ([Company], \$0, "One
line, with a number"). Click any text and write your own, or click Fill it with AI above the page to have an AI
chat fill it from your notes (see Write pages with AI).
| Template | For | Follows |
|---|---|---|
| Investor update | investors and advisors, monthly | YC's format: numbers, highlights, lowlights, asks, goals |
| Board pre-read | the board, two days before each meeting | Sequoia's board deck: big picture, numbers against plan, one deep dive |
| Client proposal | a client, before the contract | the options as cards, the timeline, the price |
| Client results report | a client, each quarter | a quarterly business review: results against goals, the next 90 days |
| Product brief | the team building it | a Shape Up pitch: problem, appetite, solution, rabbit holes, no-gos |
| Strategy memo | the team and the board, yearly | Rumelt's kernel: diagnosis, guiding policy, coherent actions |
| Blank | anything | a title, a hero line and one part |
To see one finished first, open its example on myone.page (the links above). Use this template at the top of an example opens Obsidian with a new note from the matching template, if the plugin is installed.
Add myone.page: true to a note's frontmatter. The note then opens as a page. You can also open any note as a page
with Open current note as a one-pager, or from the file menu.
---
myone.page: true
title: Q4 plan
---
# Ship the ==new onboarding== by December
## 01 · Where we are
> [!stats]
>
> - **42%** finish setup today
> - [x] **3** teams on board
**Rule:** one owner per part.
<note>.html: one read-only file you can send to anyone. It goes next to the note, or to the
folder set in HTML export folder in the plugin settings.| Block | Markdown |
|---|---|
| Part | ## 01 · Title |
| Small heading | ### Text |
| Rule | **Lead:** text |
| Numbered list | 1. **Lead.** text |
| Table | a Markdown table |
| Callout box | > [!lineage] Lead |
| Cards, small cards | > [!cards], > [!uc] with > - **Title** text |
| Big numbers | > [!stats] with > - **42** label |
| Funnel | > [!cascade] with > - **85** label |
| Steps | > [!flow] with > - step |
| Command columns | > [!cmdcols] |
| Lean canvas | > [!canvas] |
| Timeline | a ```mermaid block starting with gantt |
Anything else is shown as plain text, exactly as written.
The AI writes the page; the plugin shows it, lets you edit it and shares it. Three ways, from no setup to most automatic:
myone-page-skill.zip from myone.page/ai and upload it in Claude
under Customize → Skills → + → Create skill → Upload a skill (code execution must be on, in Settings →
Capabilities). On a paid plan, Customize → Plugins → Add marketplace → itsdionis/MyOnePage does the same and
keeps it up to date. Then ask Claude for a one-pager and paste its answer into Make a page
with AI, or let Claude write the note straight into your vault if it can open the folder.npx skills add itsdionis/MyOnePage, or in Claude Code
/plugin marketplace add itsdionis/MyOnePage then /plugin install myone-page@myonepage.skills/myone-page/ is the skill: SKILL.md (the whole page format), check.mjs and md.js (the checker),
example.md (a page that uses every block type), templates/ (the outlines above, which the AI starts from). check.mjs checks a page and rewrites it in the canonical form the
page saves (Node 18 or later, no install):
node check.mjs path/to/note.md # errors, warnings, and blocks that fell back to plain text
node check.mjs --fix path/to/note.md # rewrite it canonically
You can publish a page so that other people can read or edit it in a browser. Nothing is sent anywhere until you click share. Everything above (pages, editing, HTML export, writing pages with AI) is free and works without an account.
share: in their frontmatter, and syncs them both ways (every 60
seconds by default, and a few seconds after you stop typing in a shared note). Notes without share: never leave
your device.share: (to sync them and list them under Shared pages). It
writes the clipboard when you copy a link or a request for an AI chat, and reads it only when you click Paste
the answer in Make a page with AI. It never uses Node's fs: the one place fs appears in main.js is
check.mjs, the page checker, which Set up (Install for coding agents) writes into your vault as a text file
for a coding agent to run; the plugin itself never runs it.#, which browsers never send to the server, so the server stores only ciphertext. Besides
that, it receives the editors: and viewers: lists, so it can check who may open the page..obsidian/plugins/myone-page/data.json), so every device that syncs
the vault shares one account. The vault already holds each page's key (in its share: link); keep both out of a
public repository. A note shared from another account is left alone, never moved.To share a note, click the share button on the page (or run Share current note on the web). The plugin adds
share: new, publishes the note, writes the link into share: and copies it. Add emails, @domains or anyone to
editors: and viewers: to let people in (anyone needs a plan). Remove share: to take the page offline. A
note the free plan has no room for gets share: waiting and is published by itself once there is room (a page taken
offline, or a plan).
MyOnePage is built by a three-time CTO, to the standard of software a team trusts with its plans:
engine/seal.js), with the
page's address bound into the ciphertext as additional data. The key never leaves the link's # fragment.If-Match); a stale save is refused.
A note changed on both sides keeps the web version next to it as a separate file.check.mjs on every
example and template (pnpm verify); the release itself is built by GitHub Actions from the tagged code.The plugin writes only to your vault: to the notes you edit on a page, to <note>.html when you click HTML, to
the new notes New page from template and Make a page with AI make (or the bare template page Fill it with AI
fills), and, when a shared note was changed on both sides, to
<note> (web version).md. When you click Set up under Coding agents (desktop only), it writes SKILL.md,
check.mjs, md.js, example.md and templates/ to .claude/skills/myone-page/ (Claude Code, Cursor) and
.agents/skills/myone-page/ (Codex), and rewrites them on a plugin update unless you edited them. Errors are also
logged to log.txt in the plugin folder.
pnpm install
pnpm build # main.js: src/main.ts bundled by esbuild, with the engine files (engine/) as text
pnpm dev # rebuild on change
pnpm skill # copy check.mjs, md.js and the example into skills/myone-page/ (node skill.mjs --zip <out>: the zip)
pnpm verify # Prettier, ESLint (Obsidian's rules), the sample page, the skill copies, the build: what a release runs
The engine (engine/) is classic browser scripts. The plugin runs it inside a sandboxed iframe; check.mjs loads
md.js in Node.