| name | flomo |
| description | Bidirectional flomo (浮墨笔记) integration via official MCP. Create, search, read, browse tags, daily review, sync memos to vault. Falls back to webhook for headless use. Triggers when user says "flomo", "send to flomo", "search flomo", "flomo daily", "flomo sync", "floating note", or /flomo. |
Flomo Skill — Bidirectional Integration
Read and write flomo memos through the official flomo MCP server (https://flomoapp.com/mcp). Interactive operations (create, search, browse, daily review) run through MCP tools. Headless / cron use falls back to the legacy webhook via flomo_send.py.
When this skill fires
- "send this to flomo", "save as flomo memo", "/flomo"
- "search flomo for …", "what flomo memos mention …"
- "show me my flomo daily review", "flomo 每日回顾"
- "sync today's flomo to the vault", "flomo sync"
- "rename flomo tag …", "list flomo tags"
Setup (one-time)
-
MCP connection — already registered at user scope in ~/.claude.json:
{ "flomo": { "type": "http", "url": "https://flomoapp.com/mcp" } }
First use opens the flomo OAuth page in the browser. Verify with /mcp.
-
Personal Access Token (needed only for the headless sync script and the webhook fallback) — flomo → Settings → MCP 连接 → 个人令牌 → Create (shown once). Save to .env:
FLOMO_MCP_TOKEN=...
FLOMO_WEBHOOK_URL=https://flomoapp.com/iwh/... # legacy, still used as fallback
Subcommands
/flomo <content> — create a memo
Route: MCP memo_create. Tags go inline as #tag or #tag/subtag. If MCP is unavailable, falls back to python3 _scripts/flomo_send.py.
Before writing anything non-trivial, call get_format_guide once — flomo only supports bold, highlight, ordered list, unordered list. No headings, no code blocks, no links.
/flomo "New PAI idea: treat flomo memos as L2 data #PAI #idea"
/flomo search <query> — search memos
Route: MCP memo_search. Supports keywords, tag filter, date range.
/flomo search "MCP" --tag "开发" --limit 20
Render hits as a compact list with id, date, tag line, and the first ~100 chars of content. Offer /flomo get <id> for full text.
/flomo get <id...> — fetch full memos
Route: MCP memo_batch_get. Max 50 ids per call.
/flomo related <id> — recommended memos
Route: MCP memo_recommended. Good for stitching cross-memo connections before synthesis.
/flomo daily — daily review
Route: MCP get_daily_review. Returns flomo's hand-picked reminiscence for today. Add --save to write Sources/Flomo Daily Review - YYYY-MM-DD.md.
/flomo tags [prefix] — browse tag tree
Route: MCP tag_tree (hierarchy) or tag_search (keyword). Call get_tag_guide first if the user is about to create or reorganize tags.
/flomo rename-tag <old> <new> — rename
Route: MCP tag_rename. Destructive across many memos — always confirm with user and show affected count (max_memos) before executing.
/flomo context — flomo's view of the user
Route: MCP memory_context (dynamic: projects, goals) and memory_user (stable: identity, preferences). Useful cross-context for Claude when planning or summarizing.
/flomo sync [--days N] [--summary] — import memos to vault
Route: python3 _scripts/flomo_sync.py --days N. Pulls recent memos via MCP HTTP (token auth), writes Sources/Flomo - YYYY-MM-DD.md. Tags preserved inline as #tag; top-level tag also rendered as [[wikilink]] for graph stitching. Optional --summary adds an AI-generated TL;DR at the top.
MCP vs. webhook — when each path is used
| Path | When | Capability |
|---|
MCP (mcp__...__memo_*) | Claude is in the loop | Full read/write/search/tags/review/context |
Webhook (flomo_send.py) | Headless scripts, cron, other Python tools | Create-only |
Other PAI scripts that pipe into flomo (e.g., digest emitters) should keep calling flomo_send.py — don't migrate those to MCP.
Output conventions
- Created memos: no extra framing; echo the memo content back with a ✅ and the new
id.
- Search results: compact table
id | date | tags | preview.
- Sync digest:
Sources/Flomo - YYYY-MM-DD.md, no YAML frontmatter, grouped by tag, #tags preserved, top-level [[wikilinks]] added.
- Daily review save:
Sources/Flomo Daily Review - YYYY-MM-DD.md.
Safety notes
tag_rename rewrites many memos — confirm count first.
memo_update — always memo_batch_get the original first, show diff, confirm.
- No
memo_delete exists in flomo's MCP (by design). Don't fake one with memo_update → empty content.
Tips
- Inline tags in content are fine:
"Book note: Deep Work #读书/Newport".
- Sync is the L4 scenario — schedule via
org_skill.py once output quality is confirmed.
- Pair with
/mem (local Obsidian memory) and /daily-synthesis (cross-source) for the full pipeline.