---
title: Organize a Screenshots Library With Memorable Keywords, Not Timestamps
description: "How to organize a screenshots library both you and your AI agent can search: short memorable keywords instead of timestamps. The naming pattern behind Heretic Lazy Shot."
canonical: https://giglabo.com/blog/hls/organize-screenshots-library
locale: en
---

# Organize a Screenshots Library With Memorable Keywords, Not Timestamps

> Markdown twin of https://giglabo.com/blog/hls/organize-screenshots-library
> Fetch this instead of the HTML page: same content, a fraction of the bytes.
> Site structure and the full page list for agents: https://giglabo.com/llms.txt

How to organize a screenshots library both you and your AI agent can search: short memorable keywords instead of timestamps. The naming pattern behind Heretic Lazy Shot.

## Name a Screenshot 'Rabbit': Memorable Keywords Instead of Timestamps, for Humans and Agents

Zero. That is how many input fields the Lazy Shot library has for naming a screenshot by hand. We went looking for one while writing this post.

We open the library table. The keyword column reads `nav-bug`, `deploy-log`, `pricing-v2`. We click a cell and the word lands on the clipboard. We look for the box where a human types a new keyword. The table offers search, copy, and delete. No input.

That absence explains the design better than any feature list. In Lazy Shot the naming happens where the captures happen, and captures increasingly come from agents. The human side of the keyword column is read-only today: search it, copy from it, filter by it. Whether an edit box belongs there is a roadmap question, not a marketing one.

The problem the keyword solves is older than agents. Open a screenshots folder. A graveyard of files named `Screenshot 2026-07-12 at 09.41.22.png`, four hundred deep, and somewhere in the pile sits the pricing-page capture needed right now. The retrieval tool on offer is scrolling, plus squinting at thumbnails.

The problem isn't storage. It's addressing. To organize a screenshots library that a human can actually use, the files need the thing human memory runs on: **words**.

## Why words beat timestamps, folders, and tags

**Timestamps** answer "when." The real question is almost never "when." The real question is "which." A timestamp name isn't a name. It's a coordinate: perfect precision, zero recall, the way GPS coordinates identify a favorite café.

**Folders** front-load the cost. They demand a prediction, at capture time, of every future context in which the file will be wanted. Nobody makes that prediction. The taxonomy degrades into `misc/`, `misc2/`, and whatever counts as `sort-later/` this month.

**Tag systems** get the theory right and the ergonomics wrong. The advice is always "just tag everything." Five tags per file, a vocabulary to maintain, a small ceremony on every save. If the tagging were *just* anything, the folder would not be full of untagged files. The overhead exceeds the payoff, and the habit dies by week two.

A single memorable keyword is the minimum-viable address. One word. It costs a second at capture time and pays back at recall, because the recall is the word. "Open rabbit." That is the entire query.

Retrieval fails at naming time, not at search time.

## How it works in Lazy Shot

- **The agent assigns the word.** Every capture tool on the MCP server takes a `keyword` argument, and takes it as required, so a capture and its name land in one call. Naming isn't a step after capture. The schema refuses the capture without it. The `assign_keyword` tool renames a capture later. The tool's own description tells the model to invent something short and memorable.
- **Collisions solve themselves.** A second `rabbit` becomes `rabbit-2`, then `rabbit-3`. No dialog, no naming negotiation.
- **The word is the address.** Anywhere the MCP tools take an `id`, an integer ID and a keyword are interchangeable. No UUIDs anywhere in the system: the numeric ID exists for the database, the word exists for the conversation. The word isn't a label on the record. It's the address of the record.
- **The library is a real table.** Search by ID, keyword, status, or a date range with optional time of day. Page through 10, 20, 50, or 100 rows. Click a keyword cell and the word copies. Status badges separate active from deleted.
- **Deletion is soft.** Delete marks the row instead of wiping the file, and the status filter brings deleted shots back into view. A library nobody can accidentally destroy is a library worth trusting with everything.
- **The disk layer matches.** Filename patterns with `{date}`, `{time}`, `{datetime}`, `{timestamp}`, and `{ext}` placeholders, with a live preview in Settings, keep the on-disk files sorted for every tool that isn't Lazy Shot: the file manager, the uploader, the backup.

Two weeks in, "find the pricing shot" is a two-second keyword search. The graveyard becomes a database.

## The agent half: keywords are how AI remembers your screenshots

Lazy Shot's built-in [MCP server](https://giglabo.com/blog/hls/screenshot-mcp-server) exposes the same library to AI agents, and agents carry the same addressing problem humans do, amplified. An agent that captures ten screenshots holds ten numeric IDs in its context: precise, meaningless, indistinguishable from each other in conversation.

So the MCP contract bakes the pattern in. The agent shoots a window and names it `nav-bug`. A terminal becomes `deploy-log`. In one of our own test sessions the model named a capture `заяц`, Russian for rabbit. The word survived the session. The ID didn't.

Later, in the same conversation or the next one:

> **You:** Put markers on nav-bug and give me the path.
>
> **Claude:** *[looks up `nav-bug` by keyword → forks a copy → adds markers]* Done. Saved as `nav-bug-markers`.

No IDs crossed the conversation. The keyword is a shared vocabulary between the reader, the agent, and the library, and the same word works when someone searches the table by hand on Thursday. One addressing scheme for both sides. Neither side translates for the other.

This composes with the bug-report workflow: the capture named `login-bug` at report time stays findable by that name when the ticket reopens three weeks later. [The full workflow is here](https://giglabo.com/blog/hls/screenshot-tool-for-bug-reports).

## Where the pattern comes from

A house note, because the name isn't accidental. We lifted the memorable-keyword pattern from [**Watchword**](https://giglabo.com/heretic/tools/watchword), our MCP key-value store, where agents stash specs, reports, and files under short words and retrieve them across sessions by saying the word. Watchword proved something we didn't expect to generalize so cleanly. Screenshots turned out to be the visual case of the same rule.

A store shared between a human and an agent needs addresses both sides can say out loud.

That premise drives the whole Heretic line: tools made for humans and agents, with one vocabulary between them.

## Start the habit

1. Set the filename pattern once in Settings, so the disk layer sorts itself.
2. If Claude Desktop or n8n is part of the setup, enable the MCP server and let the agent name its own captures.
3. Search by the word from then on: in the table, in the conversation, wherever the capture comes up.

The library organizes itself from there. Not because software sorted it. Because everything in it finally has a name you'd say out loud.

---

*Heretic Lazy Shot: screenshot, annotation, and beautification for macOS and Windows, built for humans and for agents. One-time license, €14.99 for one device or €29.99 for three. No subscription, no account, no telemetry. Activation is online with an offline grace period. The trial ships inside the download, no card. [Try Lazy Shot →](https://giglabo.com/heretic/applications/heretic-lazy-shot)*

## Related

- HTML version of this page: https://giglabo.com/blog/hls/organize-screenshots-library
- Site map for agents: https://giglabo.com/llms.txt
