一键导入
note-apps
Note-taking app CLIs: Obsidian (filesystem vault, markdown, wikilinks) and Notion (API + ntn CLI, pages, databases, markdown, Workers).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Note-taking app CLIs: Obsidian (filesystem vault, markdown, wikilinks) and Notion (API + ntn CLI, pages, databases, markdown, Workers).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
macOS-specific automation: iMessage/SMS messaging and desktop control (screenshots, clicks, keyboard input).
Messaging platform integrations: email (IMAP/SMTP via Himalaya), X/Twitter (xurl CLI), and Yuanbao groups (@mentions, DMs).
Control creative software programmatically: ComfyUI (AI image/video generation via REST/WebSocket API) and TouchDesigner (real-time visual programming via MCP).
Systematic engineering disciplines: debugging (root cause investigation), TDD (test-first development), and exploratory QA (web app testing).
Creative coding: p5.js sketches, Manim animations, Pretext text layouts.
Create, read, edit .pptx decks, slides, notes, templates.
| name | note-apps |
| description | Note-taking app CLIs: Obsidian (filesystem vault, markdown, wikilinks) and Notion (API + ntn CLI, pages, databases, markdown, Workers). |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"hermes":{"tags":["notes","obsidian","notion","markdown","vault","database","api","cli","productivity"]}} |
Two note-taking systems, accessed via different paradigms:
Filesystem-first Obsidian vault work: reading notes, listing notes, searching, creating, appending, wikilinks.
The vault path is the OBSIDIAN_VAULT_PATH environment variable (from ${HERMES_HOME:-~/.hermes}/.env). If unset, use ~/Documents/Obsidian Vault.
File tools do not expand shell variables — resolve the vault path first and pass a concrete absolute path. Vault paths may contain spaces.
If unknown, use terminal to resolve OBSIDIAN_VAULT_PATH or check the fallback. Once known, switch to file tools.
Use read_file with the resolved absolute path. Prefer over cat (line numbers, pagination).
Use search_files with target: "files" and the vault path:
pattern: "*.md" under vault pathUse search_files:
target: "files", filename patterntarget: "content", content regex as pattern, file_glob: "*.md"Use write_file with the resolved absolute path and full markdown content.
patch for anchored append (after existing heading, before known trailing block)write_file when rewriting the whole note is clearerObsidian links notes with [[Note Name]] syntax. Use these when creating notes to link related content.
Talk to Notion two ways. Same integration token works for both.
◆ ntn CLI — Notion's official CLI. Shorter syntax, one-line file uploads, required for Workers. macOS + Linux only. Default when installed.
◆ HTTP + curl — works everywhere including Windows. Default fallback.
ntn_ or secret_)${HERMES_HOME:-~/.hermes}/.env: NOTION_API_KEY=ntn_your_key_here... → Connect to → your integration namecurl -fsSL https://ntn.dev | bash
# Or: npm install --global ntn
Skip ntn login — use integration token instead:
export NOTION_API_TOKEN=$NOTION_API_KEY
export NOTION_KEYRING=0
ntn api v1/users # GET
ntn api v1/pages/{page_id} # Read page metadata
ntn api v1/pages/{page_id}/markdown # Read as Markdown
ntn api v1/blocks/{page_id}/children # Read blocks
ntn api v1/search query="page title" # Search
# Create page from Markdown
ntn api v1/pages parent[page_id]=xxx \
properties[title][0][text][content]="Notes" \
markdown="# Agenda\n\n- Item 1\n- Item 2"
# Patch page with Markdown
ntn api v1/pages/{page_id}/markdown -X PATCH markdown="## Update\n\nDone."
# Query database
ntn api v1/data_sources/{id}/query -X POST \
filter[property]=Status filter[select][equals]=Active
# File uploads (one-liner)
ntn files create < photo.png
All requests need:
-H "Authorization: Bearer $NOTION_API_KEY"
-H "Notion-Version: 2025-09-03"
-H "Content-Type: application/json"
Key endpoints:
GET /v1/pages/{id} — page metadataGET /v1/pages/{id}/markdown — page as MarkdownGET /v1/blocks/{id}/children — page content as blocksPOST /v1/search — searchPOST /v1/pages — create page (accepts markdown body)PATCH /v1/pages/{id}/markdown — update page contentPOST /v1/data_sources/{id}/query — query databasePOST /v1/file_uploads → PUT bytes → reference in page (3-step file upload)/data_sources/ endpoints for queriesdatabase_id (for creating pages) and data_source_id (for querying){"title": [{"text": {"content": "..."}}]}{"select": {"name": "Option"}}{"date": {"start": "2026-01-15"}}{"checkbox": true}{"number": 42}{"relation": [{"id": "page_id"}]}Workers are TypeScript programs Notion hosts. Can expose Syncs, Tools, and Webhooks.
ntn workers new my-worker
cd my-worker
# Edit src/index.ts
ntn workers deploy --name my-worker
import { Worker } from "@notionhq/workers";
const worker = new Worker();
export default worker;
worker.tool("greet", {
title: "Greet a User",
inputSchema: { type: "object", properties: { name: { type: "string" } }, required: ["name"] },
execute: async ({ name }) => `Hello, ${name}!`,
});
Worker lifecycle: ntn workers deploy/list/exec, ntn workers sync trigger/pause, ntn workers env set, ntn workers runs list/logs, ntn workers webhooks list.
Standard CommonMark plus XML-like tags for Notion-specific blocks. See references/block-types.md for the full block catalog.
Key additions:
<callout icon="🎯" color="blue_bg">...</callout><details><summary>Toggle</summary>...</details><columns><column>Left</column><column>Right</column></columns><mention-page url="...">Title</mention-page>gray brown orange yellow green blue purple pink red + *_bg variants"is_inline": true when creating data sources to embed in a page-s to curl to suppress progress bars