No description
Find a file
2025-11-11 11:19:44 -05:00
.github/workflows fix: Ensure fetch-depth is set to 0 for tag visibility in release workflow 2025-10-25 20:11:51 -04:00
.husky refactor phase 4 and 5 2025-10-22 20:53:11 -04:00
assets tweak gif 2025-10-29 21:31:42 -04:00
examples/demo-vault feat: separate custom color controls for inline and card previews 2025-10-30 19:53:38 -04:00
src chore: Bump version to 1.3.1 2025-11-10 21:54:40 -05:00
tests feat: add per-page color mode customization via frontmatter 2025-11-08 07:58:46 -05:00
.editorconfig Initial commit 2025-10-08 19:46:36 -04:00
.gitignore drop coverages, update docs 2025-10-28 21:34:07 -04:00
.npmrc Initial commit 2025-10-08 19:46:36 -04:00
.nvmrc added repo to URL placeholder, created demo vault, removed obsolete image, created .nvmrc file to specify Node.js version, add rendering links in tables limitation to docs 2025-10-28 21:13:51 -04:00
AGENTS.md chore: Bump version to 1.3.2 2025-11-11 11:19:44 -05:00
CHANGELOG.md chore: Bump version to 1.3.2 2025-11-11 11:19:44 -05:00
CONTRIBUTING.md Obsidian ESLint plugin integration with ESLint v9 2025-11-08 08:26:09 -05:00
esbuild.config.mjs first working version 2025-10-08 22:17:13 -04:00
eslint.config.js fix: update ESLint configuration to use defineConfig and enable linting for config files 2025-11-11 11:19:10 -05:00
LICENSE license update 2025-10-24 08:58:39 -04:00
manifest.json chore: Bump version to 1.3.2 2025-11-11 11:19:44 -05:00
package-lock.json chore: Bump version to 1.3.2 2025-11-11 11:19:44 -05:00
package.json chore: Bump version to 1.3.2 2025-11-11 11:19:44 -05:00
README.md Obsidian ESLint plugin integration with ESLint v9 2025-11-08 08:26:09 -05:00
styles.css feat: add per-page color mode customization via frontmatter 2025-11-08 07:58:46 -05:00
TROUBLESHOOTING.md refactor documentation 2025-10-29 20:07:15 -04:00
tsconfig.json fix: Resolve all remaining TypeScript build errors 2025-10-21 17:14:11 -04:00
version-bump.mjs fix and enhance version bump script, manually bump agents due to missed last time 2025-10-29 22:22:24 -04:00
versions.json chore: Bump version to 1.3.2 2025-11-11 11:19:44 -05:00
vitest.config.ts test infrastructure and initial tests 2025-10-20 22:11:59 -04:00

URL Enricher

GitHub release

License

Rich, non-destructive link previews for Obsidian

Transform plain URLs into beautiful previews with title, description, and favicon — without modifying your markdown.

inline demo

card demo

Quick Start

Plugin works only in Live Preview mode

Head to Settings > URL Enricher to customize global behaviour, or use frontmatter to customize per page.

Customize per-page:

Override global settings per-page. Must start on line 1!

---
preview-style: card                   # inline | card
max-card-length: 400                  # 1-5000 (recommended: 100+)
max-inline-length: 200                # 1-5000 (recommended: 50+)
show-favicon: true                    # true | false
include-description: true             # true | false
inline-color-mode: subtle             # none | subtle
card-color-mode: subtle               # none | subtle
---

Features

🎨 Two Preview Styles

Inline (compact): Inline Preview

  • Flows naturally with text
  • URL completely hidden
  • Perfect for reading

Card (detailed): Card Preview

  • Material Design aesthetic
  • Shows description and site name
  • Great for bookmarks and research

What You Get

  • 100% Non-Destructive - Markdown source never modified
  • Cursor-Aware - Inline previews switch to editing mode when cursor in/around url
  • Automatic Metadata - Fetches title, description, favicon
  • Per-Page Config - Override settings with frontmatter
  • Domain Enhancements - Special handling for Wikipedia, Reddit, Twitter, LinkedIn, Google
  • Real-Time Updates - Settings apply instantly

Customization

Custom Preview Colors

Want specific colors? Use Obsidian CSS snippets:

  1. Settings → Appearance → CSS snippets folder (click folder icon)
  2. Create url-enricher-colors.css:
/* Inline preview background */
.url-preview--inline {
  background: #4a90e2 !important;
}

/* Card preview background */
.url-preview--card {
  background: #50c878 !important;
}
  1. Settings → Appearance → CSS snippets → Enable snippet

Supported URL Formats

https://github.com                            # Bare URL
[custom text](https://github.com)             # Markdown link
[](https://github.com)                        # Empty link text
[[https://github.com]]                        # Wikilink (URLs only!)

Not supported: Image embeds ![](url), code blocks, non-HTTP protocols

Common Issues

Previews not showing?

  • Enable Live Preview mode (not Source mode)
  • Check URL format: https://example.com
  • Settings → URL Enricher → Clear cache button

Frontmatter not working?

  • ⚠️ Must start on line 1 with ---
  • ⚠️ Check spelling: preview-style (not previewstyle)

Stale or wrong previews?

  • Go to Settings → URL Enricher → Clear cache

Performance issues?

  • Disable descriptions in Settings
  • Reduce description length in Settings

Broken URL warnings (⚠️)?

Some sites block bots (403 Forbidden). Disable warnings: Settings → URL Enricher → HTTP Error Warnings → OFF

For more help, see TROUBLESHOOTING.md.

Domain Enhancements

Special handling for popular sites:

  • Wikipedia - Fetches article intros, shows "WIKIPEDIA" as site name
  • Reddit - Format: r/Subreddit — Title, extracts post content
  • Twitter/X - Fetches tweets via oEmbed, shows @username
  • Google Search - Extracts query: "Google Search — your query"
  • LinkedIn - Cleans hashtags and comment counts from titles

Privacy & Network Usage

This plugin makes network requests to provide rich previews:

  • Page Metadata: Fetches HTML from URLs you include in your notes to extract titles, descriptions, and favicons
  • Wikipedia API: For Wikipedia links, queries the Wikipedia API to fetch article summaries
  • Twitter oEmbed API: For Twitter/X links, uses Twitter's public oEmbed endpoint to fetch tweet content
  • Google Favicon Service: Requests high-resolution favicons from Google's public service for better display quality

Privacy:

  • No telemetry or analytics
  • No user data collection
  • All network requests are for fetching public web content you've linked to
  • All data cached locally in your vault's plugin folder
  • You control what URLs are processed

Development

npm install                 # Install dependencies
npm run dev                 # Watch mode
npm run build               # Production build
npm run lint                # Run ESLint (enforces Obsidian plugin guidelines)
npm test                    # Run tests (618 tests)

See CONTRIBUTING.md for detailed development guide.

Contributing

Contributions welcome! See CONTRIBUTING.md for:

  • Development setup
  • Code standards (100% type-safe TypeScript)
  • Release process
  • Common gotchas

License

MIT - See LICENSE


Made with ❤️ for the Obsidian community