| Crates.io | zettelkasten-cli |
| lib.rs | zettelkasten-cli |
| version | 1.5.0 |
| created_at | 2025-04-06 15:50:05.578889+00 |
| updated_at | 2025-07-06 17:43:10.185507+00 |
| description | A zettelkasten CLI that just works and gets out of your way |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1623009 |
| size | 81,172 |
Inspiration taken from the amazing work of @rwxrob keg project (installable via
go install github.com/rwxrob/keg/cmd/keg@latest)
Right now we just support installing with the cargo package manager, so you
can setup rust and cargo and then run the following command 👇
cargo install zettelkasten-cli
zet (i)nit: Initialize the repo in the current empty directoryzet (t)itles: Print all the titles from the entries (the tags are presented
alongside the title, for easy filtering in notes like journaling or other tag)zet (e)dit: Get a entry by any substring of the available titles.zet (g)rep: Search for particular substring or regex pattern within your
entries contentzet (c)reate: Create a new entry, register on the index file and open your
$EDITOR on the particular file.zet (conf)ig: Sub commands related to the config
zet (conf)ig (p)rint: Print all the values currently set for the config
(including defaults, the default should contain a label expliciting its
default value)zet (conf)ig (m)odify <key> <value>: Change or create a particular key on the
config, errors out if the key doesn't exist on the speczet (conf)ig (g)et <key>: Print the value for a particular config key, errors
out if the key doens't exist on the config filezet (n)ow: Create a new entry with the title predefined for the current date
and a special tag for journaling, that way it can be filtered differently from
the rest of the noteszet (a)genda: List all the checkboxes - [ ] in your repository and print
out a list of unfinished todos with optional schedules (with the syntax
@schedule <date>)zet (im)port: Import a directory with a particular structure into our another repozet (s)ync: Push the changes to a remote if it actually has one configuredThat particular structure is:
<numeric_id>/README.mdfor each entry, inside the directory with the numeric id its possible to have assets, we'll recursively call all of those TheREADME.mdneed to have a top level title#that will be used to index on the database.
The index file will be a json for easier parsing (with jq for example) with the following structure:
{
// ...metadata stuff like author, repo, etc etc
"entries": [
{
"id": 1,
"title": "Welcome to my blog",
"created_at": "2024-10-27 18:55:01Z",
"modified_at": "2025-01-27 18:55:01Z", // can be null
"dir_path": "../1",
"entry_file": "README.md"
}
]
}