https://github.com/shipwebdotjp/obsidian-ai-hub
https://github.com/shipwebdotjp/obsidian-ai-hub
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/shipwebdotjp/obsidian-ai-hub
- Owner: shipwebdotjp
- License: mit
- Created: 2026-05-23T10:51:47.000Z (17 days ago)
- Default Branch: main
- Last Pushed: 2026-06-02T05:26:49.000Z (7 days ago)
- Last Synced: 2026-06-02T07:21:17.875Z (7 days ago)
- Language: Python
- Size: 595 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# obsidian-ai-hub
obsidian-ai-hub is an automation toolkit for Obsidian daily-note workflows.
It helps with:
- organizing inbox items into a daily note
- generating daily and weekly summaries
- notifying you about today’s schedule and tasks
- collecting and organizing research topics
- connecting an Obsidian vault with external services
## Highlights
- Merge inbox content into a daily note
- Create daily targets and reminders
- Notify upcoming calendar events
- Back up vault data and related artifacts
- Keep secrets and public configuration separate
## Installation
1. Clone the repository.
2. Create your local configuration files:
- `cp config/config.example.yml config/config.yml`
- `cp .env.example .env`
3. Edit `config/config.yml` to match your vault paths and backup settings.
4. Edit `.env` to set API keys, tokens, and machine-specific paths.
5. Run the test suite:
- `pytest tests/`
### install to LaunchAgent
1. chmod +x install.sh
2. make install
3. make enable
## Configuration
Use the following split to keep the project OSS-friendly:
`.env`
- secrets
- API keys and tokens
- personal absolute paths
- environment-specific values
- `LOCAL_MODEL_DIR` is used as the base download cache for local embedder models
`config/config.yml`
- non-sensitive application settings
- relative paths and filenames inside the vault
- backup targets
- default feature values
- vault index storage paths and embedder model name
## Usage
```bash
python -m obsidian_ai_hub --merge-inbox
python -m obsidian_ai_hub --make-target
python -m obsidian_ai_hub --notify-calendar-event
python -m obsidian_ai_hub --summerize-week
python -m obsidian_ai_hub --backup
python -m obsidian_ai_hub --sync-vault
python -m obsidian_ai_hub --screenshot
```
The vault sync command indexes the full `VAULT_PATH` tree into `md-hybrid-search` and stores its SQLite/Chroma data outside the vault by default.
## Task Runner
The task runner reads scheduled jobs from `tasks/tasks.local.yml` when it exists, and falls back to `tasks/tasks.yml` otherwise. It also persists the last execution time in `tasks/last_run.json` so each task is only run once per matching schedule window.
Use `tasks/tasks.local.sample.yml` as the starting point for your own `tasks/tasks.local.yml`.
Each task entry uses this shape:
```yaml
- id: example
enabled: true
schedule:
type: hourly
minute: 0
command: echo "hello"
```
Supported `schedule.type` values are `minutely`, `hourly`, `daily`, `weekly`, and `monthly`.
`schedule` fields can be written as:
- a single number, for example `minute: 0`
- a list, for example `minute: [0, 30]`
- a comma-separated string, for example `minute: "0,30"`
- a range, for example `hour: "8-18"`
- a stepped range, for example `minute: "*/15"` or `hour: "8-18/2"`
- `*` where allowed, such as `weekday: "*"`
The runner understands `second`, `minute`, `hour`, `day`, and `weekday`. Missing fields fall back to sensible defaults, such as `minute: 0` and `weekday: "*"`.
Commands are executed without a shell. Plain argv-style commands are supported, and you can chain a directory change with `cd /path && ...`. Shell operators like pipes, redirects, and environment expansion are not interpreted.
## Project Structure
- `src/obsidian_ai_hub/` — application code
- `config/` — configuration templates
- `tests/` — automated tests
## License
This project is licensed under the MIT License.
See the `LICENSE` file for details.