Move notes in and out in bulk
Can I bring my notes with me, and take them away?
Load a folder of markdown files in one job, export them as a zip with their properties intact, import a zip, and undo a batch in one command.
What you get: your notes are never stuck. Many notes go in as one job you can undo, and they come out as plain markdown files. You need: NotesQ and a signed-in profile. About 6 minutes.
Do it yourself
Section titled “Do it yourself”1. Start with a folder of markdown
Section titled “1. Start with a folder of markdown”Each file is one note. Front matter at the top can set the title, tags and collection. In this run the folder site-visits held three files like this one:
---title: Visit Harbour Streettags: [visits]---# Visit Harbour Street
Boiler checked, pressure fine.2. Try the batch first
Section titled “2. Try the batch first”quox notes batch ./site-visits --collection "Site visits"Dry run: 3 notes, 0 attachments. Nothing written.Collection NotesSite visits 3tags: visitssample: Visit Harbour Street | Visit Mill Lane | Visit Orchard RoadRe-run with --yes to write these 3 notes. Without --yes, nothing is written: you see what would be created. --collection puts every note in one collection, whatever the files say.
3. Write it
Section titled “3. Write it”quox notes batch ./site-visits --collection "Site visits" --yesbatch cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e started (check: quox notes import-status cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e)🌌 QORTEX │ batch │ 3 created, 0 skipped, 0 failedtag: batch-cbdcccc9 (quox notes ls --scope all --tag batch-cbdcccc9)undo: quox notes batch-undo cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e --yesquox notes import-status cbdcccc9-d683-4968-bc0e-a4dfe60b7a1estatus: done3 created, 0 skipped, 0 failed of 3quox notes ls --collection "Site visits"ID Title Scope Collection Tags Updated3f3abb825c6a82d8be177f0b201a9697deb062a7 Visit Orchard Road org Site visits batch-cbdcccc9,visits 2026-11-04T23:16:17.133Z65ccfa0489979b002353f033b6769e7cb0de0663 Visit Harbour Street org Site visits batch-cbdcccc9,visits 2026-11-04T23:16:17.105Zec1cd948987b69ea739833985ef163552592715b Visit Mill Lane org Site visits batch-cbdcccc9,visits 2026-11-04T23:16:17.070Z🌌 QORTEX │ notes ls │ 3 of 3 Every note the batch made carries the batch’s tag, so you can always find the lot, and the batch prints its own undo command. A batch takes up to 200 notes, from a folder, a .jsonl file, or JSON lines on standard input (-).
4. Take them out as a zip
Section titled “4. Take them out as a zip”quox notes export --collection "Site visits" --out site-visits.zip🌌 QORTEX │ notes export │ 3 notesExported 3 notes to ~/site-visits.zip. Inside the zip, each note is a markdown file in a folder named after its collection, such as Site visits/Visit Mill Lane ec1cd948.md, with its properties kept as front matter. Narrow the export with --tag or --scope, or add --with-attachments for a complete offline copy.
5. Undo the whole batch
Section titled “5. Undo the whole batch”quox notes batch-undo cbdcccc9-d683-4968-bc0e-a4dfe60b7a1ewould delete: Visit Orchard Road /notes?note=3f3abb825c6a82d8be177f0b201a9697deb062a7would delete: Visit Harbour Street /notes?note=65ccfa0489979b002353f033b6769e7cb0de0663would delete: Visit Mill Lane /notes?note=ec1cd948987b69ea739833985ef163552592715bRe-run with --yes to delete these 3 notes.quox notes batch-undo cbdcccc9-d683-4968-bc0e-a4dfe60b7a1e --yes🌌 QORTEX │ batch-undo │ 3 deleted, 0 failed of 3quox notes ls --collection "Site visits"No results.🌌 QORTEX │ notes ls │ 0 of 0 Like the batch itself, the undo shows what it would remove until you add --yes. Each removed note keeps its revisions.
6. Bring a zip back in
Section titled “6. Bring a zip back in”quox notes import site-visits.zip --collection "Site visits" --dry-runDry run (obsidian): 3 notes, 0 attachments. Nothing written.Collection NotesSite visits 3tags: batch-cbdcccc9, visitssample: Visit Harbour Street | Visit Mill Lane | Visit Orchard Roadquox notes import site-visits.zip --collection "Site visits"import job 0a3b157f-f8a3-4049-9753-d16561abdab8 started (check any time: quox notes import-status 0a3b157f-f8a3-4049-9753-d16561abdab8)importing 0/3 (created 0, skipped 0, failed 0)🌌 QORTEX │ import │ 3 created, 0 skipped, 0 failedImported 3 notes (0 already present).quox notes import-status 0a3b157f-f8a3-4049-9753-d16561abdab8status: done3 created, 0 skipped, 0 failed of 3 The zip we exported came straight back as three notes, tags included. Import also reads an Evernote export (.enex), an Obsidian vault as a .zip, and single markdown files; it works out which from the file, or you can say with --format. --dry-run writes nothing.
7. Get an attached file back out
Section titled “7. Get an attached file back out”Files attached to a note live in your organisation’s file store. List a note’s files, then download one by its file id:
quox notes new --title "Visit Mill Lane" --tag visitsCreated note 222a63fa9780b4bdb209f5736388652fce3c95e3 (Visit Mill Lane).quox notes attach 222a63fa9780b4bdb209f5736388652fce3c95e3 mill-lane-checklist.txtAttached mill-lane-checklist.txt to note 222a63fa9780b4bdb209f5736388652fce3c95e3 (file 01K6KHSEBE4CGP8GRWCDQ54P7H).quox notes attachments 222a63fa9780b4bdb209f5736388652fce3c95e3Name File ID URLmill-lane-checklist.txt (64 B) 01K6KHSEBE4CGP8GRWCDQ54P7H /api/orgs/01M50FWN7T8XG9K9P9JN0TA5WF/files/01K6KHSEBE4CGP...quox notes download 01K6KHSEBE4CGP8GRWCDQ54P7H --out back/mill-lane-checklist.txtSaved ~/back/mill-lane-checklist.txt (64 B).quox notes download 01K6KHSEBE4CGP8GRWCDQ54P7H --out back/mill-lane-checklist.txt✖ ~/back/mill-lane-checklist.txt already exists. Use --force to overwrite.sha256sum mill-lane-checklist.txt back/mill-lane-checklist.txt7f301dbc0d31b7838fc5f80752eeb1b692ff6dc0a3fd5866982faaba04a7234b mill-lane-checklist.txt7f301dbc0d31b7838fc5f80752eeb1b692ff6dc0a3fd5866982faaba04a7234b back/mill-lane-checklist.txt The file came back byte for byte. Download never overwrites a file that is already there unless you add --force; without --out it saves under the original name in the current folder.
What just happened
Section titled “What just happened”The batch and the import each ran as one job on your Quox, with a job id you can check at any time with quox notes import-status. That command exits non-zero if the job or any note in it failed, so a script can rely on it.
Check it yourself
Section titled “Check it yourself”quox notes ls --collection "Site visits" after each step: three notes after steps 3 and 6, none after step 5.
After this run we removed the three imported notes one at a time with quox notes rm <id> --yes, taking the ids from quox notes ls --collection "Site visits".