{"id":29739431,"url":"https://github.com/frostmute/make-it-rain","last_synced_at":"2026-06-06T01:01:12.996Z","repository":{"id":292149329,"uuid":"979967806","full_name":"frostmute/make-it-rain","owner":"frostmute","description":"Pull Raindrop.io bookmarks, highlights, and attachments into Markdown notes with rich metadata, smart folder structures, and native file support.","archived":false,"fork":false,"pushed_at":"2026-06-03T01:54:11.000Z","size":3818,"stargazers_count":117,"open_issues_count":3,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-03T03:23:26.222Z","etag":null,"topics":["bookmarks","notes","obsidian","obsidian-md","obsidian-plugin","plugin","raindrop","raindrop-io"],"latest_commit_sha":null,"homepage":"https://frostmute.github.io/make-it-rain/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frostmute.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"ko_fi":"frostmute"}},"created_at":"2025-05-08T10:58:19.000Z","updated_at":"2026-06-03T01:54:15.000Z","dependencies_parsed_at":"2025-05-08T11:44:24.084Z","dependency_job_id":"c470f124-3544-4112-9238-4d72bf4f00d7","html_url":"https://github.com/frostmute/make-it-rain","commit_stats":null,"previous_names":["frostmute/make-it-rain"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/frostmute/make-it-rain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frostmute%2Fmake-it-rain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frostmute%2Fmake-it-rain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frostmute%2Fmake-it-rain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frostmute%2Fmake-it-rain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frostmute","download_url":"https://codeload.github.com/frostmute/make-it-rain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frostmute%2Fmake-it-rain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33965591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmarks","notes","obsidian","obsidian-md","obsidian-plugin","plugin","raindrop","raindrop-io"],"created_at":"2025-07-25T21:03:43.330Z","updated_at":"2026-06-06T01:01:08.929Z","avatar_url":"https://github.com/frostmute.png","language":"TypeScript","funding_links":["https://ko-fi.com/frostmute","https://ko-fi.com/Z8Z7RYUWN"],"categories":["TypeScript"],"sub_categories":[],"readme":"![Make It Rain Hero](https://github.com/frostmute/make-it-rain/blob/main/assets/1748151599078.webp)\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/frostmute/make-it-rain)](https://github.com/frostmute/make-it-rain/releases/latest)\n![License](https://img.shields.io/github/license/frostmute/make-it-rain)\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Z8Z7RYUWN)\n\nImport your Raindrop.io bookmarks into your Obsidian vault with ease.\n\n## Table of Contents\n\n- [What's New](#whats-new)\n- [Features](#features)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Usage](#usage)\n- [Created Note Structure](#created-note-structure)\n- [Documentation](#documentation)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n- [License](#license)\n\n## What's New\n\n### v1.7.1 (2025-05-27)\n- **Enhanced Fetch Modal \u0026 Collection Selection**: Easily select collections from a dynamic, filterable list populated from your Raindrop.io account, in addition to manual ID/name entry.\n- **Improved Template Editing**: Reset your main and content-type specific templates to their defaults with new \"Reset to Default\" buttons in the settings.\n- **Better UI Layout**: Input fields in modals and template editing areas are now stacked below their descriptions for more space and better readability.\n- **Contextual Help Links**: Look for new `(?)` help icons next to complex settings, linking directly to documentation.\n- **Quick Import Enhancements**: The \"Quick Import Raindrop by URL/ID\" command now more reliably parses item IDs and provides clearer instructions.\n- **CI Build Fix**: Resolved a build failure related to ignored scripts.\n\n### v1.7.0 (2025-05-26)\n\n- **All-New Template System**: Major new feature! Gain complete control over note creation with a powerful and flexible template system.\n    - Includes a default template and pre-filled, customizable templates for each Raindrop type (Link, Article, Image, Video, Document, Audio).\n    - Configure templates via Settings: enable/disable the system, edit the default, and manage content-type specific templates with individual toggles.\n    - Override global template settings per-fetch using new modal options.\n- **Pre-calculated Template Variables**: Added `formattedCreatedDate`, `formattedUpdatedDate`, `renderedType`, `domain`, `formattedTags` for easier template customization.\n- **Default Templates Updated**: All built-in templates now use the new variables, a flattened collection data structure, and consistent field names.\n- **Improved Fallback Note Generation**: Better formatting for notes created when the template system is disabled.\n- **Fixes**: Addressed type filtering in the modal, ensured correct replication of collection hierarchy as folders, resolved a frontmatter rendering issue, and fixed template helper rendering and fallback note body formatting.\n\nFor a complete list of changes, see the [CHANGELOG.md](CHANGELOG.md).\n\n---\n\n# Raindrop.io Import/Sync for Obsidian\n\nA LIGHTWEIGHT and BLAZING FAST plugin that enables you to fetch bookmarks, highlights, notes,\nand other content types from your [Raindrop.io](https://raindrop.io) collections into your\n[Obsidian](https://obsidian.md/) vault with maximum flexibility. Seamlessly integrate your\nweb clippings, articles, and references into your Obsidian knowledge base!\n\nI will be continually developing this plugin to further streamline user experience and\nextend functionality. Please do not hesitate to leave feedback, submit feature requests, or\nask for assistance with anything; I intend to address every inquiry to the best of my\nabilities. I am new to public development and have never shared anything I've made with\nanyone else, so if I'm overlooking something, or have made an error in etiquette, please\nlet me know. I value and appreciate all forms of feedback and it helps immensely in my\nlearning process.\n\n# Features\n\nTurn your Obsidian vault into a true extension of your digital brain with Make It Rain, the ultimate tool for integrating your Raindrop.io bookmarks. Here's why it's a game-changer for your knowledge management:\n\n- **✨ All-New Template System (v1.7.0): Take Full Control!**\n    - **Tailor-Made Notes:** Don't just import bookmarks, transform them! Craft the perfect note structure for every type of content (articles, videos, images, and more).\n    - **Pre-filled \u0026 Customizable:** Get started instantly with smart default templates for all Raindrop types, or build your own from scratch.\n    - **Easy Configuration:** A dedicated settings panel lets you enable/disable the system, tweak the global default template, manage templates for specific content types with simple toggles, and **reset templates to their defaults.**\n    - **On-the-Fly Adjustments:** Need to use the default template for a specific import? Override your saved settings directly from the fetch modal.\n    - **Smart Variables:** Utilize pre-calculated variables like `formattedCreatedDate`, `domain`, and `formattedTags` for effortless and consistent note formatting.\n\n- **🎯 Powerful \u0026 Granular Importing:**\n    - **Flexible Fetching:** Easily import your Raindrops via the Obsidian Command Palette using the main \"Fetch Raindrops\" command for bulk imports or the \"Quick Import Raindrop by URL/ID\" command for single items.\n    - **Precision Filtering (Main Fetch):**\n        - By **Collection:** Specify multiple Raindrop.io Collection IDs or Names. **New in 1.7.1: Select collections from a dynamic, filterable list populated directly from your Raindrop.io account!**\n        - By **Tags:** Use AND/OR logic to find items with all or any of your specified tags. Contextual help `(?)` available for match type.\n        - By **Content Type:** Import only links, articles, images, videos, documents, or audio files.\n    - **Selective Sync:** Choose to fetch only new items since your last import, or update existing notes if the Raindrop item has changed.\n\n- **🗂️ Seamless Obsidian Integration:**\n    - **Automatic Folder Structure:** Replicates your Raindrop.io collection hierarchy within your Obsidian vault.\n    - **Rich YAML Frontmatter:** Every note is enriched with comprehensive metadata: Raindrop ID, title, source URL, type, creation/update dates, full collection path, tags, and a customizable banner image field.\n    - **Intelligent Filenaming:** Use the Raindrop title (customizable with a template: `{{title}}`, `{{id}}`, `{{collectionTitle}}`, `{{date}}`) or the unique Raindrop ID for filenames.\n    - **Tag Augmentation:** Automatically append your own custom tags to every imported note.\n\n- **⚙️ Robust \u0026 Reliable:**\n    - **Smart API Handling:** Built-in rate limiting (120 requests/minute) and automatic retries ensure smooth and reliable fetching, even with large libraries.\n    - **Safe by Default:** Prevents accidental overwriting of existing notes (with options to update).\n    - **Detailed Logging:** Clear console logs for easy troubleshooting if issues arise.\n    - **Automated CI Checks:** Ensures build stability with every change.\n\n- **🔧 Highly Configurable:**\n    - Securely store your Raindrop.io API token (Contextual help `(?)` available).\n    - Set a default vault location for new notes (overrideable per-fetch).\n    - Customize filename templates (Contextual help `(?)` available), ribbon icon visibility, and the frontmatter field name for banner images.\n    - **Enhanced Template Management:** Easily reset default and content-type specific templates to their original settings.\n    - **Improved UI Layout:** Settings and modal inputs are now stacked for better readability.\n\nStop context-switching and start integrating! Make It Rain brings your valuable web clippings, research, and inspiration directly into your Obsidian workspace, formatted exactly how you want them.\n\n## In the pipe for future releases\n\n- **Enhanced Testing \u0026 Reliability**: Comprehensive unit tests for core utility functions.\n- ~~Better Documentation: More detailed documentation and usage examples for both users and contributors.~~\n- ~~Fix YAML/JSON render issues: Improved handling of frontmatter templates.~~\n- ~~Easy Template System: Customizable templates with curly bracket syntax, defined per raindrop type.~~\n- Possible Integration with existing Obsidian or Templater template functions.\n- ~~UI Improvements: Selectable raindrop collections by name or ID from multi-select or drop-down in the import modal.~~\n- **Streamlined versioning workflow**: Bi-directional synchronization with Raindrop.\n- **Enhanced highlight handling**: Improved highlight/raindrop-specific note handling and UI within Obsidian notes.\n- **Extended content scraping**: Options similar to Raindrop's archive link content copy functionality.\n- **Documentation**: Demo videos, tutorials, and use-case examples of plugin workflow and features.\n- ~~Quick Import feature: Import specific raindrops by ID/Link to specific vault locations.~~\n- **Undo functionality**: Recovery options when operations don't go as planned.\n- **Saved fetch settings**: Preserve or save frequently used fetch configurations.\n- ~~Performance optimization: Further API/rate limiting improvements and better handling of large Raindrop collections.~~\n\n# Installation\n\n## Manual Installation\n\n(Only option at the moment; you are welcome to inspect the source if you have any\ndoubts about safety. After I get the plugin's features mostly intact and fully\nfunctioning I will submit a request for inclusion in the Community Plugin Repo.)\n\n1. Download **make-it-rain.zip** from the latest\n   [RELEASE](https://github.com/frostmute/make-it-rain/releases/latest) on GitHub.\n   \n   \u003e ⚠️ **Note:** Do NOT download the \"Source code (zip)\" — download `make-it-rain.zip` \n   \u003e which contains the compiled plugin files.\n2. Extract the zip file. You should see `main.js`, `manifest.json`, and `styles.css`.\n3. In your Obsidian vault, navigate to the `.obsidian/plugins/` directory.\n4. Create a new folder named `make-it-rain`.\n5. Copy `main.js`, `manifest.json`, and `styles.css` into this new folder.\n6. Restart Obsidian.\n7. Go to `Settings` -\u003e `Community Plugins`, find \"Make It Rain\", and enable it.\n8. Configure the required API Token in the plugin settings (see Configuration section).\n\n## Community Plugins Store\n\n*(Once accepted)* This plugin aims to be available directly in the Obsidian\nCommunity Plugins store.\n\n# Configuration\n\nBefore the first use, configure the plugin via Obsidian's settings panel\n(`Settings` -\u003e `Community Plugins` -\u003e `Make It Rain` -\u003e `Options` (cog icon)).\nContextual help links `(?)` are available for some settings, guiding you directly to the relevant documentation.\n\n1. **Raindrop.io API Token (Required):**\n    - You must provide a \"Test Token\" from Raindrop.io. (Help `(?)` link available in settings)\n    - To generate one:\n        1. Go to your [Raindrop.io Apps settings page]\n           (https://app.raindrop.io/settings/integrations).\n        2. Click \"+ Create new app\".\n        3. Give it a name (e.g., \"MakeItRain\").\n        4. Click the newly created app, then click \"Create test token\".\n    - Copy this token and paste it into the plugin's API Token settings field.\n      A **\"Verify Token\"** button is available to test your connection.\n2. **Default Vault Location for Notes:**\n    - Specify the default folder path within your vault where imported notes should be\n      saved (e.g., `Imports/Raindrops`).\n    - If left blank, notes will be saved in the root of your vault.\n    - This location can be overridden during each fetch operation, providing maximum\n      flexibility for many different use cases.\n3. **File Name Template:**\n    - Define the filename structure when the \"Use Raindrop Title for File Name\" option\n      is enabled in the fetch modal. (Help `(?)` link available in settings)\n    - Uses Handlebars-like syntax: `{{placeholder}}`.\n    - Available placeholders:\n        - `{{title}}`: The Raindrop bookmark title.\n        - `{{id}}`: The unique Raindrop bookmark ID.\n        - `{{collectionTitle}}`: The title of the collection the bookmark belongs to (if any).\n        - `{{date}}`: The creation date of the bookmark (format: `YYYY-MM-DD`).\n    - Default value: `{{title}}`\n4. **Show Ribbon Icon:**\n    - Toggle to show or hide the Make It Rain ribbon icon in the Obsidian sidebar.\n5. **Banner Frontmatter Field Name:**\n    - Customize the frontmatter field name used for the banner image (default is `banner`).\n      Useful if you use plugins that expect a different field name.\n\n# Usage\n\n\nMake It Rain offers two primary commands to import your Raindrops:\n\n### 1. Fetch Raindrops (Filtered Bulk Import)\n\n1. Open the Obsidian **Command Palette** (`Ctrl+P` or `Cmd+P`).\n2. Search for and select the command: **\"Fetch Raindrops\"**.\n3. An **options modal** will appear, allowing you to configure the current fetch operation:\n    - **Fetch Criteria:**\n        - **Vault Folder (Optional):** Override the default save location for this\n          specific fetch.\n        - **Collections:** Enter comma-separated Raindrop.io Collection *IDs or Names*, or **select from the dynamic list of your collections** populated directly from your Raindrop.io account.\n        - **Filter by Tags:** Enter comma-separated Raindrop.io tag names. Choose your\n          tag matching mode (AND/OR). A help `(?)` link is available for \"Tag Match Type\".\n        - **Include Subcollections:** If filtering by Collections, toggle this on to also\n          fetch from any collections nested within the specified ones.\n        - **Filter by Type:** Select the type of raindrops to fetch (All Types, Links,\n          Articles, Images, Videos, Documents, Audio).\n    - **Note Options:**\n        - **Append Tags to Note Frontmatter:** Enter comma-separated tags to add to the\n          `tags` list in the YAML frontmatter.\n        - **Use Raindrop Title for File Name:** Toggle on (default) to use the File Name\n          Template. If off, the Raindrop bookmark ID will be used as the filename.\n        - **Fetch only new items:** If enabled, existing notes will be skipped.\n        - **Update existing notes:** If enabled, existing notes will be updated if the\n          source raindrop has changed (based on `last_update`). This option disables\n          \"Fetch only new items\".\n4. Click the **\"Fetch Raindrops\"** button in the modal.\n5. The plugin will display notices for progress and a final summary. Check the Obsidian\n   Developer Console for detailed logs.\n\n### 2. Quick Import Raindrop by URL/ID (Single Item Import)\n\nNew in v1.7.1 (and improved!), this command allows you to quickly import a single Raindrop item if you know its URL or unique numeric ID.\n\n1. Open the Obsidian **Command Palette**.\n2. Search for and select the command: **\"Quick Import Raindrop by URL/ID\"**.\n3. A modal will appear:\n    - **Raindrop URL or ID:** Paste the full URL of the Raindrop item (often found in your browser's address bar when viewing/editing the item in the Raindrop.io app, e.g., `https://app.raindrop.io/my/collection/item/123456789/edit`) or just its unique numeric ID (e.g., `123456789`). The modal provides specific instructions on how to find this.\n    - **Vault Save Location (Optional):** Override the default save folder for this specific import.\n    - **Append Tags to Notes (Optional):** Add specific tags to this imported note.\n4. Click **\"Fetch \u0026 Create Note\"**.\n\nThis is ideal for quickly bringing in a specific item without going through the full filtered fetch.\n\n# Created Note Structure\n\n![Make It Rain Imported Raindrop Example](https://github.com/frostmute/make-it-rain/blob/main/assets/Screenshot_20250526_013205.png)\n\nEach successfully imported Raindrop bookmark generates a new Markdown note. When the **Template System** is enabled (default), the structure is defined by the active template. The built-in default template produces a note that looks like this example:\n\n```markdown\n---\n\ntitle: \"Example Bookmark Title\"\nsource: https://example.com/article\ntype: article\ncreated: 2023-10-27T10:30:00Z\nlastupdate: 2023-10-28T12:00:00Z\nid: 123456789\ncollectionId: 98765\ncollectionTitle: \"My Research\"\ncollectionPath: \"My Research/Tech Articles\"\ncollectionParentId: 12345\ntags:\n  - web-clipping\n  - important-read\nbanner: https://example.com/cover-image.jpg\n\n---\n\n![Example Bookmark Title](https://example.com/cover-image.jpg)\n\n# Example Bookmark Title\n\n## Description\nThis is a brief summary or excerpt of the web page. It might contain a few sentences describing the content.\n\n## Notes\nThis is a note I added to my Raindrop bookmark. It can be multi-line.\nAnother line of my note.\n\n## Highlights\n- This is the first highlighted text from the article.\n  *Note:* A small comment on the first highlight.\n- And here is a second piece of highlighted text.\n\n---\n## Details\n- **Type**: Article\n- **Domain**: example.com\n- **Created**: Oct 27, 2023\n- **Updated**: Oct 28, 2023\n- **Tags**: web-clipping, important-read\n```\n\n**Key Frontmatter Fields (using Default Template):**\n\n- `id`: Unique Raindrop.io ID (e.g., `12345678`). **Required for updates.**\n- `title`: Title of the Raindrop (e.g., `\"My Awesome Bookmark\"`).\n- `source`: The original URL of the bookmark (e.g., `https://example.com`).\n- `type`: The raw Raindrop type (e.g., `article`, `link`).\n- `created`: Creation timestamp in ISO 8601 format (e.g., `2023-10-27T14:30:00Z`).\n- `lastupdate`: Last update timestamp in ISO 8601 format (e.g., `2023-10-28T10:20:00Z`). **Required for updates.**\n- `collectionId`: ID of the Raindrop's collection (e.g., `98765`).\n- `collectionTitle`: Title of the Raindrop's collection (e.g., `\"My Research\"`).\n- `collectionPath`: Full path of the collection (e.g., `\"Archive/Tech Articles\"`).\n- `collectionParentId` (optional): ID of the parent collection if it exists.\n- `tags`: A list of tags associated with the Raindrop (e.g., `tags:\n  - obsidian\n  - productivity`).\n- `{{bannerFieldName}}`: (Optional) The field name for the banner image (from\n  settings, defaults to `banner`), with the cover image URL (e.g.,\n  `banner: https://example.com/image.jpg`).\n\nIf the **Template System is disabled**, a more basic fallback structure is used.\nSee [Note Structure Documentation](https://frostmute.github.io/make-it-rain/note-structure) for details on both.\n\n# Documentation\n\nComprehensive documentation for the Make It Rain plugin is available on our **[GitHub Pages Site](https://frostmute.github.io/make-it-rain/)**.\n\nThis site includes:\n- Detailed guides and tutorials\n- Usage examples\n- Information for developers interested in contributing\n- API Reference for the Raindrop.io integration\n- An overview of the codebase structure and architecture\n\nIn-code documentation is also available via JSDoc comments throughout the codebase,\nparticularly in the utility modules:\n\n- `src/utils/fileUtils.ts`: Utilities for file operations\n- `src/utils/apiUtils.ts`: Utilities for API interactions\n\n## Troubleshooting\n\n### \"API token is not set\" Error\n\nEnsure you have correctly copied your Raindrop.io Test Token and pasted it into the plugin's settings.\n\n### Check Console for Errors\n\nFor any issues, open the Developer Console (`Ctrl+Shift+I` or `Cmd+Option+I` -\u003e\n`Console` tab) for detailed error messages and plugin logs.\n\n# Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n# License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrostmute%2Fmake-it-rain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrostmute%2Fmake-it-rain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrostmute%2Fmake-it-rain/lists"}