PageClear19k downloadsDeal batch notes from search results,current file, or Dataview query string.
Cook your notes like a chef: pick the ingredients, fire the pan, confirm before it's served ✅
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.
isDesktopOnly: false)tags / alias / cssclasses support comma-separated multi-value edits and - prefix to remove a single value; no MetaEdit plugin needed (built-in since v1.8.0)Demo: search results + clipboard + Dataview query — all sources share the same "Select → Cook → Confirm" flow.

| 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 |
| 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 |
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 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 fileFile 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.
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.
Undo last batch operation ... opens history and focuses the most recent record; Open backup & undo history ... lists all records (time / type / file count / status)N records (default 20) and cleans up older backups automaticallyBackup 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 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.
Setup: Settings → File Cooker → AI (experimental) → enable, fill in base URL / model / API key. AI commands are blocked with a notice until configured.
The command Open File Cooker workbench ... (also on the sidebar ribbon) opens a 3-step wizard:
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.
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.
.base file| 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.
obsidian-file-cooker folder into <vault>/.obsidian/plugins/Note: on some machines the
.obsidianfolder is hidden. On macOS pressCommand+Shift+Dotto reveal it.
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 🙏
tags / alias / cssclasses batch add/remove via comma-separated values