LLM tools for summarizing web content into structured Obsidian notes.
Project description
cryptic
LLM tools for summarizing web content into structured Obsidian notes.
Features
- Structured-output summarization via OpenAI, with per-category schemas (papers, articles, events, products, discussions, media, software, references).
- Two-pane note generation: YAML frontmatter for metadata, Markdown body for content. Section layout and frontmatter mapping are declared via Pydantic field annotations.
- Long-running service that watches a directory for new notes, processes them concurrently, and moves results to an output directory. Unmodified copies of each input are archived to a separate directory.
- Persistent retry bookkeeping via a
cryptic_triesfrontmatter field, capped at a configurablemax_tries. - Settle delay before reading new files so sources that write incrementally are picked up only once.
- YAML configuration for model list, default model, reasoning effort, prompt text, and service directories.
Installation
poetry install
Set OPENAI_API_KEY in the environment or in a .env file in the project root.
Configuration
Create ~/.config/cryptic/config.yaml:
openai:
models:
- gpt-5.4-mini
default_model: gpt-5.4-mini
default_reasoning: medium
service:
vaults:
personal:
input_dir: ~/Obsidian/Personal/cryptic-staging
output_dir: ~/Obsidian/Personal/cryptic-processed
originals_dir: ~/Obsidian/Personal/cryptic-originals
max_concurrent: 3
max_tries: 3
pickup_delay_seconds: 3.0
Override the config path per-invocation with --config /path/to/config.yaml.
Usage
Process a single note in place:
cryptic process note --note path/to/note.md
Run the service against the configured directories:
cryptic service
Drain the input directory once and exit (useful for batch runs):
cryptic service --once
Common flags available on both commands:
--model NAME— pick a model fromopenai.models.--reasoning {low,medium,high,xhigh}— set reasoning effort.--config PATH— use an alternate config file.
Docker
Pre-built images are published to Docker Hub at camillescott/cryptic. The included compose.yaml is the simplest way to run the service:
export OPENAI_API_KEY=sk-...
docker compose up -d
It bind-mounts ./vaults → /vaults (your Obsidian tree) and ./config → /config (a directory containing config.yaml). Paths inside config.yaml must be rooted at /vaults, for example /vaults/personal/cryptic-staging.
To build the image locally instead of pulling:
docker build -t cryptic .
inotify works across bind mounts on Linux hosts. On Docker Desktop for macOS or Windows, host filesystem events don't propagate into the container.
Portions of this project's code have been written with agentic coding tools.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cryptic_md-1.0.2.tar.gz.
File metadata
- Download URL: cryptic_md-1.0.2.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.12.1 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
879154541ad65ce0235a00613b707a65a2a1ac40a4c95c4b7be3809644275c51
|
|
| MD5 |
1f94ccbcefb92d57d464dc67b28a2022
|
|
| BLAKE2b-256 |
40c934c870713856c15abeddc3d4b3b033c35dec8dfe29902f9f6b56a187b9df
|
File details
Details for the file cryptic_md-1.0.2-py3-none-any.whl.
File metadata
- Download URL: cryptic_md-1.0.2-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.12.1 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4788d5e2524b831f7847cf26231ee91bf7405242ccb57d51050b58e6d2b6d742
|
|
| MD5 |
3a9353df13a459d0643f3560a992eb5d
|
|
| BLAKE2b-256 |
068707dbd8c182d8777e714216de43b77b6e0933ab953fc134a5047959c164e7
|