No description
Find a file
Lukas Wolfsteiner c9533b0030 feat(secrets): implement secure storage for Raindrop.io access token
- Migrate access token storage from plugin data to Obsidian secret storage.
- Update README with new setup instructions and clarify access token handling.
- Add tests for secret storage functionality and token migration.
- Ensure compatibility with legacy access token format during migration.
2026-07-07 22:11:07 +02:00
.cursor feat: introduce bookmark explorer 2026-05-02 00:46:27 +02:00
.github chore: update screenshot asset 2026-07-06 12:26:26 +02:00
src feat(secrets): implement secure storage for Raindrop.io access token 2026-07-07 22:11:07 +02:00
tests feat(secrets): implement secure storage for Raindrop.io access token 2026-07-07 22:11:07 +02:00
.editorconfig use LF instead of CRLF (#28) 2022-04-15 14:13:31 -04:00
.gitignore chore: ignore local test vault 2026-07-06 11:21:31 +02:00
.npmrc add version bump script (#10) 2022-01-22 16:13:50 -05:00
AGENTS.md chore: update user-facing text for clarity and consistency in documentation and code comments 2026-07-06 10:53:32 +02:00
esbuild.config.mjs build: modernize TypeScript and esbuild configuration 2026-07-06 11:20:56 +02:00
eslint.config.mts build: update dependencies and eslint configuration 2026-07-06 11:21:06 +02:00
icon.svg feat(icon): add new SVG icon asset 2026-07-06 12:53:43 +02:00
jest.config.cjs build: modernize TypeScript and esbuild configuration 2026-07-06 11:20:56 +02:00
LICENSE chore: update license and modify README for clarity 2026-07-06 12:58:06 +02:00
manifest.json chore: Bump version to 1.0.6 & increase minAppVersion to 1.11.4 2026-07-07 22:10:36 +02:00
package-lock.json chore: Bump version to 1.0.6 & increase minAppVersion to 1.11.4 2026-07-07 22:10:36 +02:00
package.json chore: Bump version to 1.0.6 & increase minAppVersion to 1.11.4 2026-07-07 22:10:36 +02:00
README.md feat(secrets): implement secure storage for Raindrop.io access token 2026-07-07 22:11:07 +02:00
styles.css feat(renderer): add configurable result display fields 2026-07-06 11:28:15 +02:00
tsconfig.json build: modernize TypeScript and esbuild configuration 2026-07-06 11:20:56 +02:00
version-bump.mjs fix: check target version key when updating versions.json 2026-07-06 11:21:14 +02:00
versions.json chore: Bump version to 1.0.6 & increase minAppVersion to 1.11.4 2026-07-07 22:10:36 +02:00

icon.svg Raindrop.io Plugin for Obsidian

GitHub release (latest by date) GitHub License Obsidian Downloads Build & Test Code style: prettier Linting: ESLint

Browse Raindrop.io links in notes with note-aware and configurable search filters.

The plugin uses a Raindrop.io access token and the official Raindrop.io REST API. OAuth is planned for a later release.

Screenshot

Features

  • Raindrop.io explorer: Browse saved bookmarks from the configured collection in a side pane.
  • Note-aware filtering: Let the explorer follow the active note by turning note tags and external links into a Raindrop.io search term.
  • Manual search: Search Raindrop.io directly with keywords, #tag filters, exact phrases, or operators such as type:article, notag:true, and created:2024-01.
  • Note blocks: Render saved Raindrop.io links inline from fenced raindrop code blocks.
  • Configurable tag clicks: Choose whether tags on rendered Raindrop.io items search Obsidian notes, filter the explorer, or do nothing.
  • Native Obsidian UI: Uses Obsidian commands, a ribbon icon, theme-friendly styling, and no hidden telemetry.

Setup

  1. Install the Raindrop.io plugin from the Obsidian Community Plugins repository.
  2. Create or copy a Raindrop.io access token. You can get one by creating new App on Raindrop.io and copying the Test token.
  3. Open Settings → Community plugins, then select Raindrop.io.
  4. Select Access token, then create or choose an Obsidian secret that contains the token.
  5. Use Open explorer from the command palette or ribbon icon.
  6. Optionally add a raindrop block to a note for inline results.

The access token is stored in Obsidian secret storage and sent only to the Raindrop.io REST API. If you update from an earlier version, the plugin migrates the saved token into secret storage the next time it loads.

Explorer

The side pane opens as Raindrop.io explorer. It can browse all saved links from the configured collection, run manual searches, and load more paginated results.

Controls:

  • Search: Runs the query in the search field against Raindrop.io.
  • Use note filter: Rebuilds the search term from the active note.
  • Browse all: Clears the query and shows the configured collection.
  • Refresh: Reloads the current explorer state.
  • Load more: Requests the next page of results when more are available.

When the explorer follows a note, it uses:

  • Obsidian tags from the active note as Raindrop.io tag filters, for example #project.
  • External http and https links as exact phrase searches.
  • match:OR when multiple note-derived filters are present, so a bookmark can match any note tag or link.

Opening and interacting with the explorer preserves the last active note as context, so the note filter remains stable while you browse.

Note blocks

Add a fenced code block to any note:

```raindrop
collection: 0
tag: project-x
search: important
sort: -created
limit: 20
```

Options:

  • collection: Raindrop.io collection ID. Use 0 for all collections. Defaults to Default collection.
  • tag: Raindrop.io tag to include in the search. Multi-word tags are quoted automatically, for example #"coffee beans".
  • search: Raindrop.io search term. This is passed through to Raindrop.io.
  • sort: Raindrop.io sort value, for example -created. Defaults to Default sort.
  • limit: Number of links to request, clamped between 1 and 100. Defaults to Default limit.
  • show: Comma-separated fields to show in addition to the Result display settings.
  • hide: Comma-separated fields to hide, applied after show.

Valid field names for show and hide: cover, domain, created, excerpt, tags, collection. Unknown names produce a warning above the results. For example:

```raindrop
tag: obsidian
hide: excerpt, tags
show: collection
```

You can combine tag and search; the plugin joins them into one Raindrop.io search term.

Settings

  • Access token: Obsidian secret used for Raindrop.io API requests. Create a new secret or select an existing one that contains your Raindrop.io access token.
  • Default collection: Collection ID used by the explorer and note blocks unless a block overrides it. Use 0 for all collections.
  • Default limit: Number of links requested per page or block render. Values are clamped between 1 and 100.
  • Default sort: Sort value passed to Raindrop.io, such as -created.
  • Tag click behavior: Controls clicks on tags shown on Raindrop.io items.

Result display toggles control which fields each result shows. They apply to the explorer and act as the default for note blocks:

  • Show cover: Bookmark cover image. Off by default.
  • Show domain: Bookmark domain, for example obsidian.md.
  • Show created date: Date the bookmark was saved.
  • Show excerpt: Bookmark description.
  • Show tags: Bookmark tags.
  • Show collection: Collection the bookmark belongs to. Off by default; when enabled, the plugin lazily fetches the collection list from Raindrop.io once and caches it.

Tag click behavior options:

  • Search notes for the tag: Opens Obsidian search for the clicked tag.
  • Filter explorer by the tag: Opens the explorer and applies the clicked tag as a Raindrop.io filter.
  • Do nothing: Leaves tag clicks inactive.

Commands

  • Open explorer: Opens the Raindrop.io explorer side pane.
  • Refresh explorer: Reloads open explorer panes.

Search syntax

The plugin passes search text through to Raindrop.io. Useful examples:

  • #project-x: Bookmarks tagged project-x.
  • #"coffee beans": Bookmarks with a multi-word tag.
  • "exact phrase": Exact phrase match.
  • type:article: Article bookmarks.
  • notag:true: Bookmarks without tags.
  • created:2024-01: Bookmarks created in January 2024.
  • #work #research match:OR: Bookmarks matching either tag.

Privacy and network access

  • The plugin only makes network requests to https://api.raindrop.io.
  • The access token is stored locally in Obsidian secret storage. Plugin data stores only the selected secret ID.
  • Note-aware filtering sends the generated Raindrop.io search term to Raindrop.io. If the active note contains external links, those URLs can be included in the search term.
  • The plugin does not collect analytics or use hidden telemetry.

Release files

Obsidian release assets are built at the repository root:

  • main.js
  • manifest.json
  • styles.css

Do not commit generated main.js; attach it to GitHub releases together with manifest.json and styles.css.

Development

Install dependencies and build the plugin:

npm install
npm run build

For watch mode:

npm run dev

Quality checks:

npm run lint

License

Copyright (C) 2026 Lukas '@dotWee' Wolfsteiner lukas@wolfsteiner.media

Licensed under the Do What The Fuck You Want To public license (see LICENSE file).