ReadItLater

approved

by Dominik Pieper

Save online content to your Vault, utilize embedded template engine and organize your reading list to your needs. Preserve the web with ReadItLater.

627 stars127,161 downloadsUpdated 1y agoMIT
View on GitHub

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 variableDescription
dateCurrent date in format from plguin settins
fileNameFilename of new note
contentTypeSlug 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 variableDescription
titleArticle title from <title> HTML tag
dateCurrent date in format from plugin settings
Content template variableDescription
articleTitleArticle title from <title> HTML tag
articleURLArticle URL
articleReadingTimeEstimated reading time in minutes by Readbility.js
articleContentArticle content
dateCurrent date in format from plugin settings
previewURLAritlce preview image URL parsed from OpenGraph or Twitter image <meta> property
publishedTimeArticle publish time parsed from OpenGraph <meta> property or Schema.org JSON and formatted in content format from plugin settings

Youtube

Title template variableDescription
titleVideo title
dateCurrent date in format from plugin settings
Content template variableDescription
videoTitleVideo title
dateCurrent date in format from plugin settings
videoDescriptionVideo description
videoURLVideo URL on Youtube.com
videoIdVideo ID
videoPlayerEmbeded player generated by plugin
channelIdChannel ID
channelNameChannel name
channelURLChannel URL on Youtube.com
videoThumbnailVideo thumbnail image URL
videoChaptersList of video chapters with linked timestamps
videoPublishDateVideo plublish date formatted in content format from plugin settings
videoViewsCountVideo views count
Chapter template variableDescription
chapterTitleChapter title
chapterTimestampChapter start time in mm:ss
chapterSecondsChapter start time in seconds
chapterUrlUrl to chapter start

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 variableDescription
videoDurationVideo duration in seconds
videoDurationFormattedFormatted video duration (1h 25m 23s)
videoTagsFormatted list of tags delimited by space

Youtube Channel

Title template variableDescription
titleChannel title.
dateCurrent date in format from plugin settings.
Content template variableDescription
dateCurrent date in format from plugin settings.
channelIdChannel ID.
channelTitleChannel title.
channelDescriptionChannel description.
channelURLChannel URL on Youtube.com.
channelAvatarURL of channel's avatar (thumbnail) image.
channelBannerURL of channel's banner image.
channelSubscribersCountThe number of subscribers that the channel has.
channelVideosCountThe number of public videos uploaded to the channel.
channelVideosURLURL to channel's videos on Youtube.com
channelShortsURLURL to channel's shorts on Youtube.com

X.com (Twitter)

Parser use X Publish API to fetch data.

Title template variableDescription
tweetAuthorNamePost author name
dateCurrent date in format from plugin settings
Content template variableDescription
tweetAuthorNamePost author name
dateCurrent date in format from plugin settings
tweetURLPost URL on X.com
tweetContentPost content
tweetPublishDatePost publish date formatted in content format from plugin settings

Bluesky

Parser fetch the content from Bluesky API.

Title template variableDescription
authorHandlePost author handle
authorNamePost author name
dateCurrent date in format from plugin settings
Content template variableDescription
dateCurrent date in format from plugin settings
contentFormatted post content with embedded content. If enabled, replies are appended.
postURLPost URL
authorHandlePost author handle
authorNamePost author name
likeCountPost like count
replyCountPost reply count
repostCountPost repost count
quouteCountPost quote count
publishedAtPost publish time

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

Reply template variable

Content template variableDescription
dateCurrent date in format from plugin settings
contentFormatted post content with embedded content.
postURLReply URL
authorHandleReply author handle
authorNameReply author name
likeCountReply like count
replyCountReply reply count
repostCountReply repost count
quouteCountReply quote count
publishedAtReply publish time

Stack Exchange

Title template variableDescription
titleQuestion title
dateCurrent date in format from plugin settings

Note template variables

Content template variableDescription
dateCurrent date in format from plugin settings
questionTitleQuestion title
questionURLQuestion URL on selected StackExchange site
questionContentQuestion content
authorNameQuestion author name
authorProfileURLQuestion author profile URL
topAnswerFormatted first answer
answersFormatted other answers

Answer template variables

Content template variableDescription
dateCurrent date in format from plugin settings
answerContentAnswer content
authorNameAnswer author name
authorProfileURLAnswer author profile URL

Pinterest

Title template variableDescription
authorNamePin author name
dateCurrent date in format from plugin settings.
Content template variableDescription
dateCurrent date in format from plugin settings.
pinIdPin ID.
pinURLURL of pin.
titlePin title.
linkPin link.
imageURL of pin image.
descriptionPin description.
likeCountPin like count.
authorNamePin author name.
authorProfileURLURL of Pin author page.

Mastodon

Title template variableDescription
tootAuthorNameStatus author name
dateCurrent date in format from plugin settings
Content template variableDescription
tootAuthorNameStatus author name
dateCurrent date in format from plugin settings
tootURLStatus URL on selected Mastodon instance
tootContentStatus content

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

Reply template variable

Content template variableDescription
tootAuthorNameReply author name
tootURLReply URL on selected Mastodon instance
tootContentReply content

Vimeo

Title template variableDescription
titleVideo title
dateCurrent date in format from plugin settings
Content template variableDescription
videoTitleVideo title
dateCurrent date in format from plugin settings
videoURLVideo URL on Vimeo.com
videoIdVideo ID
videoPlayerEmbeded player generated by plugin
channelNameChannel name
channelURLChannel URL on Vimeo.com

Bilibili

Title template variableDescription
titleVideo title
dateCurrent date in format from plugin settings
Content template variableDescription
videoTitleVideo title
dateCurrent date in format from plugin settings
videoURLVideo URL on Bilibili.com
videoIdVideo ID
videoPlayerEmbeded player generated by plugin

TikTok

Title template variableDescription
authorNameVideo author name
dateCurrent date in format from plugin settings
Content template variableDescription
videoDescriptionVideo description
dateCurrent date in format from plugin settings
videoURLVideo URL on TikTok.com
videoIdVideo ID
videoPlayerEmbeded player generated by plugin
authorNameAuthor name
authorURLAuthor profile URL on TikTok.com

Text Snippet

If your clipboard content is not recognized by any of above parsers plugin will create note with unformatted clipboard content.

Title template variableDescription
dateCurrent date in format from plugin settings
Content template variableDescription
contentClipboard content
dateCurrent date in format from plugin settings

API

To invoke functionality from other plugins we provide an API. You can access it via this.app.plugins.plugins['obsidian-read-it-later'].api which is an instance of ReadItLaterAPI class defined in src/ReadItLaterApi.ts.

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.