File Clipper

unlisted

by Rafael Papallas

Watches an Inbox folder for new screenshots and PDFs, moves them into a media folder, and creates a note embedding the file with a relative link.

Updated 27d agoMIT
View on GitHub

File Clipper

Watches an Inbox folder for new screenshots and PDFs. When one appears, it:

  1. Moves the file into your dedicated media folder
  2. Creates a new note in your Inbox (or wherever you choose) that embeds the file with a plain relative markdown link, e.g. ![](../media/Pasted%20image%2020260823122457.png) — not Obsidian's proprietary ![[filename]] wikilink syntax, so the note stays portable outside of Obsidian.

No external tools — this runs entirely inside Obsidian using its plugin API and file-watching, so it works even for files dropped in by another app.

Install

  1. In your vault, go to <vault>/.obsidian/plugins/
  2. Create a folder called file-clipper
  3. Copy manifest.json and main.js into that folder
  4. Restart Obsidian (or reload it: Cmd+R / Ctrl+R)
  5. Go to Settings → Community plugins. If community plugins are off, turn them on (you'll get a one-time warning about running third-party code — that's normal, since Obsidian can't tell a manually-installed plugin from a store one)
  6. Find "File Clipper" in the Installed plugins list and enable it
  7. Open its settings tab and confirm the Inbox / media / note folder names match your vault structure

How it behaves

  • Only files created directly inside the configured Inbox folder are picked up (not subfolders, by default)
  • Only extensions listed in "File extensions" (default: png,jpg,jpeg,gif,webp,pdf,eml) trigger it — so screenshots, PDFs, and .eml emails are all picked up out of the box
  • .eml files get special handling: the email is moved into media like any other file, but the generated note contains the decoded message body (plus Subject/From/To/Date) instead of an embed, with a plain link back to the original .eml attachment at the bottom. Handles quoted-printable and base64 bodies, multipart/alternative (preferring text/plain over text/html), and RFC 2047-encoded headers.
  • If a filename collision would occur in media, it appends -1, -2, etc.
  • There's a short settle delay before processing, in case your screenshot app writes the file in stages
  • The embed is a relative markdown link computed from the note's folder to the media folder (e.g. ![](../media/file.pdf)), not an Obsidian wikilink embed — this keeps notes readable in any plain-markdown tool, not just Obsidian
  • The generated note's name follows the "Note naming" setting: either a timestamp (Clip 2026-08-23 143022.md, the default) or the original file's name (My Screenshot.md) — collisions in either mode get a -1, -2, ... suffix
  • PDFs are wrapped in a foldable Obsidian callout (> [!note]- PDF) that starts collapsed, so the note stays short until you expand it — toggle this off, or rename the section, via "Collapsible PDF section" / "PDF section title". Images are embedded plainly as before. In plain-markdown tools the callout syntax is ignored and the embed still shows.
  • The generated note has simple frontmatter (created, plus tags: [clip] by default) — the tag name is configurable, and tagging can be turned off entirely via "Add tag to note"
  • Edit the content template in main.js if you want a richer template (e.g. via Templater variables)

Note

This plugin only reacts while Obsidian is open and the vault is loaded (same limitation any live watcher inside the app has). If Obsidian is closed when the file lands, it'll be picked up the moment you reopen the vault, since create fires for files that appeared while it wasn't watching too — but this hasn't been tested across every Obsidian version, so worth confirming once with a manual test.

Mobile

This plugin works on Obsidian mobile (iOS/Android) too — it only uses the standard Obsidian Plugin API, nothing desktop-only. The main difference is how files actually land in the Inbox folder, since there's no external screenshot tool writing directly into the vault on mobile:

  • iOS share sheet: take a screenshot (or save a PDF), then use the Files/Photos share sheet to save it into <vault>/00. Inbox (e.g. via the Files app if your vault is in iCloud Drive).
  • Obsidian's own "Attach file" / image insert: if you insert a file through Obsidian itself, it usually lands next to the current note rather than in the Inbox folder, so it won't be picked up unless you're actively editing a note that lives in the Inbox folder.
  • Sync: if your vault syncs (iCloud, Obsidian Sync, etc.) and a file is dropped into the Inbox folder from another device, it'll be picked up once it syncs down and Obsidian sees the create event.

Everything else (moving the file, creating the note, settle delay) behaves the same as on desktop.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.