Skip to content

0.1.1 — Template system, Directory support, Claude support, Marketplace submission release

Choose a tag to compare

@mpstaton mpstaton released this 17 May 23:07

2026-05-09_Perplexed-Streaming-Perplexity-Deep-Research_ 6.17.34 PM.gif

Why Care?

If you keep a knowledge vault — concepts, tools, vocabulary, source profiles — most of it never gets filled in. You stub a folder for every concept you encounter, every tool you evaluate, every term worth defining, intending to come back and write each one up properly. You never do.

Our Example: There are 1,600 nearly-empty profile files in your Toolkit folder, hundreds of concepts waiting in your concepts folder, vocabulary entries sitting at title-only. Filling them in one file at a time is untenable, even one at a time with LLM output. A generic "summarize this for me" pass on each file produces homogenous slop with no citations and no editorial point of view.

Perplexed 0.1.1 is the release where the plugin stops being a per-query research modal and starts being a per-directory content workflow. You drop one template into a directory describing how its files should be filled in — what to research, what tone to take, what frontmatter to stamp, where the sources footer goes — and the plugin streams source-cited content into every file in that directory (or a single file, or a folder batch), using Perplexity for research and routing the output through a citation pipeline that's already compatible with Cite-Wide's hex-citation format.

Hats off to Text Generator for the inspiration for this feature. Yes, we used Text Generator; though it was awesome, it wasn't quite the way we needed it to be.

The same release adds Claude as the third research provider alongside Perplexity and Perplexica, a first-run seeder that drops the four shipped templates into your vault automatically so you can see the format before writing your own, and Marketplace availability through the new community.obsidian.md portal.

What's New?

Per-directory content generation via templates

Drop a template file into a directory — one of the four shipped templates, or your own — and Perplexed can generate source-cited content for every file in that directory in one pass. The template uses a small cf / cft codefence DSL to describe what to research, what frontmatter to stamp, and how to format the output. Each cf block is a content-generation instruction; each cft block is a template that gets interpolated against frontmatter values in the target file.

The runtime applies the template via Perplexity research, streams writes back into the file as the response arrives (you see it appear in real time, not as a final block at the end), and stamps run-tracking frontmatter (cf_last_run timestamp + cf_last_run_model) so you can query for stale files later — "which concept profiles haven't been refreshed since April?" becomes a single Dataview query.

Four shipped templates cover the most common knowledge-vault shapes:

Template Lives in What it fills
concept-profile concepts/ (or wherever you keep them) A concept explainer with definition, history, examples, and editorial stance — biased against attributing the concept to tech giants when it actually originated in research labs, startup founder interviews, or earlier papers
vocabulary-profile Vocabulary/** An innovation-consultant lens definition of a term — what it means, why it matters, what it's often confused with
source-profile Sources/ or Citations/ A source dossier that handles articles, books (via Google Books URL harvesting), and other source types via nested type-handling
toolkit-profile Tooling/** A profile for a tool, library, or service the vault tracks

Each runs as one file at a time, a folder batch that walks every file in a directory, or in append-below mode that writes underneath existing content rather than replacing it.

Anti-incumbent editorial stance baked into the prompts

The concept-profile template's system prompt explicitly instructs the model to treat tech giants (Google, Microsoft, Meta, OpenAI, Amazon, Apple) as adopters and popularizers — not originators — of concepts. The "Examples" section caps how many big-tech examples are allowed, and the prompts actively prefer startups, research-lab papers, and founder-interview attribution over the easy "X was invented by [big company]" framing that vanilla LLM output defaults to.

This is editorial discipline you can read in the prompt, not a hand-wave. If a concept genuinely originated at a tech giant, the prompt allows it; what it pushes back against is the laziness of always attributing.

Auto-seeding — templates arrive with the plugin

Install Perplexed, open Obsidian, and the plugin's first-run seeder drops the four shipped templates plus a README explaining the format into your vault automatically. You can see the template format before writing your own, modify the shipped ones to taste, or ignore them entirely — the README is always re-ensured on plugin load (so updates land), but the templates are treated as user-managed after first deployment (so your edits aren't overwritten).

Claude joins as the third research provider

Anthropic's Claude is now wired in alongside Perplexity and Perplexica via a dedicated Ask Claude modal. Uses the official Anthropic SDK with server-side web_search enabled, adaptive thinking, response streaming, and a two-pass citation extraction pipeline that handles both per-claim text-block citations (the structured citation objects Claude attaches to specific sentences) and bare web_search_tool_result fallbacks (the looser citation form Claude sometimes returns when it can't anchor a citation to a specific claim).

So your provider choices for any research command are now:

Provider Endpoint Cost Best for
Perplexity api.perplexity.ai Paid Source-cited research with consistent citation formatting
Anthropic Claude api.anthropic.com Paid Longer-form reasoning with web_search and adaptive thinking
Perplexica / Vane localhost:3030 (self-hosted) Free Privacy-sensitive research; runs entirely on your machine
LM Studio localhost:1234 (local) Free Local-only inference, no network

Wide, consistent modals across all three Ask commands

The Ask Perplexity, Ask Claude, and Ask Perplexica modals now share a redesigned, wide, visually consistent UI. The wide-modal CSS technique (the modalEl rather than contentEl styling trick) means there's actually room for the streaming response to land in a readable column instead of a 480px-wide squeeze.

Better Find Images — anchored to your selection, with strict domain filtering

The existing Find Images for Selection command now does selection-anchored image discovery with paragraph-level placement. Search results land near the text they relate to, not appended at the end of the document. A strict domain filter (search_domain_filter) rejects off-domain results so when you ask for images from example.com you get images from example.com, not whatever the image-search backend would have surfaced absent the filter.

Sources Footer compatible with Cite-Wide

When the directory-template runtime writes a sources section, it emits the canonical [N]: reference-definition format (per the Lossless Citation Spec) so that running Cite-Wide's Convert Numeric Citations to Hex afterwards transforms them directly into stable [^hex] markers. The two plugins now compose cleanly: Perplexed generates, Cite-Wide canonicalizes.

A separator (***) is also emitted above the # Sources heading with proper blank-line spacing, so the footer reads as a deliberate section rather than appended noise.

Sonar instructed to emit inline citations

When using Perplexity's Sonar models, the system prompt now explicitly instructs the model to emit inline [N] citation markers in the body of the response (not just in a trailing references list). Combined with the cite-wide-compatible sources footer above, the post-generation conversion to [^hex] markers is one command.

Installable from the new Obsidian community portal

Obsidian retired the long-running PR-based submission queue (obsidianmd/obsidian-releases) in favor of a hosted portal at community.obsidian.md. Perplexed 0.1.1 is the first version published through the new portal — reachable from inside Obsidian via Settings → Community Plugins → Browse → search "Perplexed".

Sibling Lossless plugins shipped through the same portal-discipline pass: image-gin 0.2.2 and cite-wide 0.2.0.

Under the Hood

Each substantive piece of work shipped in 0.1.1 has its own per-day changelog under changelog/:

Date Topic Per-day changelog
2026-04-30 Claude provider integration — Anthropic SDK + Ask Claude modal + web_search + adaptive thinking + streaming + two-pass citation extraction (per-claim text-block citations + bare web_search_tool_result fallbacks) 2026-04-30_01.md
2026-05-01 → 2026-05-02 UX pass — modal redesign + wide-modal CSS unlock; consistent UI across Ask Perplexity, Ask Claude, and Ask Perplexica modals 2026-05-01_01.md
2026-05-02 Maintenance pass — dependency refresh resolving Dependabot flags; streaming-citations bug fix 2026-05-02_01.md
2026-05-09 → 2026-05-10 Directory Templates paradigm — the headline feature. cf / cft codefence DSL, four shipped templates (concept / vocabulary / source / toolkit), streaming + cleanup pipeline with [IMAGE N: ...] marker placement and fallback, anti-incumbent editorial stance, cite-wide-compatible sources footer, frontmatter run-stamps, Google Books URL harvesting for book sources, first-run seeder that drops shipped templates + README into the user's vault on plugin load 2026-05-10_01.md
2026-05-12 Marketplace compliance — ObsidianReviewBot's recommended config; 73 sentence-case rewrites, four fetch() call sites refactored to activeWindow.fetch for no-restricted-globals compliance, async dropped on a callback and on listTemplates (no await expression), six unused catch bindings dropped to clear optional warnings; both local and bot-mirror eslint configs exit 0 2026-05-12_01.md
2026-05-17 Marketplace-portal submission — release tagged 0.1.1 at commit 0a016e2 on main, release published with main.js / manifest.json / styles.css attached as binary assets through the new community.obsidian.md portal (the old obsidianmd/obsidian-releases PR-based queue having been retired) release commit 0a016e2

The original Perplexed identity moment — first streaming API call to Perplexity through the modal, July 19 2025 — is logged retrospectively at 2025-07-19_01.md.

What's Next

  • More directory templates as the patterns emerge. The four shipped templates cover the obvious knowledge-vault shapes (concept / vocabulary / source / toolkit), but real vaults have more — research-question profiles, decision-records, retros, company-dossiers, founder-profiles, etc. Each new template is a single file in the seeder's shipped set; the runtime infrastructure doesn't need to change.
  • Per-template provider selection. Right now the directory-template runtime defaults to Perplexity. A future pass could let each template specify its own provider (Claude for long-form reasoning templates, Perplexica for privacy-sensitive ones, LM Studio for cost-bounded batches) via the cf block frontmatter.
  • Diff-aware regeneration. Files with cf_last_run already stamped could be skipped on subsequent runs by default, with an explicit --force mode for refreshes. Right now every folder-batch run regenerates every file.
  • Cite-Wide auto-invocation after directory-template runs. The sources footer is already cite-wide-compatible (emits canonical [N]: format); the next step is an optional post-run hook that calls cite-wide's Convert Numeric Citations to Hex command automatically so the resulting file lands with [^hex] markers in one shot.
  • Restore brand-name casing in user-facing strings. The marketplace lint pass forced 73 sentence-case rewrites, several of which lowercased brand-name proper nouns mid-string ("perplexity api" instead of "Perplexity API"). The bot's default brand allowlist doesn't include the providers Perplexed integrates with; once Marketplace acceptance lands, the brand casing gets restored with a custom eslint-plugin-obsidianmd config (or a /skip justification on the PR, matching the discipline that image-gin used for its own brand allowlist).

References