Untitled Auto Title

by remriel
5
4
3
2
1
Score: 50/100

Description

Content-based automatic titles for untitled Obsidian notes using Groq and environment credentials.

Reviews

No reviews yet.

Stats

0
stars
24
downloads
0
forks
3
days
3
days
3
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
7
commits

Latest Version

4 days ago

Changelog

Untitled Auto Title 1.0.2

Resolves the remaining compatibility and release recommendations from the Community directory review.

  • Declares Obsidian 1.13.0 as the minimum version, matching the searchable settings APIs in use.
  • Removes the deprecated imperative display fallback and uses declarative settings throughout.
  • Processes notes when they are created, edited, or opened, with only the active note checked on startup. Full-vault enumeration and the bulk title command are removed.
  • Checks only candidate filenames for collisions using the vault adapter; asynchronous checks retain the existing stale-result and overwrite guards.
  • Publishes only main.js, manifest.json, and styles.css as release assets.
  • GitHub Actions builds these assets and creates cryptographic build-provenance attestations before publication.

Local heading/phrase mode continues to work offline without an API key. Existing plugin settings are retained when updating.

README file from

Github

Untitled Auto Title

An Obsidian desktop plugin that generates concise, content-based titles for untitled Markdown notes with Groq.

How it works

  1. Create a note with Obsidian's normal Untitled filename.
  2. Write at least 30 letters or digits.
  3. Pause for 10 seconds. Groq generates a title and the plugin renames the file in its current folder.

Untitled 1, Untitled-2, and similar numbered placeholders are also supported. Chosen filenames, dated journal notes, templates, hidden folders, and trash are excluded. After a title is generated, it stays fixed while you continue writing.

The plugin reads GROQ_API_KEY from Obsidian's inherited environment at runtime. Restart Obsidian after setting the variable; if a desktop launcher has an older environment, launch Obsidian from a terminal where the variable is available. The plugin does not run shell commands or query the Windows registry. The key is never copied into settings, source, archives, or synced vault files.

For titles without an API key, select Local heading or phrase in the plugin settings. This mode works offline and extracts a heading or meaningful phrase from the note.

Groq receives text from the note being titled, capped at 12,000 characters by default. For longer notes, an excerpt includes the beginning and end. YAML properties, hidden comments, and image embeds are removed from the request. Other content, such as code and visible links, can be included.

Default model: openai/gpt-oss-20b. Requests use Groq's chat completions API. Supported models and availability can change; see Groq's model list.

Installation

Requires Obsidian desktop 1.13 or newer.

Windows installer

From a source checkout, install dependencies and build, then run the installer with your vault path:

npm install
npm run build
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -VaultPath 'C:\path\to\your vault'

Restart Obsidian after installation. The script enables this plugin and preserves the existing enabled-plugin list. Existing plugin files are backed up before an update. It does not store an API key or alter your note contents.

Manual installation

Download main.js, manifest.json, and styles.css from the GitHub release and copy them into:

<vault>/.obsidian/plugins/untitled-auto-title/

Restart Obsidian, then enable Untitled Auto Title under Settings → Community plugins. Community plugins must be enabled.

Settings and commands

Open Settings → Untitled Auto Title to change the idle delay, minimum note content, maximum title length, Groq model, environment variable name, excluded folders, and placeholder names. The connection test uses a built-in sample note.

These controls are available in Obsidian's settings search. Version 1.0.2 uses the declarative settings API and requires Obsidian 1.13.

The command palette includes:

  • Generate title for current untitled note
  • Undo last generated title
  • Test Groq connection with a sample note

Right-click an eligible note for Generate note title.

To opt a note out, add a boolean property:

---
auto-title: false
---

Select Local heading or phrase for offline extraction. Groq errors never silently trigger local extraction: a failed Groq request leaves the note untitled and reports the problem.

Rename behavior

  • Requests are serialized to avoid bursts.
  • Notes are processed when created, edited, or opened; startup checks only the active note. The plugin does not enumerate the vault or offer a full-vault bulk scan.
  • The plugin checks that the note still exists, remains untitled, and has not changed before applying the result.
  • Existing filenames are preserved. Duplicate titles receive a numeric suffix.
  • Titles are sanitized for Windows filenames and Obsidian links.
  • The plugin uses Obsidian's FileManager, so link updating follows your Obsidian settings.
  • Undo is available for the latest generated title in the current session. It refuses to overwrite an occupied original filename and pauses that note until you edit it.
  • Generation errors pause automatic requests for a minute. You can retry with the command palette or by editing the note.

The plugin changes the filename; it does not insert a heading, rewrite the body, or add a title property. Obsidian can update references in other notes when automatic link updating is enabled.

Development

npm install
npm run check
npm test
npm run build

The test suite covers rename safety, changed content, manual title choices, collisions, exclusion rules, credential handling, debouncing, serialized requests, and undo. It uses synthetic content and mocked Groq responses; live service verification is recorded separately in docs/PROGRESS.md.

Release provenance

After pushing a version tag, run gh workflow run release.yml --ref <version> to release that exact tagged source. GitHub Actions builds the plugin once, creates build-provenance attestations for main.js, manifest.json, and styles.css, and publishes those three assets. Installer ZIP files are kept as local deliverables instead of GitHub release attachments.

Verify a downloaded asset with GitHub CLI:

gh attestation verify main.js --repo remriel/obsidian-untitled-auto-title
gh attestation verify styles.css --repo remriel/obsidian-untitled-auto-title

Removal

Disable or uninstall Untitled Auto Title through Settings → Community plugins. Existing generated filenames remain. Use the undo command before disabling if you want to restore the last generated filename in the current session.