# Gemini Project Context ## Overview This repository is a comprehensive personal Knowledge Base ("Brain") and Blog system. It is structured as an [Obsidian](https://obsidian.md/) vault synced via Dropbox. The project has two distinct layers: 1. **The Brain (Root)**: The private, raw Obsidian vault containing all notes, journals, and PARA organization. 2. **The Blog (Output)**: Located in the `output/` directory (git-ignored in root), this serves as the source of truth for the public blog [blog.iany.me](https://blog.iany.me). It contains processed content and specific tooling for publication. ## Directory Structure ### The Brain (Root) - **`dock/`**: Incubator for evergreen notes (in progress work). - **`journal/`**: Daily notes and logs. - **`para/`**: P.A.R.A. (Projects, Areas, Resources, Archives) filing system. - **`periodic/`**: Date-based organization. - **`robot/`**: Data libraries and automated imports (e.g., from Readwise, Zotero, Wikipedia). - **`shore/`**: Support files for the vault. - **`bin/`**: Executable automation scripts (mostly Python embedded in Markdown). - **`templates/`**: Obsidian templates. - **`output/`**: The blog staging area (see below). ### The Blog (`output/`) - **`§ Blog/`**: The core content directory for the public site. - **`Posts/`**: Long-form articles (e.g., `Posts - 2024`). - **`Journals/`**: Weekly/daily logs (e.g., `Journals - 2024`). - **`Games/`**: Game-related content. - **`bin/`**: Helper scripts specific to content management for the blog. - **`.github/workflows/`**: Contains `transpile.yml` for build/deployment. ## Key Files ### Root - **`root.md`**: The entry point and map of the vault. - **`mise.toml`**: Configuration for `mise` (environment manager). - **`shore/bin/*.md`**: "Executable Markdown Files". Python scripts documented in Markdown. ### Output (Blog) - **`tags.txt`**: Master list of kebab-case tags used for the blog. - **`mise.toml`**: Blog-specific environment configuration, including the `GIT_DIR` path. - **`README.md`**: General project info for the blog component. ## Automation & Usage ### Vault Management (Root) Tasks are managed via `mise` and scripts in `shore/bin/`: - **Task Runner**: `mise run chore`, `mise run save-highlights`. - **Scripts**: - `markdown-export.py`: Resolves Obsidian embeds (`![[...]]`) for export. - `ob-chore.md`: Master maintenance script. - `ob-create-diaries.md`: Generates diary entries from journals. ### Blog Workflow (`output/`) Content management for the public blog uses scripts in `output/bin/`. These scripts must be run from within the `output/` directory. 1. **Creating Content** (run from `output/`): ```bash bin/create-post "Title of the Post" bin/create-journal ``` 2. **Tagging**: - Tags must be **kebab-case**. - Use `output/bin/suggest-tags "path/to/post.md"` to get AI-generated tag suggestions based on `tags.txt`. 3. **Publishing**: - Pushing the `output` directory (as a submodule or separate repo) to `master` triggers the `Transpile` GitHub Action. - This converts Obsidian Markdown to Hugo-compatible Markdown and pushes to `doitian/mirror-iany.me`. 4. **Previewing**: - Transpile the source in output/ using `mise run build` in `$HOME/codebase/blog-autobuild` - Start the Hugo server by running `hugo server -D` in `$HOME/codebase/iany.me` ## Conventions - **Line Ending**: Linux (LF). - **Frontmatter**: YAML Frontmatter used for metadata (date, draft, aliases, tags). - **Obsidian Syntax**: Wikilinks (`[[Link]]`) and Embeds (`![[image.png]]`) are standard. - **Tagging Strategy**: - Flat list in `output/tags.txt`. - No synonyms; reuse existing tags. - Strict `kebab-case`.