# 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`.