Skip to content

End of reading

Finishing a reading is a moment worth marking. Without a ritual, the article is closed and joins the pile of things read once. With one, the end of reading becomes a short sequence: gather what you wrote, note that you read it, and set the next step. A single command does the mechanical part, so the attention goes to deciding what the reading was worth.

The last paragraph of Why we forget what we read is read. One hotkey runs End of reading: the comments are extracted, a line “2026-11-01 [[Why we forget what we read]]” is added to Reading log.md, and the script sets the property status: read on the note. The extraction note opens, ready for the periodic review.

First, the script Scripts/mark-read.js:

module.exports = async (params, settings) => {
const { app } = params;
const file = app.workspace.getActiveFile();
if (!file) throw new Error("No active note");
await app.fileManager.processFrontMatter(file, (fm) => {
fm[settings.property ?? "status"] = settings.value ?? "read";
});
const log = app.vault.getAbstractFileByPath(settings.log ?? "Reading log.md");
const line = `- ${window.moment().format("YYYY-MM-DD")} [[${file.basename}]]\n`;
if (log) await app.vault.append(log, line);
else await app.vault.create(settings.log ?? "Reading log.md", line);
};

Then a Chain gesture named End of reading, with Command on:

Step Type Value
1 Obsidian command Extract comments from this note (hypomnema:extract-note), picked with Choose…
2 Script Scripts/mark-read.js, settings property = status, value = read, log = Reading log.md

The first run of the script asks for confirmation and names the file. If a step fails, the chain stops and a notice says why. See Scripts for the security warning.

Without a script. Replace step 2 with a QuickAdd Capture called through its command (Obsidian command step), as in the QuickAdd recipe.

Sharing values. params.variables holds the values typed for {{VALUE:…}} in earlier steps. The script can read them, for instance params.variables["verdict"] to write read, to reread or dropped, and set new ones for the following steps.

Wait for the view. If a step opens a note that the next step needs, add a Pause (ms) step of 300 between them.