Recently, I started using Obsidian again. I used it in the past but recently picked it up again after seeing quite a few people using it to take daily notes or as they define it “as a second brain”.
I used so many notes apps in the past. I switched to Obsidian after a very long time of using Bear notes on the Mac.
One of the things I do very often is keep notes of all my 1:1s and my meetings. I have a directory for every person I have a 1:1 with. This way, I can keep track of notes, action items, and so on. I wrote a bit in the past of things I talk about during 1:1 if you are interested here.
The convention
I keep a directory called people, in which I have a directory for every person I have a 1:1 with. I would be people/Avi-Z in that directory.
I have a file called MMMM-D-YYYY 1-1 {name} for every 1:1 meeting. I keep notes, TODO, promises, screenshots if I have any, links to whiteboards we discussed etc.
If I have the zoom meeting / recording link I will keep that too. I try to keep the note light, I don’t want to be typing like a maniac through the entire meeting, but I also don’t want to miss or forget things.
The Automation
After downloading Obsidian. Enable community plugins and install the templater community plugin

Configure your templates directory as you see fit. Mine is just in templates. Not very creative, I know.
Make a template called record-1-1. Which does the following:
- Choose a person from the
peopledirectory. - Create a file called
MMMM-D-YYYY 1-1 {person}in the{person}directory.
Now, all I need to do is choose that template from the command pallete and start writing
Here’s the code:
<%*
// Record 1:1 - Create a new 1:1 meeting note
const peoplePath = "hippo/people";
const peopleFolder = app.vault.getAbstractFileByPath(peoplePath);
if (!peopleFolder) {
new Notice("People directory not found!");
return;
}
const people = peopleFolder.children
.filter(f => f.children)
.map(f => f.name)
.sort();
if (people.length === 0) {
new Notice("No people found in directory!");
return;
}
const selectedPerson = await tp.system.suggester(people, people, false, "Select person for 1:1:");
if (!selectedPerson) {
return;
}
const date = tp.date.now("MMMM-D-YYYY");
const filename = date + " 1-1 " + selectedPerson + ".md";
const folderPath = peoplePath + "/" + selectedPerson;
const fullPath = folderPath + "/" + filename;
// Check if file already exists
const existingFile = app.vault.getAbstractFileByPath(fullPath);
if (existingFile) {
new Notice("1:1 note already exists for " + selectedPerson + " today!");
await app.workspace.getLeaf().openFile(existingFile);
return;
}
try {
// Read the raw template
const templatePath = "hippo/templates/1-1-meeting.md";
const templateFile = app.vault.getAbstractFileByPath(templatePath);
if (!templateFile) {
new Notice("Template not found!");
return;
}
const rawTemplate = await app.vault.read(templateFile);
// Create file with raw template
const newFile = await app.vault.create(fullPath, rawTemplate);
// Open the file
const leaf = app.workspace.getLeaf();
await leaf.openFile(newFile);
// Wait for file to open
await new Promise(resolve => setTimeout(resolve, 100));
// Trigger Templater to process the template in the new file's context
await app.plugins.plugins["templater-obsidian"].templater.overwrite_active_file_commands();
new Notice("Created 1:1 note for " + selectedPerson);
} catch (error) {
new Notice("Error: " + error.message);
}
-%>
Screenshots
