README file from
GithubCook your notes like a chef: pick the ingredients, fire the pan, confirm before it's served ✅
File Cooker
File Cooker is an Obsidian plugin for batch file operations. Treat a batch of files (from search results, clipboard, current file links, Dataview / Bases queries …) as ingredients, then run a single command to move, rename, edit properties, delete, merge, sync to flomo, or add to Canvas — like cooking them in one pan.
- 🧺 Any source: clipboard · current file · search results · Dataview query · Bases query · context menu
- 🍳 Rich operations: move / rename / edit properties / delete / merge / create / sync to flomo / copy links / add to Canvas
- 🛡️ Confirm before acting: every operation shows a confirmation modal; destructive ones (delete) are highlighted in red
- 📱 Mobile friendly: not desktop-only (
isDesktopOnly: false)
✨ Features
- Batch edit properties: add / modify / delete frontmatter properties;
tags/alias/cssclassessupport comma-separated multi-value edits and-prefix to remove a single value; no MetaEdit plugin needed (built-in since v1.8.0) - Batch move / rename: organize selected files into a target folder or rename them in one go
- Batch merge: merge multiple files into one target file (YAML ignored)
- Batch create: materialize unresolved links of the current file into real files
- Sync to flomo: sync file links, file content, or current selection (requires flomoAPI)
- Copy links: copy Dataview / Bases result links to the clipboard
- Add to Canvas: batch-add files, text / selection, or Dataview tasks into a target canvas
- ⭐ Bases integration (new in v2.0.0): run file operations directly on Bases query results
- ⭐ Context menu (new in v2.0.0): right-click access from editor and file explorer
- Presentation mode (new in v1.9.0): one-click larger font and wider editor for screen sharing
📸 Screenshot
Demo: search results + clipboard + Dataview query — all sources share the same "Select → Cook → Confirm" flow.

🍳 How it works: Select → Cook → Confirm
- Select: pick a batch of files from any supported source
- Cook: run the matching operation command
- Confirm: review the targets in the confirmation modal, then execute
Supported input sources
| Source | How to use | Notes |
|---|---|---|
| 📋 Clipboard | Copy file links (e.g. search results) first, then run clipboard commands | Plain text content can also be added to Canvas |
| 📄 Current file | Open a file, then run current-file-link commands | Reads links / unresolved links / content / selection |
| 🔍 Search results | Open the Obsidian search panel, then run search results commands | Operates directly on the results in the panel |
| 📊 Dataview query | Select a DQL or DataviewJS query in the editor, then run Dataview commands | Requires the Dataview plugin; DataviewJS supported since v1.7.1 |
| 🗄️ Bases query | Open a Bases view, then run Bases commands | New in v2.0.0; only rows mappable to real files are processed |
| 🖱️ Context menu | Right-click in the editor or file explorer | New in v2.0.0 |
Supported operations
| Operation | Example command | Notes |
|---|---|---|
| 📁 Move | Move ... to folder | Batch move to a target folder |
| ✏️ Rename | Rename ... | Batch rename |
| 🏷️ Edit properties | Edit Properties ... | Add / modify / delete frontmatter, multi-value supported |
| 🔑 Rename property | Rename property in folder ... | Batch rename a property key, values preserved (new in v3.2.0) |
| 🗑️ Delete | Delete ... ! | Destructive — highlighted red in the confirmation modal |
| 🔗 Merge | Merge ... to ... | Merge into a target file |
| 🆕 Create | Create links ... | Create files from unresolved links |
| 📤 Sync to flomo | Sync ... to flomo | File links / content / selection |
| 📋 Copy links | Copy ... links! | Copy result links to the clipboard |
| 🖼️ Add to Canvas | Add ... to canvas | Files / text / tasks |
Bases integration (new in v2.0.0)
When a Bases data source is available, File Cooker provides a Bases command group aligned with the Dataview file commands (move / rename / edit properties / delete / merge / sync to flomo / copy links / add to canvas / add task).
Behavior boundaries:
- File-only mapping: only rows that can be mapped to real vault files are processed
- Ignore non-file rows: unmapped rows are skipped, and a notice reports the ignored count
- No row writes: File Cooker does not modify Bases row fields in this flow
Context menu (new in v2.0.0)
- Editor context menu:
File Cooker > Selection: sync the selection to flomo / add it to a canvas (only when a selection exists)File Cooker > Current file links: run link-based batch operations from the current file
- File explorer context menu:
File Cooker > Target file: rename / edit properties / delete the right-clicked fileFile Cooker > Target folder(new in v3.2.0): batch edit properties / rename a property key across all notes in the right-clicked folder (including subfolders)
Notes: destructive actions (like delete) still require confirmation. If no active file exists, current-file-link operations are safely blocked with a notice.
🛟 Backup & Undo (new)
Every batch write operation — edit properties / move / rename / delete / merge / create — now takes a snapshot before applying, so you can undo a whole batch or revert selected files individually afterwards.
- Automatic snapshots: applied operations create a persistent backup record (content + paths); canceled or failed operations leave no residue
- Undo history:
Undo last batch operation ...opens history and focuses the most recent record;Open backup & undo history ...lists all records (time / type / file count / status) - Per-file revert: expand a record, check the files you want to restore, and revert — move/rename are reversed via Obsidian's rename (links auto-updated), deletes are rebuilt from the snapshot, created/copied files are trashed
- Drift protection: if a file was modified after the operation, it is marked modified and disabled — enable force override to overwrite it explicitly; nothing is ever silently overwritten
- Retention: keeps the most recent
Nrecords (default 20) and cleans up older backups automatically
Backup folder: backups are stored inside your vault (default
.file-cooker/backups). The dot prefix hides it from the file explorer by default; you can also add it to Settings → Files and links → Excluded files (e.g..file-cooker) to keep it out of search and graph. Out of scope: Canvas operations and flomo sync are not backed up (they write through internal APIs / the network and don't touch vault files).
🤖 AI (experimental, new)
AI can infer frontmatter properties (tags / aliases / custom scalar properties) from note content, propose values for your review, and apply them in batch after your confirmation.
- Any source: trigger from clipboard / current file links / search results / Dataview / Bases results, or right-click a single file
- Proposal first: nothing is written before you review; edit or uncheck any proposal
- Multi-value merge: tags / aliases are merged into existing values (no overwrite); scalar properties are only written when absent (override toggle available)
- Undoable: applied AI writes create backup records, revertable from backup history like any other batch operation
- Opt-in & private: AI is disabled by default; the confirmation dialog always states exactly what will be sent (file name + first N characters, configurable)
- OpenAI-compatible providers: works with DeepSeek / Kimi / GLM / OpenRouter / Ollama (local) — anything speaking the OpenAI Chat API
Setup: Settings → File Cooker → AI (experimental) → enable, fill in base URL / model / API key. AI commands are blocked with a notice until configured.
🍳 Workbench: one entry for query → confirm → execute (new)
The command Open File Cooker workbench ... (also on the sidebar ribbon) opens a 3-step wizard:
- Query — pick any source: AI-generated queries (one sentence → DQL / search / Bases), handwritten DQL / search / Bases (with syntax check), or the classic sources (search panel results / clipboard / current file links)
- Confirm — review the matched file list (batch limit truncation is shown)
- Execute — pick an operation from the grouped catalog (edit properties / AI completion / move / merge / canvas / rename / delete); every write still goes through its confirmation dialog with backup & undo
Step navigation preserves everything you typed. Existing commands keep working as shortcuts.
Scripts you already have can be imported: 从笔记导入… fills the DQL / search / Bases editor from a picked note's ```dataview / ```query code block or a saved .base file, then runs a syntax check automatically.
🗣️ Find files with natural language (new)
Type a sentence like "last year's unfinished reading notes" — the AI compiles it into DQL, Obsidian search syntax, and Bases filters (all three, locally & deterministically), previews them side by side, and after your approval runs the one you pick. Matching files go straight into File Cooker's batch pipeline (edit properties / move / rename / delete / canvas / flomo) with full backup & undo.
- One input, three query languages (DQL requires the Dataview plugin)
- Query text is editable before running; Bases can be saved as a
.basefile - Read-only until you dispatch results to a batch operation
- Sends only your sentence + vault metadata (tag/property/folder lists), never note bodies
⚙️ Settings
| Setting | Purpose | Default |
|---|---|---|
| Interface language | UI language for dialogs, notices and settings: Auto follows the Obsidian interface language (English for non-Chinese, 中文 for zh), or force Chinese/English |
Auto |
| Limit | Maximum number of files processed per batch | 300 |
| flomoAPI | flomo API endpoint, used to sync notes to flomo | empty |
| Enable backup | Create a snapshot for every batch write so it can be reverted | on |
| Backup folder | Vault folder where backups are stored (dot-prefix hides it) | .file-cooker/backups |
| Retention | Number of recent backup records to keep | 20 |
| AI (experimental) | Enable AI property completion; base URL / model / API key / batch params / inference options | off |
flomo sync commands will notify "Please config flomoAPI first!" when the API is not configured.
📦 Installation
Method 1: Community plugins (recommended)
- Settings → Third-party plugin → turn off Safe mode
- Click Browse, search for File Cooker
- Click Install, then enable the plugin
Method 2: Manual installation
- Download the latest release
- Extract the
obsidian-file-cookerfolder into<vault>/.obsidian/plugins/Note: on some machines the
.obsidianfolder is hidden. On macOS pressCommand+Shift+Dotto reveal it. - Reload Obsidian and enable the plugin in Settings
Requirements
- Obsidian ≥ 1.12.3 (since v2.0.0)
- Dataview plugin: only needed for the "Dataview query" source
- flomoAPI: only needed for "Sync to flomo" commands
- Everything else works out of the box with no extra dependencies
🛡️ Safety & limits
- Always confirm: every command opens a confirmation modal before any change is made
- Delete is highlighted: delete commands are marked in red in the confirmation modal
- Backup before apply: every batch write takes a snapshot first and can be reverted from history; drifted (mid-edited) files are never silently overwritten
- Batch limit: a single batch is limited to 300 files by default (adjustable in Settings)
- Visible failures: no files, no active file, missing config, etc. are always reported via Notice — never silently
💬 Feedback & support
Questions or suggestions? Feel free to add me on WeChat: IvyOdds, or open an issue on GitHub Issues.
If File Cooker helps you, please share it with your Obsidian friends 🙏
📜 License
- MIT License — see LICENSE
- Issues and pull requests are welcome
📝 Changelog
2.2.0
- New Backup & Undo: every batch write (properties / move / rename / delete / merge / create) is snapshotted and can be reverted per-file from history; drift detection prevents silent overwrites
- New settings: backup toggle, backup folder, retention
2.0.0
- New Bases query source for batch file operations (file-only rows; no Bases field writes)
- New context menu entries (editor: selection / current file links; file explorer: target file)
- Upgraded Obsidian dependency to 1.12.3
1.9.0
- New presentation mode: one-click larger font and wider editor for screen sharing
1.8.1
- Multi-value property editing:
tags/alias/cssclassesbatch add/remove via comma-separated values
1.8.0
- Built-in batch property editing — no MetaEdit plugin required
1.7.8
- New search results commands, operate directly on the search panel results
1.7.7
- Add Dataview tasks to Canvas
1.7.6
- Add text to Canvas
1.7.1
- Support DataviewJS page queries
1.7.0
- Batch-add files to Canvas
1.0 ~ 1.6
- Core capabilities: move, rename, merge, delete, create from unresolved links, sync to flomo, copy links