Skip to main content

LLM tools for summarizing web content into structured Obsidian notes.

Project description

cryptic

GitHub Actions Workflow Status Docker Image Version

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_tries frontmatter field, capped at a configurable max_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 from openai.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

cryptic_md-1.0.2.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cryptic_md-1.0.2-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

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

Hashes for cryptic_md-1.0.2.tar.gz
Algorithm Hash digest
SHA256 879154541ad65ce0235a00613b707a65a2a1ac40a4c95c4b7be3809644275c51
MD5 1f94ccbcefb92d57d464dc67b28a2022
BLAKE2b-256 40c934c870713856c15abeddc3d4b3b033c35dec8dfe29902f9f6b56a187b9df

See more details on using hashes here.

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

Hashes for cryptic_md-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4788d5e2524b831f7847cf26231ee91bf7405242ccb57d51050b58e6d2b6d742
MD5 3a9353df13a459d0643f3560a992eb5d
BLAKE2b-256 068707dbd8c182d8777e714216de43b77b6e0933ab953fc134a5047959c164e7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page