A bash script for managing a Zettelkasten note-taking system with support for configuration, rules, and AI assistance.
This script provides a command-line interface for maintaining a Zettelkasten (slip-box) knowledge management system. It helps you organize, store, and retrieve notes while maintaining connections between related ideas.
- Customizable directory structure for your notes
- Configuration management via YAML files
- Support for both SQLite and YAML-based dictionary storage
- Integration with Gemini AI API for content assistance
- Detailed logging for troubleshooting
- Customizable editor support
-
Clone this repository:
git clone https://github.com/mrhunsaker/ZettelkastenTUI.git cd ZettelkastenTUI
-
Make the script executable:
chmod +x Zettelkasten-tui.sh
-
Run the script:
./zettelkasten-tui.sh
The script uses a variables.yml
file to store configuration settings. This file is created automatically the first time you run the script, or you can create it manually.
# Zettelkasten Configuration Variables
# Directories and Files
ORIGINALS_DIR: "~/Documents/Zettelkasten/originals"
RULES_FILE: "rules.yml"
DICTIONARY_FILE: "dictionary.yml"
DB_FILE: "zettelkasten.db"
LOG_FILE: "zettelkasten.log"
DEFAULT_EDITOR: "vim"
# Settings
USE_SQLITE: false
DEBUG: true
# API Settings
GEMINI_API_KEY: ""
GEMINI_API_URL: "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent"
You can modify the configuration through the script's interactive menu or by directly editing the variables.yml
file.
When you run the script, you'll be presented with a menu of options:
- Create new Markdown file
- Process all files
- Select originals directory
- Browse by keyword
- Edit rules file
- Run Gemini analysis
- Review suggested keywords
- View dictionary
- Configure Gemini API
- Toggle SQLite/YAML storage (current: YAML)
- Toggle debug mode (current: ON)
- View log file
- Repair database
- Create all keyword folders
- Schedule daily processing q. Quit
New notes are created with a unique identifier and stored in your originals directory. You can:
- Add metadata tags
- Link to other notes
- Use templates
The script provides various ways to find and navigate through your notes:
- Search by keyword
- Filter by tags
- Browse by date or connections
To use the Gemini AI integration:
- Obtain an API key from Google's Gemini API
- Add your key to the
variables.yml
file - Enable AI suggestions in the settings menu
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow the existing code style
- Add comments to explain complex logic
- Update the README with new features or changes
- Write tests for new functionality
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
- The Zettelkasten method was developed by Niklas Luhmann
- Inspired by various digital knowledge management systems