Skip to main content

Universal research workflow kit connecting vibe coding tools with Obsidian

Project description

khanote

Your research was almost Khan-worthy. Now it is. You're welcome.

A universal research workflow kit bridging vibe coding tools and Obsidian.

中文文档


What is khanote?

khanote connects your vibe coding tools (Claude Code / Cursor / Codex / Gemini CLI / OpenCode) with Obsidian, using a pluggable research layer in between. SOPs are codified as skills — you only touch config.

Install

# pip
pip install khanote

# or Homebrew
brew tap almost-khan/tap
brew install khanote

# or pipx (isolated)
pipx install khanote

Quick Start

khanote init --vault ~/your-obsidian-vault --tool claude-code --researcher perplexity

Then inside your vibe coding tool, run:

/khanote.research.start AI agents

Features

Research Workflow

  • Session-driven: each research run = a date-prefixed folder in your vault
  • Pipeline: start → ingest sources → analyze → save to Obsidian
  • Built-in researchers: Perplexity, arXiv, NotebookLM
  • Knowledge graph: automatic linking between sessions via shared topics

Custom Researchers (Zero Code)

Add any HTTP REST API as a researcher through config.yaml — no Python required:

researchers:
  exa:
    type: http
    api_key: ${EXA_API_KEY}
    capabilities: [search]
    endpoints:
      search:
        url: "https://api.exa.ai/search"
        method: POST
        headers:
          Authorization: "Bearer {api_key}"
        body_template: '{"query": "{query}", "numResults": 10}'
        response_mapping:
          results: "$.results"
          title: "$.title"
          excerpt: "$.text"

Run /khanote.researcher.add for a guided setup — no flags, no code.

Feed Management

Set up recurring research feeds that automatically fetch and analyze content:

feeds:
  llm-papers:
    researcher: arxiv
    query: "large language models"
    keywords: [llm, transformer, agent]
    frequency: daily
    active: true

Manage feeds with guided commands:

  • /khanote.feed.add — create a new feed or clone from existing
  • /khanote.feed.list — see all feeds with status
  • /khanote.feed.pause / resume / remove

SOP Prompt Templates

Capabilities without a direct API endpoint use SOP prompt templates — structured prompts that your vibe coding tool processes:

  • analyze: PRISMA-style thematic synthesis with chain-of-thought
  • ingest: metadata extraction from sources
  • search: relevance ranking and filtering
  • generate: structured research report generation

Multi-Tool Support

Initialize once per tool, share the same config:

Tool Entry File Skills Directory
Claude Code CLAUDE.md .claude/commands/
Cursor .cursorrules .cursor/rules/
Codex AGENTS.md .codex/
Gemini CLI GEMINI.md .gemini/
OpenCode OPENCODE.md .opencode/

Design Principles

  1. Two ends fixed, middle swappable — vibe coding tool ↔ [researcher + feed] ↔ Obsidian
  2. SOP as skills — workflows live in SKILL.md, not in your head
  3. Zero-code for everyone — all operations via guided prompts, no CLI flags
  4. Session-driven — each research run = an independent date-prefixed folder
  5. Progressive disclosure — simple by default, powerful when you need it

Available Skills

Skill Description
/khanote.research.start Start a new research session
/khanote.research.ingest Add sources to a session
/khanote.research.analyze Run analysis on ingested sources
/khanote.research.save Save results to Obsidian
/khanote.research.pipeline Full pipeline in one command
/khanote.researcher.add Add a custom HTTP researcher
/khanote.feed.add Create a recurring feed
/khanote.feed.list List all feeds
/khanote.update Update skills to latest version

Name

Khan (from AlmostKhan) + note — Khan's notes / notes that conquer knowledge.

Status

Active development. Core research workflow and custom researcher/feed management are implemented. 222 tests passing.

License

TBD

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

khanote-0.1.0.tar.gz (34.6 kB view details)

Uploaded Source

Built Distribution

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

khanote-0.1.0-py3-none-any.whl (46.7 kB view details)

Uploaded Python 3

File details

Details for the file khanote-0.1.0.tar.gz.

File metadata

  • Download URL: khanote-0.1.0.tar.gz
  • Upload date:
  • Size: 34.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for khanote-0.1.0.tar.gz
Algorithm Hash digest
SHA256 852f0776c8c0820976b25ba7bf2ba6388228fbc85f64b3396658a2db56927ec4
MD5 4ed1c1a18405e7d006afc8a0cabe1d45
BLAKE2b-256 901ba668faf810420faa403d1d37e69a9ec186d52c612df9ffd16e7744a50a49

See more details on using hashes here.

Provenance

The following attestation bundles were made for khanote-0.1.0.tar.gz:

Publisher: publish.yml on almost-khan/khanote

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file khanote-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: khanote-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 46.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for khanote-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 484f717812bb443eed2805e825af89a769ace3b614890b3da10e1c2aacbe6d80
MD5 448fadf55ead43126c04863ea045cfc0
BLAKE2b-256 b5c27115162e960b637d2c2f5c39bfbcc89323a8a32ddef64fb56d1aa476f3f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for khanote-0.1.0-py3-none-any.whl:

Publisher: publish.yml on almost-khan/khanote

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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