Top Related Projects
Community plugins list, theme list, and releases of Obsidian.
A personal knowledge management and sharing system for VSCode
A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap
The personal knowledge management (PKM) tool that grows as you do!
CLI and local web plain text note‑taking, bookmarking, and archiving with linking, tagging, filtering, search, Git versioning & syncing, Pandoc conversion, + more, in a single portable script.
Quick Overview
zk is a command-line tool for managing a Zettelkasten, a personal knowledge management system. It helps users create, organize, and search through interconnected notes, fostering a more efficient and effective way to capture and develop ideas.
Pros
- Lightweight and fast, with minimal setup required
- Supports various text editors and integrates well with existing workflows
- Powerful search capabilities, including full-text search and tag-based filtering
- Encourages linking between notes, promoting a network of knowledge
Cons
- Steep learning curve for users unfamiliar with Zettelkasten methodology
- Limited GUI options, which may be challenging for non-technical users
- Requires consistent use and maintenance to realize full benefits
- May not be suitable for managing large multimedia files or complex project structures
Code Examples
Here are a few examples of using zk:
- Creating a new note:
zk new "My new idea"
This command creates a new note with the title "My new idea" and opens it in your default editor.
- Searching for notes:
zk list --tag=project --interactive
This command lists all notes tagged with "project" and opens an interactive interface for browsing and selecting notes.
- Generating a graph of note connections:
zk graph --format=dot | dot -Tsvg > graph.svg
This command generates a graph of note connections in DOT format and converts it to an SVG image.
Getting Started
To get started with zk:
- Install zk using Homebrew (macOS) or from the GitHub releases page.
brew install zk
- Initialize a new Zettelkasten in your desired directory:
zk init
- Create your first note:
zk new "My first note"
- Start exploring and linking your notes:
zk list
zk edit <note-id>
zk link <source-note-id> <target-note-id>
For more detailed instructions and advanced usage, refer to the official documentation on the GitHub repository.
Competitor Comparisons
Community plugins list, theme list, and releases of Obsidian.
Pros of Obsidian-releases
- More active development and frequent updates
- Larger community and ecosystem of plugins
- User-friendly interface with a focus on note-taking and knowledge management
Cons of Obsidian-releases
- Closed-source core application
- Limited customization options compared to zk's flexibility
- Steeper learning curve for advanced features
Code Comparison
While a direct code comparison isn't possible due to Obsidian's closed-source nature, we can compare some aspects of their functionality:
zk:
zk new "My new note"
zk list --tag important
zk edit <note-id>
Obsidian (via command palette):
Create new note: Ctrl+N
Search tags: Ctrl+P, then type "tag:"
Open note: Ctrl+O, then type note name
Summary
Obsidian-releases offers a polished, feature-rich note-taking experience with a strong focus on knowledge management. It benefits from frequent updates and a large community. However, its closed-source nature limits customization options.
zk provides a more flexible, command-line driven approach to note-taking and knowledge management. It's open-source and highly customizable but may have a steeper learning curve for non-technical users.
Choose Obsidian for a user-friendly, graphical note-taking experience, or zk for a more lightweight, customizable command-line tool.
A personal knowledge management and sharing system for VSCode
Pros of Foam
- Integrated with Visual Studio Code, providing a familiar environment for many users
- Supports multiple knowledge graph visualization options
- Offers daily notes and templates for structured note-taking
Cons of Foam
- Less focused on command-line operations compared to zk
- May have a steeper learning curve for users not familiar with VS Code
- Limited built-in search capabilities compared to zk's powerful search features
Code Comparison
Foam (JavaScript):
export function createMarkdownParser(
workspace: FoamWorkspace,
includeExtensions: string[] = DEFAULT_MARKDOWN_EXTENSIONS
): MarkdownParser {
return new MarkdownParser(workspace, includeExtensions);
}
zk (Rust):
pub fn new(config: Config) -> Result<Zk> {
let notebook = Notebook::new(&config.notebook_dir)?;
let index = Index::new(¬ebook)?;
Ok(Zk { config, notebook, index })
}
Both projects aim to enhance note-taking and knowledge management, but they take different approaches. Foam leverages the VS Code ecosystem, while zk focuses on command-line operations and efficient search capabilities. The code snippets highlight the different languages used (JavaScript for Foam, Rust for zk) and their respective initialization processes.
A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap
Pros of Logseq
- More active development with frequent updates and a larger community
- Rich feature set including graph view, daily notes, and block-based editing
- Cross-platform support (desktop and mobile) with offline capabilities
Cons of Logseq
- Steeper learning curve due to its extensive features and unique data structure
- Can be resource-intensive, especially with large databases
- Less flexibility in terms of customization compared to simpler note-taking tools
Code Comparison
Logseq (ClojureScript):
(defn get-block-property [block property-name]
(get (:block/properties block) property-name))
(defn get-page-property [page-name property-name]
(get-in (db/entity [:block/name page-name]) [:block/properties property-name]))
zk (Go):
func (n *Note) GetMetadata(key string) (string, bool) {
value, ok := n.Metadata[key]
return value, ok
}
func (n *Note) SetMetadata(key, value string) {
n.Metadata[key] = value
}
While both projects are note-taking tools, Logseq is a more comprehensive personal knowledge management system with a focus on networked thought, while zk is a simpler command-line tool for managing Zettelkasten-style notes. Logseq offers a graphical interface and more advanced features, whereas zk provides a lightweight, terminal-based approach to note management.
The personal knowledge management (PKM) tool that grows as you do!
Pros of Dendron
- More comprehensive note-taking system with hierarchical organization
- Active development and larger community support
- Integrated with VS Code for a seamless editing experience
Cons of Dendron
- Steeper learning curve due to more complex features
- Requires VS Code, which may not be preferred by all users
Code Comparison
Dendron (TypeScript):
export class DendronEngine {
constructor(private config: EngineConfig) {}
async init() {
// Initialize engine
}
async query(query: string) {
// Perform query
}
}
zk (Go):
type ZettelKasten struct {
Notes map[string]*Note
}
func (zk *ZettelKasten) AddNote(note *Note) {
zk.Notes[note.ID] = note
}
Key Differences
- Dendron is a full-featured note-taking and knowledge management system, while zk is a simpler Zettelkasten-inspired note-taking tool
- Dendron is built for VS Code integration, whereas zk is a standalone CLI tool
- Dendron uses TypeScript and is more focused on hierarchical organization, while zk is written in Go and emphasizes linking between notes
Both projects aim to improve personal knowledge management, but Dendron offers a more comprehensive solution with tighter editor integration, while zk provides a lightweight, command-line approach to note-taking.
CLI and local web plain text note‑taking, bookmarking, and archiving with linking, tagging, filtering, search, Git versioning & syncing, Pandoc conversion, + more, in a single portable script.
Pros of nb
- More versatile, supporting various note types (bookmarks, todos, etc.)
- Extensive CLI options for managing and interacting with notes
- Built-in encryption and syncing capabilities
Cons of nb
- Steeper learning curve due to numerous features and commands
- Less focused on the specific Zettelkasten method
- May be overwhelming for users seeking a simpler note-taking solution
Code Comparison
nb:
nb add "New note content"
nb edit 3
nb search "keyword"
zk:
zk new "New note title"
zk edit <note-id>
zk list --tag keyword
Summary
nb is a more feature-rich and versatile note-taking tool, offering a wide range of functionalities beyond simple note creation and management. It provides built-in encryption and syncing, making it suitable for users who need advanced features and security.
zk, on the other hand, is more focused on the Zettelkasten method, offering a streamlined experience for users specifically interested in this note-taking approach. It has a gentler learning curve and may be more appealing to those who prefer a simpler, more targeted tool.
The choice between nb and zk depends on the user's specific needs, preferred note-taking method, and desired level of complexity in their note management system.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
A plain text note-taking assistant
Description
zk
is a command-line tool helping you to maintain a plain text Zettelkasten or personal wiki.
Looking for a quick usage example? Let's get started.
Or want to see it in action? Checkout Shivan's video, Note-taking System ALL Programmers Should Consider.
Highlights
- Creating notes from templates
- Advanced search and filtering capabilities including tags, links and mentions
- Integration with your favorite editors:
- Any LSP-compatible editor
zk-nvim
for Neovim 0.8+zk-vscode
for Visual Studio Code- (unmaintained)
zk.nvim
for Neovim 0.5+ by Seth Messer
- Interactive browser, powered by
fzf
- Git-style command aliases and named filters
- Made with automation in mind
- Notebook housekeeping
- Future-proof, thanks to Markdown
- Supports most Markdown syntax flavors
- Links: regular Markdown links,
[[Wikilinks]]
and Neuron's[[Folgezettel links]]#
. - Tags:
#hashtags
,:colon:separated:tags:
, Bear's#multi-word tags#
. - YAML frontmatter
- Links: regular Markdown links,
See the changelog for the list of upcoming features waiting to be released.
What zk
is not
- A note editor.
- A tool to serve your notes on the web â for this, you may be interested in Neuron or Gollum.
Install
Check out the latest release for pre-built binaries for macOS and Linux (zk
was not tested on Windows).
Homebrew
brew install zk
Or, if you want to the latest changes:
brew install --HEAD zk
Nix
# Run zk from Nix store without installing it:
nix run nixpkgs#zk
# Or, to install it permanently:
nix-env -iA zk
Alpine Linux
zk
is currently available in the testing
repositories:
apk add zk
Arch Linux
You can install the zk package from the official repos.
sudo pacman -S zk
Build from scratch
Make sure you have a working Go 1.21+ installation, then clone the repository:
$ git clone https://github.com/zk-org/zk.git
$ cd zk
On macOS / Linux
$ make
$ ./zk -h
Contributing
We warmly welcome issues, PRs and discussions.
Here you can read some useful info for contributing to zk
.
Related projects
- Neuron â a great tool to publish a Zettelkasten on the web
- Emanote â an improved successor to Neuron
- sirupsen's zk â a collection of scripts with a similar purpose
- zk-spaced â spaced repetition plugin for zk
Top Related Projects
Community plugins list, theme list, and releases of Obsidian.
A personal knowledge management and sharing system for VSCode
A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap
The personal knowledge management (PKM) tool that grows as you do!
CLI and local web plain text note‑taking, bookmarking, and archiving with linking, tagging, filtering, search, Git versioning & syncing, Pandoc conversion, + more, in a single portable script.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot