MCPcopy Index your code
hub / github.com/DominikPieper/obsidian-ReadItLater

github.com/DominikPieper/obsidian-ReadItLater @0.11.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.11.4 ↗ · + Follow
263 symbols 507 edges 46 files 6 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ReadItLater Plugin for Obsidian

Table of contents

Introduction

Save the web with ReadItLater plugin for Obsidian. Archive web pages for reading later, referencing in your second brain or for other flexible use case Obsidian provides.

ReadItLater can do a lot more than converting web pages to markdown. For every content type there is specific template with carefully selected variables to ease up your archiving process.

What makes ReadItLater plugin great?

  • Simple, but powerful template engine
  • Carefully selected predefined template variables to straightforward archiving process
  • Compatibility with Obsidian iOS and Android apps
  • Downloading images from articles to your Vault
  • Batch processing of URLs list

How to use ReadItLater plugin?

To create single note you can either click on the plugin ribbon icon, select ReadItLater: Create from clipboard from command palette or click on ReadItLater shortcut in context or share menu. You can also create multiple notes from batch of URLs, delimited by selected delimiter in plugin settings using ReadItLater: Create from batch in clipboard command.

If you want just add content to existing note, you can use ReadItLater: Insert at the cursor position command to insert content after the current cursor position.

Template engine

ReadItLater provides for every content type dedicated template that can be edited in plugin settings.

Variables

Variables are rendered in template using familiar syntax {{ content }}. Nested data types can be accessed using dot notation {{ author.name }}.

Filters

Variables output can be modified using filters. Filters are separated by | symbol. Filters can be chained, so output of the previous is passed to the next.

blockquote

Adds quote prefix to each line of value.

capitalize

Modifies first character to uppercase and others to lowercase.

{{ 'hello world'|capitalize}}

outputs: Hello world

numberLexify

Converts number to lexified format.

{{ 12682|numberLexify}}

outputs: 12.6K

lower

Converts value to lowercase.

{{ 'Hello World'|lower}}

outputs: hello world

replace

Replaces all occurrences in input value.

{{ 'Hello world'|replace('o') }}

outputs: Hell wrld

upper

Converts value to uppercase.

{{ 'Hello World'|upper}}

outputs: HELLO WORLD

Inbox and Assets directories

You can use template variables in Inbox dir and Assets dir settings to better distribute content in your Vault.

Directory template variable Description
date Current date in format from plguin settins
fileName Filename of new note
contentType Slug of detected content type from plugin settings

Content Types

Structure of note content is determined by URL. Currenty plugin supports saving content of websites and embedding content from multiple services. Each content type has title and note template with replacable variables, which can be edited in plugin settings.

Available content types are ordered by URL detection priority.

Website Article

Will be parsed to readable form using Mozilla Readability and then converted to markdown. In case website content is marked by Readbility as not readable, empty note with URL will be created.

If enabled, images will be downloaded to folder (default is ReadItLater Inbox/assets) configured in plugin settings. (Supported only on desktop for now)

Title template variable Description
title Article title from <title> HTML tag
date Current date in format from plugin settings
Content template variable Description
articleTitle Article title from <title> HTML tag
articleURL Article URL
articleReadingTime Estimated reading time in minutes by Readbility.js
articleContent Article content
date Current date in format from plugin settings
previewURL Aritlce preview image URL parsed from OpenGraph or Twitter image <meta> property
publishedTime Article publish time parsed from OpenGraph <meta> property or Schema.org JSON and formatted in content format from plugin settings

Youtube

Title template variable Description
title Video title
date Current date in format from plugin settings
Content template variable Description
videoTitle Video title
date Current date in format from plugin settings
videoDescription Video description
videoURL Video URL on Youtube.com
videoId Video ID
videoPlayer Embeded player generated by plugin
channelId Channel ID
channelName Channel name
channelURL Channel URL on Youtube.com
videoThumbnail Video thumbnail image URL
videoChapters List of video chapters with linked timestamps
videoPublishDate Video plublish date formatted in content format from plugin settings
videoViewsCount Video views count

Parsing of HTML DOM has its limitations thus additional data can be fetched only from Google API. Retrieved API key can be set in plugin settings and then plugin will use the Google API for fetching data.

Content template variable Description
videoDuration Video duration in seconds
videoDurationFormatted Formatted video duration (1h 25m 23s)
videoTags Formatted list of tags delimited by space

Youtube Channel

Title template variable Description
title Channel title.
date Current date in format from plugin settings.
Content template variable Description
date Current date in format from plugin settings.
channelId Channel ID.
channelTitle Channel title.
channelDescription Channel description.
channelURL Channel URL on Youtube.com.
channelAvatar URL of channel's avatar (thumbnail) image.
channelBanner URL of channel's banner image.
channelSubscribersCount The number of subscribers that the channel has.
channelVideosCount The number of public videos uploaded to the channel.
channelVideosURL URL to channel's videos on Youtube.com
channelShortsURL URL to channel's shorts on Youtube.com

X.com (Twitter)

Parser use X Publish API to fetch data.

Title template variable Description
tweetAuthorName Post author name
date Current date in format from plugin settings
Content template variable Description
tweetAuthorName Post author name
date Current date in format from plugin settings
tweetURL Post URL on X.com
tweetContent Post content
tweetPublishDate Post publish date formatted in content format from plugin settings

Bluesky

Parser fetch the content from Bluesky API.

Title template variable Description
authorHandle Post author handle
authorName Post author name
date Current date in format from plugin settings
Content template variable Description
date Current date in format from plugin settings
content Formatted post content with embedded content. If enabled, replies are appended.
postURL Post URL
authorHandle Post author handle
authorName Post author name
likeCount Post like count
replyCount Post reply count
repostCount Post repost count
quouteCount Post quote count
publishedAt Post publish time

If enabled in plugin settings, you can fetch also replies.

Reply template variable

Content template variable Description
date Current date in format from plugin settings
content Formatted post content with embedded content.
postURL Reply UR

Extension points exported contracts — how you extend this code

VaultRepository (Interface)
(no doc) [2 implementers]
src/repository/VaultRepository.ts
ReadItLaterSettings (Interface)
(no doc)
src/settings.ts
BilibiliNoteData (Interface)
(no doc)
src/parsers/BilibiliParser.ts
FilesystemLimits (Interface)
(no doc)
src/helpers/fileutils.ts
TemplateData (Interface)
(no doc)
src/template/TemplateEngine.ts
DropdownEnumOption (Interface)
(no doc)
src/enums/enum.ts
ReadabilityArticle (Interface)
(no doc)
src/parsers/WebsiteParser.ts
JavascriptDeclaration (Interface)
(no doc)
src/helpers/domUtils.ts

Core symbols most depended-on inside this repo

saveSettings
called by 75
src/main.ts
render
called by 40
src/template/TemplateEngine.ts
createTemplateVariableReferenceDiv
called by 39
src/views/settings-tab.ts
normalizeFilename
called by 17
src/helpers/fileutils.ts
createDetailsElement
called by 13
src/views/settings-tab.ts
getFullFilename
called by 11
src/parsers/Note.ts
validateFilterValueType
called by 8
src/template/TemplateEngine.ts
replaceImages
called by 6
src/helpers/replaceImages.ts

Shape

Method 129
Class 51
Interface 44
Function 32
Enum 7

Languages

TypeScript100%

Modules by API surface

src/parsers/BlueskyParser.ts29 symbols
src/template/TemplateEngine.ts17 symbols
src/parsers/WebsiteParser.ts16 symbols
src/parsers/YoutubeParser.ts14 symbols
src/parsers/MastodonParser.ts14 symbols
src/NoteService.ts12 symbols
src/parsers/StackExchangeParser.ts10 symbols
src/helpers/fileutils.ts10 symbols
src/parsers/VimeoParser.ts9 symbols
src/parsers/PinterestParser.ts9 symbols
src/main.ts9 symbols
src/repository/DefaultVaultRepository.ts8 symbols

For agents

$ claude mcp add obsidian-ReadItLater \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact