What is Readwise Reader? Readwise Reader is a powerful extension of the Readwise platform designed to enhance your digital reading experience. Reader brings together all your reading materials—articles, newsletters, EPUBs, PDFs, videos, tweets, and more—into one unified, customizable platform and seamlessly integrates with Readwise. With Reader, you can highlight and annotate text as you read, and all your highlights and notes will automatically sync to your Readwise library for easy organization and review. ## Where should I start? Great question! With so many options for importing, exporting, and customizing, getting set up with Reader can feel daunting. To help ease the mental load of a new system, here are some ideas: 1. [Import existing content](/reader/docs/faqs/importing-content) from Pocket, Instapaper, Feedly, or other platforms. 2. [Add new content](/reader/docs/faqs/adding-new-content) using the browser extension, mobile share sheet, or drag-and-drop file upload. 3. [Subscribe to RSS feeds](/reader/docs/faqs/feed) to get new content in your account every day. 4. [Customize Reader's appearance](/reader/docs/faqs/appearance) to suit your reading preferences—make the text bigger, turn on paged scroll, switch to dark mode, and more. 5. Start reading and annotate as you go with simple [highlighting and note-taking](/reader/docs/faqs/highlights-tags-notes) functionality. ## What else can I do with Reader? An even better question! To learn more about the deep cuts of Reader's feature set, check out these resources: What is Readwise Reader? Readwise Reader is an all-in-one reading app designed to enhance your digital reading experience. Reader brings together all your reading materials—articles, newsletters, EPUBs, PDFs, videos, tweets, and more—into one unified, customizable platform and seamlessly integrates with Readwise. With Reader, you can highlight and annotate text as you read, and all your highlights and notes will automatically sync to your Readwise library for easy organization and review. ## Where should I start? Great question! With so many options for importing, exporting, and customizing, it can be nice to have a jumping off point. To help you get started, here are some ideas: 1. [Import existing content](/reader/docs/faqs/importing-content) from Pocket, Instapaper, Feedly, or other platforms. 2. [Add new content](/reader/docs/faqs/adding-new-content) using the browser extension, mobile share sheet, or drag-and-drop file upload. 3. [Subscribe to RSS feeds](/reader/docs/faqs/feed) to get new content in your account every day. 4. [Customize Reader's appearance](/reader/docs/faqs/appearance) to suit your reading preferences—make the text bigger, turn on paged scroll, switch to dark mode, and more. 5. Start reading and annotate as you go with simple [highlighting and note-taking](/reader/docs/faqs/highlights-tags-notes) functionality. ## What else can I do with Reader? To learn more about some of Reader's more advanced features, check out these resources: Reader API Documentation The Reader API just supports saving new documents to Reader and fetching your documents. We will add more endpoints in the near future. If you have any questions, please [reach out :)](mailto:api@readwise.io) Looking for the API docs for the original Readwise? [See here](/readwise/docs/api). ## Authentication Set a header with key "Authorization" and value: "Token XXX" where XXX is your Readwise access token. You (or your users) can get that from here: [readwise.io/access_token](https://readwise.io/access_token) If you want to check that a token is valid, just make a GET request to `https://readwise.io/api/v2/auth/` with the above header. You should receive a `204` response. ## Rate Limiting The default base rate is 20 requests per minute (per access token) but the `Document CREATE` and `Document UPDATE` endpoints have higher limits of 50 requests per minute (per access token). You can check `Retry-After` header in the 429 response to get the number of seconds to wait for. --- ## Document CREATE **Request**: `POST` to `https://readwise.io/api/v3/save/` **Parameters:** A JSON object with the following keys: | Key | Type | Description | Required | |-----|------|-------------|----------| | url | string | The document's unique URL. If you don't have one, you can provide a made up value such as `https://yourapp.com#document1` | yes | | html | string | The document's content, in valid html (see examples). If you don't provide this, we will try to scrape the URL you provided to fetch html from the open web. | no | | should_clean_html | boolean | Only valid when `html` is provided. Pass `true` to have us automatically clean the html and parse the metadata (title/author) of the document for you. By default, this option is `false`. | no | | title | string | The document's title, it will overwrite the original title of the document | no | | author | string | The document's author, it will overwrite the original author (if found during the parsing step) | no | | summary | string | Summary of the document | no | | published_date | date | A datetime representing when the document was published in the ISO 8601 format; default timezone is UTC. Example: `"2020-07-14T20:11:24+00:00"` | no | | image_url | string | An image URL to use as cover image | no | | location | string | One of: `new`, `later`, `archive` or `feed`. Default is `new`. Represents the initial location of the document (previously called `triage_status`). Note: if you try to use a location the user doesn't have enabled in their settings, this value will be set to their default location. | no | | category | string | One of: `article`, `email`, `rss`, `highlight`, `note`, `pdf`, `epub`, `tweet` or `video`. Default is guessed based on the URL, usually `article`. | no | | saved_using | string | This value represents the source of the document | no | | tags | list | A list of strings containing tags, example: `["tag1", "tag2"]` | no | | notes | string | A top-level note of the document | no | **Response:** - Status code: `201` or `200` if document already exist - Created document details: ```json { "id": "0000ffff2222eeee3333dddd4444", "url": "https://read.readwise.io/new/read/0000ffff2222eeee3333dddd4444", } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v3/save/', type: 'POST', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "url": "https://example.com/article/", "html": "

This article is awesome

content here!

", "tags": ["tag1", "tag2"] }), success: function (result) {console.log(result)}, error: function (error) {console.log(error)}, }); ``` **Python Example:** ```python import requests requests.post( url="https://readwise.io/api/v3/save/", headers={"Authorization": "Token XXX"}, json={ "url": "https://example.com/article/", # No html is provided, so the url will be scraped to get the document's content. "tags": ["tag3", "tag4"] } ) ``` **Bash Example:** ```bash $ curl -v https://readwise.io/api/v3/save/ -H "Authorization: Token XXX" -X POST -d '{"url": "https://example.com/article/"}' -H "Content-Type: application/json" ``` --- ## Document LIST **Request**: `GET` to `https://readwise.io/api/v3/list/` **Parameters:** Usual query params: | Key | Type | Description | Required | |-----|------|-------------|----------| | id | string | The document's unique id. Using this parameter it will return just one document, if found. | no | | updatedAfter | string (formatted as ISO 8601 date) | Fetch only documents updated after this date | no | | location | string | The document's location, could be one of: `new`, `later`, `shortlist`, `archive`, `feed` | no | | category | string | The document's category, could be one of: `article`, `email`, `rss`, `highlight`, `note`, `pdf`, `epub`, `tweet`, `video` | no | | tag | string | The document's tag key. Pass up to 5 `tag` parameters to find documents having all the tags listed. Pass empty value (`?tag=`) to find untagged documents. Use the [Tag LIST](#tag-list) endpoint to retrieve all tags available. | no | | pageCursor | string | A string returned by a previous request to this endpoint. Use it to get the next page of documents if there are too many for one request. | no | | withHtmlContent | boolean | Include the `html_content` field in each document's data. Please note that enabling this feature may slightly increase request processing time. Could be one of: `true`, `false`. | no | | withRawSourceUrl | boolean | Include the `raw_source_url` field in each document's data, containing a direct Amazon S3 link to the raw document source file. The link is empty for non-distributable documents, like Wisereads previews. The link is valid for one hour. Please note that enabling this feature may slightly increase request processing time. Could be one of: `true`, `false`. | no | **Response:** - Status code: `200` - Please keep in mind that both highlights and notes made in Reader are also considered Documents. Highlights and notes will have `parent_id` set, which is the Document id of the article/book/etc and highlight that they belong to, respectively. - All dates are UTC unless otherwise stated. - List of documents: ```json { "count": 2304, "nextPageCursor": "01gm6kjzabcd609yepjrmcgz8a", "results": [ { "id": "01gwfvp9pyaabcdgmx14f6ha0", "url": "https://readiwise.io/feed/read/01gwfvp9pyaabcdgmx14f6ha0", "source_url": "https://www.driverlesscrocodile.com/values/ends-and-meanings-3-alasdair-macintyre-virtue-mortality-and-story-in-heroic-societies/", "title": "Ends and Meanings (3): Alasdair MacIntyre virtue, mortality and story in heroic societies", "author": "Stuart Patience", "source": "Reader RSS", "category": "rss", "location": "feed", "tags": {}, "site_name": "Driverless Crocodile", "word_count": 819, "reading_time": "4 mins", "created_at": "2023-03-26T21:02:51.618751+00:00", "updated_at": "2023-03-26T21:02:55.453827+00:00", "notes": "", "published_date": "2023-03-22", "summary": "Without … a place in the social order, ...", "image_url": "https://i0.wp.com/www.driverlesscrocodile.com/wp-content/uploads/2019/10/cropped-driverlesscrocodile-icon-e1571123201159-4.jpg?fit=32%2C32&ssl=1", "parent_id": null, "reading_progress": 0.15, "first_opened_at": null, "last_opened_at": null, "saved_at": "2023-03-26T21:02:51.618751+00:00", "last_moved_at": "2023-03-27T21:03:52.118752+00:00", }, { "id": "01gkqtdz9xabcd5gt96khreyb", "url": "https://readiwise.io/new/read/01gkqtdz9xabcd5gt96khreyb", "source_url": "https://www.vanityfair.com/hollywood/2017/08/the-story-of-the-ducktales-theme-music", "title": "The Story of the DuckTales Theme, History's Catchiest Single Minute of Music", "author": "Darryn King", "source": "Reader add from import URL", "category": "article", "location": "new", "tags": {}, "site_name": "Vanity Fair", "word_count": 2678, "reading_time": "11 mins", "created_at": "2022-12-08T02:53:29.639650+00:00", "updated_at": "2022-12-13T20:37:42.544298+00:00", "published_date": "2017-08-09", "notes": "A sample note", "summary": "A woo-hoo heard around the world.", "image_url": "https://media.vanityfair.com/photos/598b1452f7f0a433bd4d149c/16:9/w_1280,c_limit/t-ducktales-woohoo-song.png", "parent_id": null, "reading_progress": 0.5, "first_opened_at": "2023-03-26T21:02:51.618751+00:00", "last_opened_at": "2023-03-29T21:02:51.618751+00:00", "saved_at": "2023-03-26T21:02:51.618751+00:00", "last_moved_at": "2023-03-27T21:03:52.118752+00:00", }, { "id": "01gkqt8nbms4t698abcdvcswvf", "url": "https://readwise.io/new/read/01gkqt8nbms4t698abcdvcswvf", "source_url": "https://www.vanityfair.com/news/2022/10/covid-origins-investigation-wuhan-lab", "title": "COVID-19 Origins: Investigating a \"Complex and Grave Situation\" Inside a Wuhan Lab", "author": "Condé Nast", "source": "Reader add from import URL", "category": "article", "location": "new", "tags": {}, "site_name": "Vanity Fair", "word_count": 9601, "reading_time": "37 mins", "created_at": "2022-12-08T02:50:35.662027+00:00", "updated_at": "2023-03-22T13:29:41.827456+00:00", "published_date": "2022-10-28", "notes": "", "summary": "The Wuhan Institute of Virology, the cutting-edge ...", "image_url": "https://media.vanityfair.com/photos/63599642578d980751943b65/16:9/w_1280,c_limit/vf-1022-covid-trackers-site-story.jpg", "parent_id": null, "reading_progress": 0, "first_opened_at": "2023-03-26T21:02:51.618751+00:00", "last_opened_at": "2023-03-26T21:02:51.618751+00:00", "saved_at": "2023-03-26T21:02:51.618751+00:00", "last_moved_at": "2023-03-27T21:03:52.118752+00:00", } ] } ``` **JavaScript Example:** ```javascript const token = "XXX"; // use your access token here const fetchDocumentListApi = async (updatedAfter=null, location=null) => { let fullData = []; let nextPageCursor = null; while (true) { const queryParams = new URLSearchParams(); if (nextPageCursor) { queryParams.append('pageCursor', nextPageCursor); } if (updatedAfter) { queryParams.append('updatedAfter', updatedAfter); } if (location) { queryParams.append('location', location); } console.log('Making export api request with params ' + queryParams.toString()); const response = await fetch('https://readwise.io/api/v3/list/?' + queryParams.toString(), { method: 'GET', headers: { Authorization: `Token ${token}`, }, }); const responseJson = await response.json(); fullData.push(...responseJson['results']); nextPageCursor = responseJson['nextPageCursor']; if (!nextPageCursor) { break; } } return fullData; }; // Get all of a user's documents from all time const allData = await fetchDocumentListApi(); // Get all of a user's archived documents const archivedData = await fetchDocumentListApi(null, 'archive'); // Later, if you want to get new documents updated after some date, do this: const docsAfterDate = new Date(Date.now() - 24 * 60 * 60 * 1000); // use your own stored date const newData = await fetchDocumentListApi(docsAfterDate.toISOString()); ``` **Python Example:** ```python import datetime import requests # This may need to be installed from pip token = 'XXX' def fetch_reader_document_list_api(updated_after=None, location=None): full_data = [] next_page_cursor = None while True: params = {} if next_page_cursor: params['pageCursor'] = next_page_cursor if updated_after: params['updatedAfter'] = updated_after if location: params['location'] = location print("Making export api request with params " + str(params) + "...") response = requests.get( url="https://readwise.io/api/v3/list/", params=params, headers={"Authorization": f"Token {token}"}, verify=False ) full_data.extend(response.json()['results']) next_page_cursor = response.json().get('nextPageCursor') if not next_page_cursor: break return full_data # Get all of a user's documents from all time all_data = fetch_reader_document_list_api() # Get all of a user's archived documents archived_data = fetch_reader_document_list_api(location='archive') # Later, if you want to get new documents updated after some date, do this: docs_after_date = datetime.datetime.now() - datetime.timedelta(days=1) # use your own stored date new_data = fetch_reader_document_list_api(docs_after_date.isoformat()) ``` **Bash Example:** ```bash $ curl -v https://readwise.io/api/v3/list/?location=later -H "Authorization: Token XXX" -H "Content-Type: application/json" ``` --- ## Document UPDATE Use this API to update specific fields from the list below. Fields omitted from the request will remain unchanged. **Request**: `PATCH` to `https://readwise.io/api/v3/update//` **Parameters:** A JSON object with the following keys: | Key | Type | Description | Required | |-----|------|-------------|----------| | title | string | The document's title, it will overwrite the original title of the document | no | | author | string | The document's author, it will overwrite the original author (if found during the parsing step) | no | | summary | string | Summary of the document | no | | published_date | date | A datetime representing when the document was published in the ISO 8601 format; default timezone is UTC. Example: `"2020-07-14T20:11:24+00:00"` | no | | image_url | string | An image URL to use as cover image | no | | location | string | One of: `new`, `later`, `archive` or `feed`. Represents the current location of the document (previously called `triage_status`). Note: if you try to use a location the user doesn't have enabled in their settings, this value will be set to their default location. | no | | category | string | One of: `article`, `email`, `rss`, `highlight`, `note`, `pdf`, `epub`, `tweet` or `video`. | no | | tags | list | A list of strings containing tags, example: `["tag1", "tag2"]` | no | **Response:** - Status code: `200` - Updated document details: ```json { "id": "0000ffff2222eeee3333dddd4444", "url": "https://read.readwise.io/new/read/0000ffff2222eeee3333dddd4444", } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v3/update/0000ffff2222eeee3333dddd4444', type: 'PATCH', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "title": "Updated title", "location": "new" }), success: function (result) {console.log(result)}, error: function (error) {console.log(error)}, }); ``` **Python Example:** ```python import requests requests.patch( url="https://readwise.io/api/v3/update/0000ffff2222eeee3333dddd4444", headers={"Authorization": "Token XXX"}, json={ "title": "Updated title", "location": "new", } ) ``` **Bash Example:** ```bash $ curl -v https://readwise.io/api/v3/update/0000ffff2222eeee3333dddd4444 -H "Authorization: Token XXX" -X PATCH -d '{"title": "Updated title"}' -H "Content-Type: application/json" ``` --- ## Document DELETE **Request**: `DELETE` to `https://readwise.io/api/v3/delete//` **Response:** - Status code: `204` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v3/delete/0000ffff2222eeee3333dddd4444', type: 'DELETE', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) {console.log(result)}, error: function (error) {console.log(error)}, }); ``` **Python Example:** ```python import requests requests.delete( url="https://readwise.io/api/v3/delete/0000ffff2222eeee3333dddd4444", headers={"Authorization": "Token XXX"}, ) ``` **Bash Example:** ```bash $ curl -v https://readwise.io/api/v3/delete/0000ffff2222eeee3333dddd4444 -H "Authorization: Token XXX" -X DELETE ``` --- ## Tag LIST **Request**: `GET` to `https://readwise.io/api/v3/tags/` **Parameters:** Usual query params: | Key | Type | Description | Required | |-----|------|-------------|----------| | pageCursor | string | A string returned by a previous request to this endpoint. Use it to get the next page of tags if there are too many for one request. | no | **Response:** - Status code: `200` - List of document tags: ```json { "count": 2, "nextPageCursor": null, "results": [ { "key": "first-tag", "name": "First tag" }, { "key": "second-tag", "name": "Second tag" } ] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v3/tags/', type: 'GET', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) {console.log(result)}, error: function (error) {console.log(error)}, }); ``` **Python Example:** ```python import requests requests.get( url="https://readwise.io/api/v3/tags/", headers={"Authorization": "Token XXX"}, ) ``` **Bash Example:** ```bash $ curl -v https://readwise.io/api/v3/tags/ -H "Authorization: Token XXX" ``` Basics ## How do I get started with Reader? Reader is a cross-platform reading application with a web app ([read.readwise.io](https://read.readwise.io/)), mobile apps for iOS and Android, [desktop apps](https://readwise.io/read/download/) for Mac and Windows, and browser extensions for Chrome, Chromium-based browsers (Edge, Brave, Arc, etc.), Firefox, and Safari. The best way to get started using Reader is to navigate to [read.readwise.io](https://read.readwise.io/) and read the _Getting Started with Reader_ article inserted into your Library by default. From there, we recommend you navigate to different sections of the app based on the type of content you read. For example, if you read PDFs, click on the PDF section and you'll see instructions in the right sidebar for how to upload those files. (On mobile, you can find these sections by tapping the **Views** icon in the bottom navigation bar.) Alternatively, you can also watch our community manager Erin's [short walkthrough video](https://readwise.io/reader101) to get up and running with Reader as quickly as possible. ## How do I find the Reader web app in my browser? On web, go to [read.readwise.io](https://read.readwise.io/). Note that Reader and Readwise use the same account and authentication. ## How do I log into Reader? Reader uses your Readwise account for authentication. If you're not redirected automatically, make sure you're logged into [Readwise](https://readwise.io/dashboard) on any browser you're using with Reader. ## What's the relationship between Reader and Readwise? Are they automatically connected? You can think of Reader as another reading app that integrates with Readwise (albeit seamlessly because they share a database). Every highlight you make in Reader instantly syncs with Readwise and then from Readwise to your note-taking apps. ## What is the business model of Readwise? If I start using Reader, how do I know you won't disappear on me? We've been working on Readwise since 2017 and, in 2018, we decided to fund the business through consumer software-as-a-service rather than raising venture capital (more here: [Why We're Bootstrapping Readwise](https://blog.readwise.io/why-were-bootstrapping-readwise/)). We're a sustainable company with a long-term mission of improving the practice of reading through software by an order of magnitude. We're not going anywhere, but it's a fair question considering the many startups that raised venture capital during the peak markets of 2020/2021 and are now zombies. ## What is the pricing of Reader? The annual subscription cost of Reader (plus Readwise!) is $9.99/month (USD). For monthly subscribers, it’s $12.99/month (USD). You can learn more about Reader’s pricing and what’s included on our [pricing page](https://readwise.io/pricing). Note that if you subscribed prior to **February 18, 2024**, you’re locked into our legacy pricing for as long as you maintain your subscription. ## Can I use Reader offline? Reader works offline on both web and mobile. On web, so long as you have [read.readwise.io](https://read.readwise.io/) open before you go offline, Reader will continue to work and any changes you make (e.g. new highlights) will sync once you come back online. Alternatively, you can install the Reader [desktop app](https://readwise.io/read/download/), which will open and work offline. On mobile, so long as you open the app for at least a few moments before you go offline, the full text of your documents will be cached and Reader will work offline. ## Can I select which documents are cached for offline reading? The selective offline caching feature allows you to choose which sections of your account cache their files for offline use. You can find the option in your Account tab under **Offline documents**. In the **Offline documents** menu, toggle on *Experimental caching*. By default, this will turn off the Feed and remove those documents' cached files from your device, since this is the most common cause of app size bloat among our users. Turning off a given section of your documents will immediately remove the cached files for those documents. To re-download those files, turn the toggle back on. You will likely need to wait for a few moments as the files download, but you'll be able to watch the progress in the bar below the toggle. Utilizing these options will help you manage the file size of the Reader app on your device, as well as ensure that the documents you want to read are available for the next time you go offline. Note that, even with Experimental Caching turned on, individual documents will still be cached when you open them. This may result in unexpected numbers on the caching screen, e.g. "*10/300 downloaded*" for a section that is turned off. ## Does Reader have a Command Palette? Reader has a Command Palette on web (`Cmd/Ctrl + K`) which contains virtually any action you can take in the application. The Command Palette is a great way to find out if actions you're looking to take exist and, if so, what keyboard shortcut you can use to access them. ## Does Reader use keyboard shortcuts or hotkeys? On web, Reader is fully keyboard shortcut driven, including while reading documents. Most shortcuts are shown in hover tooltips in the user interface, but you can additionally open the Command Palette (`Cmd/Ctrl + K`) or use the `?` shortcut to pull up a reference. Note that if you use a Magic Keyboard with iPad, you should use the Reader web app in iOS Safari as we've not yet had an opportunity to optimize the iPad app with keyboard shortcuts yet. This is on the roadmap. ## Can I undo an accidental action? You can use the undo feature to restore a deleted highlight or note, undo bulk actions, and much more. On web, you can trigger the undo function by pressing `Z` on your keyboard. Pressing multiple times will step back through the last few actions you've taken. On mobile, when using an iOS device, you can use the operating system's built-in "shake to undo" feature. If shaking to undo isn't working for you, check that the feature is turned on in your device's **Settings** > **Accessibility** > **Touch**. Additionally, many actions will be followed by a pop-up "toast" dialog to confirm what's been done, and that dialog will often include an undo button. Clicking or tapping it will immediately revert the action. ## How can I delete unwanted documents? On web, there are two ways to delete a document. You can either click into the **More actions** (...) menu and select **Delete document**, or you can use the keyboard shortcut `D`. On mobile, tap into the **More actions** (...) menu and select **Delete document** at the bottom of the sheet. ## Can I restore documents that I've previously deleted? You can restore deleted documents from the **Trash** section of your account. Items you've deleted will stay in the Trash until you choose to recover them or empty your Trash. Restoring a document will return it to your Library and restore any highlights or notes you might have made. The Trash is device-specific, so deleted documents must be restored from the **same device** (e.g. web browser, mobile device, etc) where they were originally deleted. **To restore a document on web or in the desktop app:** 1. Navigate to the **Trash** in the left sidebar below the **Pinned** section. 2. Hover over the document you'd like to restore, then click the **Restore document** icon that appears. **To restore a document in the mobile app:** 1. Navigate to the **Search** tab and scroll to the bottom of the page. 2. Below your Filtered Views, tap into the **Trash** view under **Deleted documents**. 3. Tap the title of the document you'd like to restore, then select **Restore Document** from the Actions menu. Action Tags ## What is an Action Tag? Action tags are highlight notes that use a specific syntax to perform actions on the associated highlight. All action tags begin with a `.` character, and their functionality effects how the highlights appear in Readwise. ## How can I create headings between my highlights? In Reader, headings are added to the Notebook view (`Shift + 1`) automatically when they’re detected within the document’s content. However, if you want to see those headings in Readwise as well, you’ll need to use an action tag. To do so, highlight the text that you want to appear as a heading, then add a note (`N`) with the text `.h1`. This will create a top-level heading with the text of the highlight. To create nested headings, you can use an `.h2` tag and so on. Note that you can start with lower level headings (e.g. `.h3`) and they’ll still appear in Readwise, but for the table of contents to appear on the left side of the page, you’ll need to start with at least one `.h1` tag. ## How can I combine two disparate pieces of text into a single highlight? Oftentimes, the most salient parts of a paragraph are the first and last sentence, which can be frustrating when the author includes a bunch of fluff in between them that just bog you down when reviewing the highlight later. To fix this, you can use the concatenation action tag. Simply add a note (`N`) with the text `.c1` to the first highlight, then `.c2` to the next highlight. When the highlights sync to Readwise, they’ll appear as a single highlight with an ellipse (`…`) between the two pieces of text. You can string as many highlights together in this way as you’d like by continuing on to `.c3`, `.c4`, etc. A tag of `.c1` will always begin a new concatenation string. ## How can I create a Q&A mastery card while reading? You can use action tags to create a Q&A [mastery card](https://readwise.io/mastery) in Readwise associated with a particular highlight. To do so, add a note (`N`) to the highlight using the syntax `.qa [QUESTION?][ANSWER]`. ## Can I add a regular note to a highlight with an action tag? Yes! To add a note to a highlight that has an action tag, simply add a line break after the action tag. You can do this by pressing `Shift + Enter` in the note field (`Enter` by itself will save the note). For example, if you wanted to add a brief description of a section’s content with a heading, you could do something like `.h1 ⏎ This section is about how Topic A relates to Topic X.` The note text will then appear below the heading in Readwise. Adding Content to Reader ## How do I use the browser extensions to save articles to Reader? The Reader browser extension performs two functions: first, saving articles to Reader and second (optionally), highlighting the open web. To save a document to Reader, tap the icon in the browser bar or use the keyboard shortcut `alt + R`. (You can change the keyboard binding in the extension's options.) This will save a clean, readable version of the document to your Reader inbox. Once you've tapped the icon, you can optionally begin highlighting on the website itself, or you can click the **Open article in Reader** button to switch the Reader app and take your highlights there. The browser extension is the most robust way to save documents to Reader because the extension gets the underlying content rendered in your browser as opposed to just a URL. ## How do I use the mobile app to save articles to Reader? Once you have the mobile app installed on your iOS or Android device, you can share documents to Reader using your mobile operating system's share sheet. If you don't see Reader among the apps you can share to, try restarting your device. Sometimes iOS has a bug where new apps do not immediately appear in the share sheet, but a restart should clear that up. Saving from Safari is the best way to save documents to Reader on mobile because iOS gives our app access to the underlying content in addition to the URL resulting in better parsing. ## How do I install the Reader iOS app? You can install the Reader iOS app [from the App Store](https://apps.apple.com/us/app/readwise-reader/id1567599761). This will work on any device that can run iOS 13.0 or later (iPhone, iPad, etc). ## How do I install the Reader Android app? You can install the Reader Android app using this link [from the Google Play Store](https://play.google.com/store/apps/details?id=com.readermobile). Note that this version of Reader will also work on e-ink devices that run Android, such as the Onyx BOOX. ## How do I install the Reader Chrome extension? You can install the Reader Chrome extension [from the Chrome web store](https://chrome.google.com/webstore/detail/jjhefcfhmnkfeepcpnilbbkaadhngkbi). The Reader browser extension is compatible with any browser built using Chromium, including Brave, Edge, and Arc. ## My Chrome extension is asking for an API token. What do I do? This is not actually the official Chrome extension made by Readwise, but rather an extension made by someone in the community. You should not use this extension with Reader. Instead, install the official extension [from the Chrome web store](https://chrome.google.com/webstore/detail/jjhefcfhmnkfeepcpnilbbkaadhngkbi). ## How do I install the Reader Firefox extension? You can install the Reader Firefox [from the Firefox Add-Ons](https://addons.mozilla.org/en-US/firefox/addon/readwise-highlighter/). ## How do I install the Reader Safari extension? You can install the Reader Safari extension [from the App Store](https://apps.apple.com/app/save-to-reader/id1640236961). ## How do I use a keyboard shortcut to save documents to Reader using the browser extension? By default, you should be able to tap `Alt + R` to save a document to Reader using the browser extension. If you're using Chrome or a Chromium-based browser, you can edit this shortcut for the browser extension here: [chrome://extensions/shortcuts](chrome://extensions/shortcuts). ## What's the difference between Library and Feed? Reader has two broad sections: Library and Feed. Library is further subdivided into a handful of locations like Inbox, Later, Archive, and Shortlist (depending on your Library configuration). Library is where things go that you manually curate for yourself and choose to save permanently, such as articles saved from the browser extension or uploaded EPUB documents. Feed is where things go that are automatically pushed to you, such as RSS feed content, and it's divided into two locations: Unseen and Seen. As you find documents in Feed that you want to read later and/or permanently save, you can move them to your Library. ## How do I upload an OPML file to import all my RSS feeds from my existing RSS feed reader such as Feedly, Inoreader, Reeder, etc? You can upload OPML files to Reader by dragging the OPML file on top of the web app or opening the upload dialog (keyboard shortcut: `U`) and selecting the file. ## How do I subscribe or unsubscribe to feeds in Reader? You can subscribe to RSS feeds inside Reader in multiple ways. - First, whenever you save a document to Reader, Reader scans the domain for the presence of an RSS feed. If it detects an associated RSS feed, a `Subscribe` button will appear in the right sidebar on both web and mobile. You can tap this `Subscribe` button to add this RSS feed to your account. If you're already subscribed to the source, this `Subscribe` button will become `Unsubscribe`. - Second, you can navigate to the [Manage feeds section](https://read.readwise.io/feed/sources) of the web app and click `Add feeds` (`Shift + A`) to search for or manually input a domain or RSS feed. On mobile, you can tap the "..." icon in the rop right of the **Feeds** view, then tap the **Add feed** button. - Third, you can upload an OPML file of RSS feeds to Reader by exporting the file from an existing feed reader, dragging the OPML file on top of the web app or opening the upload dialog (keyboard shortcut: `U`) and selecting the file. This is typically how you would quickly migrate from an existing feed reader such as Feedly, Inoreader, Reeder, Feedbin, etc. - Finally, you can subscribe in bulk to suggested feeds from the "Suggested" tab on the [Manage feeds section](https://read.readwise.io/feed/sources) of the web app. This tab contains all the RSS feeds detected on documents you've saved to Reader. If you're not a pre-existing RSS power user, we recommend subscribing to all feeds contained in the "High signal feeds" section and then pruning back sources you don't like over time. ## How do I upload files to Reader? You can upload a variety of different file types to Reader, including PDFs, EPUBs, and OPML files. To upload a file, drag it on top of the web app, or open the Upload dialog (keyboard shortcut: `U`) and select the file. On mobile, use the "share" action from within your device's Files app and find the option in the share sheet labeled "Upload [file] to Reader". ## How do I save Twitter threads to Reader? You can save Twitter threads to Reader and they'll compile into beautiful, blog-like documents. To save a Twitter thread, you can use the browser extension while viewing the page of any tweet in the thread. (Note that this will only save tweets posted by the OP in their original thread, not any replies from other users.) If you're on mobile, you can use the share sheet to share any tweet of the thread to Reader. ![Share from Twitter on mobile](https://s3.amazonaws.com/readwiseio/2023/12/share-from-twitter_mobile.jpeg) ## How do I configure where individual tweets and Twitter threads go between Reader and Readwise? Users have many different preferences on where they want to save individual tweets and threads. By default, we make the assumption that individual tweets are like highlights and therefore go into Readwise, whereas Twitter threads are like articles and therefore go into Reader. If you want to change any of this, you can customize the Twitter behavior on the [Integrations page](https://read.readwise.io/integrations). ## How do I add Twitter lists to Reader? You can subscribe to public Twitter Lists in Reader as if they were an RSS feed. It's a great way to separate the good parts of Twitter (high signal information/entertainment) from the bad parts (phone addiction?). Once you're subscribed to a Twitter List, you'll start receiving two digests per day in the AM and the PM containing all the new tweets over the past 12 hours. To subscribe to a Twitter List, find the URL of a public list and [subscribe to it](https://read.readwise.io/add-to-feed) in the Feed section of Reader. ## Can I read my Kindle/Google/Apple/Kobo/etc books in Reader? If you purchased a book on a different platform that doesn't provide an option to download a DRM-free EPUB file, you won't be able to import that book to Reader. Those other platforms intend for the books they sell to be read within their own ecosystem (e.g. Amazon wants you to read on a Kindle or in their app), so they don't provide a way for the books to be exported to third-party services like Reader. For books that are in the public domain, you can find many places online to download EPUB versions. We like [Standard Ebooks](https://standardebooks.org/) for their dedication to quality proofreading and modern formatting. Appearance ## Can I customize the appearance of Reader? You can customize the text formatting on both web and mobile. Click the `Aa` icon on web, or tap into the `...` menu and select **Appearance** on mobile, to access a variety of settings: - *Typeface:* Select from a variety of serif and sans serif typefaces, including Atkinson Hyperlegible and OpenDyslexic. - *Font size:* The default is 20px, but this is adjustable down to 14px and up to 80px. (`Shift + -` to decrease, `Shift + =` to increase.) - *Line spacing:* Change this to adjust the amount of blank space between each line of text. Defaults to 1.4. (`Shift + :` to decrease, `Shift + "` to increase.) - *Line width (web only):* Adjusts the maximum width of the document content. Defaults to medium. (Web only. `Shift + ,` to decrease, `Shift + .` to increase.) ## Does Reader have dark mode? Reader has both light mode and dark mode, as well as an "auto" setting to detect the theme of the operating system. You can change the mode at any time from the **Appearance** menu, or you can use the keyboard shortcut `Cmd/Ctrl + Option + T`. ## Can I change the app icon? If you're using Reader on iOS, you can customize the app icon. To change which icon the app uses, go to **Account settings** > **Change app icon** and select the icon that you prefer. ## How can I enable pagination for reading ebooks and other long documents? You can toggle this feature on or off from the Appearance panel by tapping into the `...` menu in the bottom right corner and selecting **Appearance**. From there, you can select **Paged scroll** to turn on pagination. To change the default behavior of this feature, go to **Account settings** > **Paged scrolling defaults** and toggle "Default to paged scrolling" on or off for each document type. By default, EPUBs will have this option turned on, but you can adjust to suit your own preferences and the settings will be saved for any document you open on the same device. ## Why is it called "paged scroll"? Why can't I swipe sideways to turn pages? During pagination's development, we tried repeatedly to find a way to implement the UX of horizontal pagination without compromising other core functionality. Although familiar, horizontal page-flipping disrupts the user experience for a number of features, like highlighting text across pages (an often-frustrating interaction in other reading apps) or the ability to open Reader's side panels with swipe gestures. To address these issues, we developed a vertical pagination system that allows seamless text selection and preserves swipe gestures for navigation. Although our team hotly debated the idea at first, the benefits of vertical pagination proved undeniable and we opted to implement Reader's pagination using the vertical "paged scroll" paradigm. That said, we understand there's a lot of muscle memory in the traditional sideways swipe. With that in mind, we made sure to implement a simple "tap to turn the page" functionality that helps it feel more like other apps that use a sideways swipe. While in paged scroll mode, you can use a single tap on the left or right margins of the page to flip backward or forward. ## Is there a way to make the reading view nicer for long documents and ebooks? Yes! "Long-form reading view" is a dedicated reading layout that hides Reader's action-heavy bottom bar and elevates UI elements like reading progress and appearance settings. This setting is turned on for EPUBs by default, but you can turn it on or off for each document type in the **Account settings** > **Long-form reading view** menu. Daily Digest ## What is the Daily Digest? The Daily Digest collects an assortment of documents from your Feed and your Saved for Later and presents them to you in an easily-scrollable format to help you triage your feed and rediscover documents you might have forgotten about. ## Where can I find the Daily Digest? On mobile, you can find the Daily Digest at the top of your `Home` section. Currently the web version of the app doesn't have the same scrollable format for reviewing your Daily Digest, but you can add a section to your `Home` screen by clicking into the `Configure` dropdown in the top right corner and selecting "Today's Daily Digest." This will display all the same documents that you would see when scrolling through the Digest on your mobile device. ## How do I disable the Daily Digest? You can disable the Daily Digest and its emails by navigating to your `Account Settings` and toggling off `Enable Daily Digest`. ## What is the "1" badge on my app icon? The Reader badge on iOS appears when you haven't viewed your Daily Digest for the day. Once you've viewed the Digest, the icon badge should disappear. Since it only represents the current day's Digest, it will never be a number larger than one. If you'd like to keep the Daily Digest as an option in the app but you don't want to see the badge, you can disable badge notifications for Reader in the system settings of your device. Using Reader on e-ink devices ## Can I use Reader on my e-ink device? You can use Reader on any e-ink device that runs Android and has access to the Google Play Store. This includes devices such as the Daylight Computer or any of the BOOX tablets, as well as a variety of others. To install Reader on your device, navigate to the Google Play Store and search for [Readwise Reader](https://play.google.com/store/apps/details?id=com.readermobile). ## Does Reader have special settings for e-ink devices? If Reader detects that you're using an e-ink device, it will automatically turn on **E-ink Mode**. This mode includes a handful of settings to optimize Reader's performance and appearance for e-ink. Depending on your device, the default settings may be different. For example, the Daylight Computer has a very high refresh rate and therefore doesn't automatically turn off the motion reduction settings. To turn E-ink Mode on manually, go to **Account Settings** > **E-ink Mode**. From there, you can use the main toggle at the top to turn on or off all of the settings at once. If you'd like to only turn on some of the settings, keep the E-ink Mode toggle *off* and toggle the other settings as desired. 1. **Reduce motion** — Turns off a number of animations throughout the app to improve performance and reduce e-ink ghosting. 2. **Reduce page animations** — Turns off animations when swiping between pages in paged scroll mode. 3. **High contrast** — Increases the contrast of UI elements to make them more distinct on low-res or grayscale displays. 4. **Use volume buttons to turn pages** — Allows you to use your device's built-in volume buttons to navigate forward and backward while reading. ## How should I set up Reader to optimize for long-form reading? It's one thing to scroll through emails or articles that you've saved, using Reader's various organization and triage tools to sort them, tag them, and archive them. It's quite another to get properly immersed in a book—especially on an e-ink device—when you might prefer that those other tools take a backseat to the reading experience. To better implement a focused reading environment, Reader has some options that can be made default for certain document types (namely, EPUBs) that can make it feel less like an all-in-one read-it-later app and more like a book-reading app. ### Long-form reading view A [dedicated reading layout](/reader/docs/faqs/appearance#is-there-a-way-to-make-the-reading-view-nicer-for-long-documents-and-ebooks) that hides Reader's action-heavy bottom bar and elevates UI elements like reading progress and appearance settings. This is turned on for EPUBs by default, but you can turn it on or off for each document type in the *Account settings* > *Long-form reading view* menu. ### Paged scroll For a proper reading experience, we recommend using [the *paged scroll* option](/reader/docs/faqs/appearance#how-can-i-enable-pagination-for-reading-ebooks-and-other-long-form-documents). Like the long-form reading view, this is turned on for EPUBs by default but can be toggled per document in the *Appearance* menu. ### Justify text For a properly straight edge of your book's text, you can turn on the *Justify text* toggle in *More style settings*. ### Pin "Books" view to Home For easy and immediate access to your books, you can pin the default "Books" view to the top of your Home page. ### Set the default view to "Continue reading" If you'd rather skip the Home screen entirely, you can set your default view to "Continue reading". This will make it so that, when you open the Reader app, it will immediately load into the document you were last reading. Email Newsletters ## How do I find my custom Reader email address? You can find your custom Reader email address in Reader a variety of places. On web, if navigate to the default Email section, your address will be in the right sidebar if there's no content (if there is content, you can click into the `?` menu in the bottom right of the right sidebar and select `Show getting started tips`). The same is true if you navigate to the `Feed` section. You can also click the blue `+` button in the bottom left and select `More import options...` to navigate to the [import page](https://read.readwise.io/add-to-library) and see your custom email addresses. On mobile, if you navigate to the `Settings` tab, you'll be able to find your custom email addresses listed. ## Why do I have two custom email addresses? Your Reader account has two custom emails: one to send things to your Library and one to send things to your Feed. You can find both email addresses in your account preferences. Your library email will be under [Add to Library](https://read.readwise.io/add-to-library) and will end with `@library.readwise.io`, while your feed email will be under [Add to Feed](https://read.readwise.io/add-to-feed) and will end with `@feed.readwise.io`. We recommend using the library email address when sending one-off documents to your Reader account that you know you want to read, and to use the feed email when setting up auto-forwarding rules or subscribing directly to newsletters. ## Can I change my custom Reader email address to make it easier to remember? To customize your Reader email address, go to the [Add to Library page](https://read.readwise.io/add-to-library) and click `Personalize email addresses`. Keep in mind that your chosen email must be unique to your account and that using a non-random string may increase the chance of your Reader email receiving spam. **Note:** Any newsletters you subscribed to using your randomly assigned custom email will still appear in your account. However, if you personalize your email more than once, only your current personalized email will work. Any personalized emails prior to your current one are effectively deleted and will no longer be able to receive mail. ## How do I forward emails to Reader? Once you have your custom Reader email address, you can send any email to that address to have it appear in your Reader Feed or Library, respectively. This includes one-off emails, subscribing directly to newsletters with the custom address, or subscribing to newsletters using your personal address and auto-forwarding. Because it's a random string of characters, you don't need to whitelist any sending addresses. ## How do I unsubscribe from an email newsletter subscribed to my Reader custom email address? You can unsubscribe from an email newsletter in Reader the same way you would in your email client: by opening the email, navigating to the bottom, and finding an unsubscribe link. On web, you can also use the `Unsubscribe` button that appears in the right sidebar of subscribed emails. ## What happens when I click Reader's "Unsubscribe" button for an email? Reader can't actually remove you from any external email lists, so instead it puts the sender on a list of blocked emails. This means that **any** email from that sender will be blocked, regardless of how it's being sent to Reader (e.g. directly subscribed or forwarded). If you'd like to stop receiving newsletters in Reader but would still like to be able to forward emails from that sender, we recommend using the newsletter's built-in unsubscribe option, which you can usually find at the bottom of the email content. Note that the newsletter's built-in unsubscribe button sometimes gets parsed out of Reader's clean text view. If you don't see the unsubscribe button for a particular email, try [switching to original view](#can-i-view-an-email-with-its-original-formatting-in-reader). If you've used Reader's unsubcribe button but later decide you'd like to receive emails from that sender again, reach out to us at [hello@readwise.io](mailto:hello@readwise.io) and we'll be happy to resubscribe you! (It's on our to-do list to see about adding this to Reader's UI, but at the moment there's no way to do it from inside your account.) No. The RSS feed technology was created with this sort of use-case in mind, so subscribing and unsubscribing from RSS feeds works much more like how you would probably expect it to. You can unsubscribe from a feed to remove it, then use the same button to resubscribe at any time. ## How do I find email newsletters that I'm subscribed to in Reader? Currently, there is no way to find a list of all email newsletters you're subscribed to inside Reader, but it's on our roadmap to detect newsletter subscriptions and add them to the `Manage feeds` section. ## How do I confirm auto-forwarding from Gmail to my custom Reader email address? If you set up auto-forwarding from Gmail to your custom Reader email address, Reader will automatically "click" the link contained inside that email to confirm. If Gmail is still asking for a confirmation code to complete the auto-forwarding setup, Reader will email your Gmail address automatically with the code, which you can then enter into the auto-forwarding setup. ## How can I subscribe to Substack newsletters in Reader? If the newsletter is free, you can subscribe via the RSS feed. The easiest way is to save any article from the Substack feed you’d like to subscribe to, then use the `Subscribe` button in the Info panel to add the feed. You can also add the feed manually in the **Add to Feed** dialogue (`shift + A`) using the URL generated by Substack, which will usually be `[newsletter-name].substack.com/feed/`, or by searching for the newsletter feed name. For newsletters with paid content, the RSS feed will only display the first paragraph or two. To get the full content, you can open the original article by pressing `O` on your keyboard. You can then save the page using the browser extension, which will bring the full content into your Reader Library. Alternatively, you can set up a forwarding rule to forward the paid newsletters from your email to Reader by using [your custom email address](https://read.readwise.io/add-to-feed). ## Can I view an email with its original formatting in Reader? By default, Reader parses email content into a clean, readable text view. However, if you would prefer to see the email the original sender's chosen styles, you can switch to "original view". On web or in the desktop app, click the document icon in the top left corner. On mobile, tap into the **More actions** (...) menu, then select **View original**. ## How can I set the default view (text or original) for a particular email newsletter? Reader will remember whichever view you used last for a particular email sender. So if you previously switched to original view, it will open any other emails from that sender in original view as well. To change that sender's default back to text view, you can open an email from them and switch to text view. Then, any time you open emails from them in the future it should display in Reader's clean text view. This setting is saved to your account, not to your current device, so your view preferences for email senders will persist across devices and app sessions. Exporting ## How do I export my highlights to my note-taking app such as Notion, Obsidian, Roam Research, Logseq, Evernote, etc? Reader is innately connected to Readwise so every highlight you make in Reader will instantly sync with Readwise and then from Readwise to your note-taking apps. Over time, we intend to create a unified experience within Reader. ## Can I export all of the highlights from a document at once? To copy or download all of a document’s highlights on web, go into the Notebook tab of the right sidebar and click `Export` at the very bottom. - *Copy to clipboard:* Copies all of the notes and highlights as plain text for you to paste into any text editing app. (`Shift + Option + C`) - *Download annotations:* Downloads the document’s notes and highlights as a markdown file. (`Shift + Option + D`) - *Edit export file:* Opens the export template for the markdown template. This is editable and uses the Jinja2 templating language. (If you’ve ever [customized an export from Readwise to a note-taking app like Obsidian](/readwise/docs/exporting-highlights/obsidian#how-can-i-customize-the-readwise-to-obsidian-export) or LogSeq, this should be familiar!) On mobile, tap the `i` in the top right, then tap into the **Notebook** tab. At the bottom, tap the **Export** button. - *Copy to clipboard:* Copies all of the notes and highlights as plain text for you to paste into any text editing app. - *Share highlights as .md:* Generates a markdown file that you can save to your Files or share to another app. ## How do I generate a CSV of all my saved documents? You can download a CSV of all your documents by entering the Command Palette and searching for `Generate CSV export` or by going to your [Account profile page](https://read.readwise.io/profile) and selecting `Export Library as CSV` in the **Export account data** section. ## How do I generate an OPML of all my subscribed Feeds? You can download an OPML of all your documents by entering the Command Palette and searching for `Generate OPML export` or by going to your [Account profile page](https://read.readwise.io/profile) and selecting `Export Feeds as OPML` in the **Export account data** section. ## How can I export the full content of everything I've saved to Reader? You can download a ZIP file containing all of the files you’ve uploaded, as well as the full content of any articles you've saved from the web, by opening the Command Palette and searching for `Generate download` or by going to your [Account profile page](https://read.readwise.io/profile) and selecting `Export Full Files and Articles` in the **Export account data** section. Once Reader has generated the file, you’ll receive an email with the download link. ## How do I export the full content of an article with my annotations? To save a local copy of an article, you can download a clean copy of the document with all of your highlights and notes by pressing `Cmd/Ctrl + P` or by opening the `...` menu and selecting `Print with annotations`. You can use this option to save the document to your computer as a PDF for local storage. ## How can I send documents to my Kindle device? To send documents from Reader to Kindle, you first need to add your Kindle email to the [Integrations page](https://read.readwise.io/integrations) of your account. 1. Find and copy your Reader account's sending email on the [integrations settings page](https://read.readwise.io/integrations). (If you don't see this, you may need to click "" above the Kindle device email field.) 2. Visit [Amazon's preferences page](https://www.amazon.com/hz/mycd/myx#/home/settings/pdoc#pdoc), and scroll to "Personal Document Settings." 3. Add the Reader email from step ➊ to the "Approved Personal Document E-mail List." 4. Copy one of your Kindle account's email addresses in "Send-to-Kindle E-Mail Settings" and paste it into the Reader settings. To avoid needing to manually approve each document via a confirmation email, be sure to choose an address with a random ID at the end (e.g. `username_Hyxi4vi@kindle.com` instead of `username@kindle.com`). To send an automatically scheduled digest of new documents to your Kindle, click the toggle beside *Automatic Delivery*, then select either **daily** or **weekly**. (All digests are sent at midnight Eastern Standard Time and weekly digests are sent on Fridays. If there are no new items, a digest will not be delivered.) To manually send an individual document to your Kindle, click the `Send to Kindle` option in the actions menu (`...`) of the document. ## What documents will be sent to my Kindle in the automatic digest? If your Kindle digest is set up to be sent *daily*, it will include any documents that have been added to your Library in the past 24 hours. If your Kindle digest is set up to be sent *weekly*, it will include any documents that have been added to your Library in the past 7 days. Note that this does not include new *Feed* documents—you'll need to move those documents to your Library (inbox/later) for them to be included in the digest. Feed (RSS, Newsletters, Twitter Digests) ## How do I group or organize RSS feeds into folders? You organize all content in Reader (including RSS feeds) using a concept called Filtered Views. Filtered Views are extremely powerful, enabling you to create all kinds of dynamic subsets of your documents, but you can quickly add RSS feeds to groups on the [Manage feeds](https://read.readwise.io/feed/sources) section within Feed. For a more detailed overview of getting the most out of your Feed section, see our [Reader 201 walkthrough video on Feeds](https://readwise.io/reader201). For a more detailed overview of getting the most out of Filtered Views, see our [Reader 202 walkthrough video on Filtered Views](https://readwise.io/reader202). ## How do I mark items as seen simply while scrolling my Feed? Right now, Reader doesn't have a way to automatically mark items as seen as you scroll your Feed list like other RSS apps you may have used in the past. That said, there is a special Feed UI on mobile that will display documents as cards that will be marked as seen as you scroll through them. You can access this option by tapping the icon that looks like a stack of cards. In addition, you can customize your swipes on mobile to include an action that marks all items above as seen so you can scroll and then, once done, mark all items you've scrolled past with a single action. ## I added an RSS feed which comes in with incomplete articles to Reader. How do I get the full content of incomplete RSS feeds? Some RSS feed creators include partial rather than full content in their RSS feed (e.g. just a summary or first paragraph rather than the whole article). If you notice this, you can "Report partial feed content" by pulling open the Command Palette (`Cmd/Ctrl + K`) and searching for this option. This will cause Reader to forcefully parse the URL of the RSS entry going forward rather than relying on the feed author to include the proper content. This can also help when the articles are missing metadata, such as the author's name or a thumbnail image. ## How do I quickly pull up all articles from a particular RSS feed? You can quickly view all articles from a particular RSS feed by clicking the `Source` metadata in the right sidebar on mobile or on web. This will take you to a Filtered View of that particular RSS feed. Filtered Views ## What are Filtered Views? The core organizational concept in Reader is what we call a Filtered View. A Filtered View is similar to a query-based search in Gmail like `title:Getting Started` or `author:Paul Graham`. Basically, you can think of your Reader account as one flat database of documents and Filtered Views enable you to "filter" those documents based on a variety of different parameters. Every time you click an author name or tag or RSS source in the Reader user interface to see all documents by that author or with that tag or from that RSS source, you are just creating a Filtered View on that parameter. The best way to learn how to use Filtered Views is to watch our [Reader 202 walkthrough video on Filtered Views](https://readwise.io/reader202). You can reference all the different parameters that can be used with Filtered Views (including examples) from this [Filtered View guide](/reader/guides/filtering/syntax-guide). ## How do I create groups of documents? You can create groups of documents using Filtered Views. Filtered Views enable all kinds of powerful filtering of your documents, but the simplest way to group documents is to tag each document with your desired group name. You can then click this tag to generate a Filtered View for all documents having that tag. You can then save the Filtered View and optionally pin it to the sidebar. ## How do I create a custom filtered view? Reader comes with a few default filtered views—like “Recently added” and “Quick reads”, but you can also make your own to better fit your personal needs or preferences. ### Filter by tag or feed source On your [Manage feeds](https://read.readwise.io/feed/sources) and [Manage tags](https://read.readwise.io/tags) pages, you can use the Views column to assign tags and feeds to specific views. On mobile, you can create a new filtered view from a tag by tapping the **Save** button in the top right of the tag view. ### Filter by author In the Info tab of any document, you can click the name of the author to bring up a filtered view of all the documents by that author in your library. You can then name and save the view for easier future access. ### Filter by query You can create filtered views within Reader that will automatically group various sources together based on the query. To do so, click into `Manage filtered views`, then click the `Add filtered view` button in the top right. Filtered view queries can use a variety of different properties (you can view a full list in our [Reader Filtering Guide](/reader/guides/filtering/syntax-guide)), including tags and source domains. For example, if you had a tag called "football" and a blog feed from footballnews.com, you could use the following query to group them together in a single saved view: `tag:football OR (feed:true AND domain:footballnews)` This would include any articles, videos, or other documents saved to your library which you've tagged "football," as well as any new documents that come into your feed from footballnews.com. ## How do I create a query-based filtered view on mobile? To create a filtered view, tap into the Search tab of the Reader app and then tap the `+` icon. This will ask you to enter a query for the new view. Type in your query and then `Show` to see the filter. To save it for future use, tap `Save` and give it a name. ## How do I put an icon in front of a filtered view? When saving a Filtered View, if you input an emoji as the first character of the saved name, this emoji will be used as a de facto icon in the left sidebar of the Reader app. ## Can I see how many items are in a filtered view? You can enable a "count badge" for any saved Filtered View. The badge will appear on top of the icon in the left sidebar. You can toggle on the count bar by clicking the down arrow next to the view's name in the top header. ## How do I use filtered views? The best way to learn how to use Filtered Views is to watch our [Reader 202 walkthrough video on Filtered Views](https://readwise.io/reader202). You can reference all the different parameters that can be used with Filtered Views (including examples) from this [Filtered View guide](/reader/guides/filtering/syntax-guide). ## How can I see all my tags? You can see all your tags from the [Manage tags section](https://read.readwise.io/tags) visible in the top header of the `Library` section of Reader. ## What does it mean to "split" a view? Splitting a view will add tabs within the view that automatically sort documents based on their status. Splitting by **Location** will use the Inbox/Later/Archive tabs from the main Library view (or Later/Shortlist/Archive, depending on your library configuration). Splitting by **Seen** will use the Unseen/Seen tabs from the main Feed view. On web, you can change the split of any filtered view by clicking into the caret dropdown beside the title of the view, or by pressing `\` on your keyboard. On mobile, you can do this from the actions menu (`...`) of the view page. ## How do I add a filtered view to my Home page? To add a filtered view to your Home page on web, click **Configure** in the top right and check the box to the left of the view you want to add. To change the order of the views, click and drag the dots to the right of a views name. To remove a view, simply uncheck the box beside its name. On mobile, tap the configure icon in the top right, then tap the name of the view you'd like to add. Tap and drag the dots to the right of the view's name to move it up or down in the list. To remove a view, tap the red minus icon beside its name. Ghostreader ## How do I enable auto-summarization or auto-tagging? To use the customized Ghostreader prompt, you'll need to first make sure that auto-summarization or auto-tagging prompt is enabled on your [Ghostreader preferences page](https://read.readwise.io/preferences/ghostreader). ## Why are items in my Feed not auto-summarized? By default, Ghostreader will only automatically summarize documents that you manually save to your account using the browser extension, mobile app share sheet, and so on. Documents in your Feed will not be summarized unless you invoke Ghostreader manually. You can, however, enable auto-summarization on Feed documents by [adding your own OpenAI API key](https://read.readwise.io/integrations). Once you add your key, your Feed documents will start being automatically summarized and will use your API credits. ## How can I customize my Ghostreader prompts? You can customize any Ghostreader prompt from the [Ghostreader preferences page](https://read.readwise.io/preferences/ghostreader) by clicking the *Edit prompt* text that appears on hover. Note that any of your custom prompts can be used on mobile, but you'll need to do the actual customization via the web version of Reader. Check out our [in-depth customization guide](/reader/guides/ghostreader/custom-prompts) or get inspiration from our [curated Prompt Library](/reader/guides/ghostreader/prompt-library)! ## How can I use a different GPT model? The default AI model (included with your Readwise subscription) is . However, if you've entered your own OpenAI API key, you can change the AI model on any [custom Ghostreader prompts](https://read.readwise.io/preferences/ghostreader) to GPT-5, GPT-4.1, o3, or o4-mini. You can find the AI model dropdown in the bottom left corner: ## Do I need an OpenAI API key to enable auto-summarization of documents? No. Auto-summarization of documents saved to your library is included as part of your Readwise subscription. However, if you would like to enable auto-summarization of feed documents or use a better AI model than , you will need to add your own key. ## What happens if I add my own OpenAI API key? If you have your OpenAI key set up in the integration settings, it will automatically summarize all the docs coming into your feed (newsletters, RSS subscriptions, etc) in addition to the automatic summarizing of documents saved to your library. By default, the auto-summarization of library items will use and will not use your OpenAI key. To change this, you can set the model per prompt on the [Ghostreader customization page](https://read.readwise.io/preferences/ghostreader). If you choose a higher-tier model, it will then use your OpenAI key. ## Why do my automatic prompts sometimes turn themselves off or stop working? The most common cause of this behavior is that the OpenAI API key associated with your account doesn't have enough funds to cover the request. If you log into OpenAI's website and check your billing details, you should be able to see your [usage](https://platform.openai.com/usage) and [plan limits](https://platform.openai.com/settings/organization/limits) there. If your API key isn't funded, you can switch your Ghostreader model to , which is included with your Reader subscription, or you can fund the OpenAI API key on their end. Once you've added funds to your OpenAI account, you can turn the automatic prompts back on from the [Ghostreader preferences page](https://read.readwise.io/preferences/ghostreader) ## How can I turn off the automatic summarizing or automatic tagging Ghostreader prompts? You can turn off any or all of the Ghostreader prompts from the [preferences page](https://read.readwise.io/preferences/ghostreader) by clicking the toggle next to each one. Turning off the summary prompt will stop it from automatically summarizing your documents or appearing in the command palette menu. ## Can I apply the auto-summary or auto-tag prompts to existing documents in my account? The automatic prompts don't work retroactively, so only documents that you add after turning the prompt on will be automatically summarized or tagged. However, you can manually run the summary prompt on a document by using the Ghostreader icon in the **Info** panel on web or the **Summarize** button on mobile. ## Can OpenAI see all of my Reader documents? Is my data being used to train their AI models? No. The OpenAI API only receives your documents when you invoke a Ghostreader action on them, and even then it only sends whatever part of the document is specified in the prompt. For example, if you invoke the "Define word" prompt on a highlighted word, that single word is the only part of the document that OpenAI would see. Additionally, the OpenAI API allows users to opt out of their content being used for training data, which we have done. Nothing that OpenAI receives from Reader is allowed to be saved to their servers or used to train their AI models. ## I have a subscription to ChatGPT Plus. Can I connect that to Reader to access higher tier GPT models? The ChatGPT Plus subscription actually doesn't include access to their API. Entering an API key from an account that only has the Plus plan will cause the prompts to fail. If you would like to use your own key with Ghostreader, you'll need to pay for access to the OpenAI API. You can learn more on this page of their website: [https://openai.com/api/pricing/](https://openai.com/api/pricing/) Highlights, Tags, and Notes ## Can I highlight and/or make annotations using the keyboard? Reader on web is designed with a "keyboard-based reading experience", enabling you to read, navigate, highlight, tag, and annotate without using your mouse. You can navigate the document using the up or down arrows, which moves the blue focus indicator paragraph-by-paragraph. If you want to highlight a paragraph, tap `H`. Once highlighted, you can tap `T` to tag the highlight or `N` to add a note. If you have a wide enough screen—or hide the sidebars using `[` and `]`—these annotations (notes and tags) will appear in the right margin. ## What is auto-highlighting? Auto-highlighting is a feature that converts any selected text into a highlight immediately. It's a great way to spare yourself an extra click every time you want to make a highlight, and to better simulate the experience of highlighting analog documents with a marker or pen. That said, if you often select text with the purpose of copying it or just generally prefer to select text first and then decide if you want to save it as a highlight, you can disable auto-highlighting. On web, you can press `Shift + H` on your keyboard or use the Command Palette (`Cmd/Ctrl + K`) to search for `Toggle auto-highlighting`. On mobile, tap into the `...` menu in the bottom right turn off the `Toggle autohighlighting` option. ## How do I highlight more than one paragraph or less than one paragraph using keyboard shortcuts? Right now, keyboard-based highlighting and annotating is limited to the paragraph level, but it's on our roadmap to make this finer grained so you can highlight less than or more than a single paragraph. ## How do I highlight images in Reader? Reader enables you to highlight images while reading. These images will carry over into Readwise and even into your note-taking app if you export your highlights. To highlight images, simply focus the image and use the keyboard shortcut `H` or select it with the mouse (plus any desired text) on web, or select it plus any desired text on mobile. ## How do I use the browser extension to highlight the open web? Once you've activated the Reader extension on a particular web page, you can begin highlighting text and images on the site itself. You might do this for a couple reasons: First, although most users generally prefer the clean, distraction-free reading experience of the Reader app, there are some exceptions where the original site is more pleasing. In these cases, you can honor the original author and read what they wrote in the manner they intended. Second, although Reader's parsing already exceeds Instapaper and Pocket in our benchmark tests, we'll never be able to parse 100% of the internet 100% perfectly. HTML and CSS are just too flexible. The web highlighter is an exception handler. Third, sometimes you'll find yourself reading an article wanting to take a highlight but not wanting to break your flow. Just activate the highlighter, make your highlight, and keep reading. ## Will highlights made using the Reader browser extension show up in the Reader apps and vice versa? Any highlight you make on the native web using the browser extension will typically sync with Reader and vice versa. Most of the time, these highlights will appear in both places. In other words, if you highlight the open web using the Reader browser extension, this highlight will typically appear on top of the clean article in the Reader apps; conversely, if you highlight the clean article in the Reader app, this highlight will typically appear overlaid on the open web. ## Sometimes highlights that I took using the browser extension do not appear overlaid in the Reader app. How do I get highlights made using the browser extension to appear in the Reader web app? Any highlight you make on the native web using the browser extension will *typically* sync with Reader (and from Reader to Readwise) and vice versa. That said, there are some exceptions when the position of highlight made in one platform cannot be matched with sufficient confidence in the other platform. In these rare cases, the app will notify you that it failed to match and those highlights will still be visible in the Notebook tab of the Reader web app. ## How do I add a note to the document as opposed to just a highlight? On web, you can add a document note by opening the Notebook tab in the right sidebar (or using the keyboard shortcut `Shift + N`). On mobile, tap the `i` button in the top right and then tap into the Notebook tab. Document notes don't appear with your highlights in Readwise 1.0 yet, but you can still export them to any note-taking app that allows you to customize the export template (e.g. Obsidian, Roam, etc). ## How do I highlight in multiple colors? We haven't yet added multiple highlight colors. If you use highlight colors as a kind of workflow or system (as opposed to as a visual affordance), you might try using highlight tags instead. ## How do I use the Apple Pencil with Reader on my iPad? We haven't yet had an opportunity to optimize the iOS for iPad specifically, and that includes optimizing for the Apple Pencil. That said, we recognize the iPad and Pencil combo is one of the most powerful reading for betterment platforms out there, so we look forward to focusing on this in the future. ## Do document tags apply to highlight tags and vice versa? Currently, there is no inheritance between highlight tags and document tags. In other words, if you tag a document, that tag will *not* apply to highlights in the document. Conversely, if you tag a highlight that tag will *not* apply to the document. ## What’s the difference between document tags and highlight tags? Document tags are applied to the entire document by pressing `T` while in list view or `Shift + T` in document view. These tags are used to organize content within Reader, pull documents into filtered views, and identify topics at a glance from list view. Highlight tags are applied directly to highlights by pressing `T` while a highlight is selected in document view. These tags aren’t currently searchable within Reader, but they sync to Readwise with the highlight. In Reader, you can find a the list of tags of all the tags you’ve used on the [Manage Tags](https://read.readwise.io/tags) page, which can be accessed from top of the Library **view or via the `Manage tags` option in the sidebar on web. On mobile, you can find your tags via Views > Tags. ## How do I find my tagged highlights? Right now we are deferring most highlight-based workflows to Readwise, so you can find your tagged highlights in Readwise here: https://readwise.io/tags. Over time, we intend to create a unified experience between Readwise and Reader in Reader. ## How do I add multiple highlight tags or document tags in a row without closing the dialog? By default, when you hit `T` or `Shift + T` to open the tag dialog, input your tag, and then hit `Enter` to add, the dialog will close. If you want the dialog to stay open after inputting a tag so you can add more, hit `Cmd/Ctrl + Enter` instead. ## How do I insert a line break into a highlight note? By default, when you hit `Enter` inside the highlight note field on web, it will save the note. If you want to insert a line break, hit `Shift + Enter` instead. ## How do I add a note when saving a document to Reader? When saving a document using the browser extension, click the speech bubble icon in the bar that appears once the document has been saved. When saving from the mobile share sheet, tap the speech bubble icon in the bottom center of the save screen. ## How do I copy text or highlights to the clipboard? You can copy a highlight's text to your clipboard by selecting the highlight, tapping the "more menu" icon (`...`), and selecting `Copy text`. If you have autohighlighting disabled, you can also copy selected text to the clipboard this way. If you have autohighlighting enabled, you can hold down `Alt` (on Windows) or `Option` (on Mac) to temporarily disable autohighlighting and select text. Finally, you can quickly use the keyboard shortcut `Cmd/Ctrl + C` on web to copy the focused paragraph or focused to clipboard. ## How do I edit or adjust the starting and ending points of a highlight? To adjust the boundaries of an existing highlight, click (or tap) and drag the handle that appears at the beginning or end of the highlighted passage. You can also use this method to *merge* disparate highlights into a single highlight. ## How do I quickly pull up all articles with a particular document tag? You can quickly pull up all documents with a particular document a couple different ways. First, you can always tap a document tag wherever it's shown in the user interface to navigate to a filtered view of that document tag. Second, you can go to the `Manage tags` page from the `Library` on web or you can click on `Views` on mobile and choose `Tags`. Finally, you can create a filtered view by tapping `Shift + F` on web and entering `tag:[tag-name]` (replace `[tag-name]` with the exact name of your tag). ## How do I find a list of my Readwise highlight tags inside Reader? Currently, you'll only see tags used within Reader inside Reader as opposed to tags already existing inside Readwise. Over time, we intend to create a unified Readwise and Reader experience within Reader. ## How do I select multiple items to perform actions in bulk? Currently, Reader does not have a multiselect option enabling you to manually select more than one document in a particular list view. That said, Reader does have a Bulk Action (`Shift + B`) option enabling you to perform actions on every document in the list in one fell swoop. Combined with filtering (`Shift + F`, described above), you can often achieve the desired outcome of multiselection with Bulk Actions. Importing Content to Reader ## How do I import my Instapaper articles to Reader? If you have Instapaper connected to Readwise, any articles you've saved previously will automatically import to Reader. You can connect Instapaper within Reader by following [this link](https://read.readwise.io/integrations). Any articles that were archived inside Instapaper will appear inside your Archive in Reader; the ten most recently saved items not archived will appear inside your Inbox in Reader; everything else will go in Later. ## It seems some of my Instapaper articles are missing. How do I make sure ALL my Instapaper articles imported? If it looks like you're missing Instapaper articles within Reader, first note that any articles that were archived inside Instapaper will appear inside your Archive in Reader; the ten most recently saved items not archived will appear inside your Inbox in Reader; everything else will go in Later. If you've checked those places and still don't find the articles you're looking for, it's possible you might be hitting an Instapaper API export bug which caps the number of items export at 500. To get around this, you can download a CSV export of your Instapaper articles ([Settings](https://www.instapaper.com/user) > **Export** > **Download .CSV file**) and then upload those at [read.readwise.io/add-to-library](http://read.readwise.io/add-to-library). Note that some items are considered “private content” by Instapaper and are unavailable to third parties. This includes things like emails forwarded to your Instapaper account. You’ll be able to see these articles in the CSV export (the URLs will start with `instapaper-private://` ), but since the document is kept private by Instapaper, Reader won’t be able to import them. ## How do I import my Matter articles to Reader? You can import your Matter articles to Reader by generating an export inside the Matter app, which will send you an email with a link to download your data, and forwarding this email to [read@readwise.io](mailto:read@readwise.io). Reader will automatically follow the link and import your previously saved documents. ## How do I import documents from Raindrop.io? You can export your bookmarks from Raindrop.io [as a CSV](https://help.raindrop.io/export/), then upload that CSV to Reader via the [Add to Library page](https://read.readwise.io/add-to-library), by pressing `U` on your keyboard, or by dragging and dropping the file from your computer. Note that you may need to edit the CSV to ensure it imports correctly—the CSV should have a column titled "URL" (or "Url" or "url") that contains all of the links. Optionally, you can also include a "Title" column that contains the title of each document. ## How do I bulk import articles? To bulk import documents to Reader, you’ll need to have a CSV file containing all of the URLs you want to add. To ensure they import correctly, the CSV should have a column titled "URL" (or "Url" or "url") that contains all of the links. Optionally, you can also include a "Title" column that contains the title of each document. Upload the CSV file by going to the [import page](https://read.readwise.io/add-to-library) and using the `Upload file` option, pressing `U` on your keyboard, or dragging and dropping the file from your computer onto the Reader window. Miscellaneous ## How do I request a feature, make a suggestion, or report a bug regarding Reader? You can leave feedback from within Reader by using the Command Palette (`Cmd/Ctrl + K`) on web and typing "feedback" or by tapping the "more menu" icon (`...`) and choosing `Support and feedback` on mobile. ## I have highlights in Readwise that I can't find in Reader. Where do I find all my previous highlights? Right now, you can think of Reader as another reading app that integrates with Readwse (albeit seamlessly). Every highlight you make in Reader instantly syncs with Readwise and then from Readwise to your note-taking apps. This integration, however, does not go the opposite direction. In other words, you won't find your Kindle highlights inside of Reader. Over time, we intend to create a unified experience within Reader. ## How do I find out about the Reader public API? You can find the Reader public API documentation at [readwise.io/reader_api](https://readwise.io/reader_api). If you have a use case or endpoint you'd like us to support, please don't hesitate to reach out! ## I have multiple Readwise-related browser extensions installed. Do I need them all? Browser extensions pose a constant security threat so we maintain multiple extensions with different levels of access. The original Readwise extension (white background) automatically syncs your Kindle highlights to Readwise. If you no longer use Kindle, you can delete this extension. Otherwise, you can keep it installed and unpinned as it does its work in the background. The Readwise export extension is used to authenticate Readwise with your Roam Research or Notion account. If you no longer use Roam or Notion, you can delete this extension. Finally, the Reader extension (yellow) is used to save documents to Reader and optionally enable highlighting of the open web. ## Will I lose the Reader highlights saved in Readwise if I delete my Reader articles? Yes. The two apps share a database and all edits to highlights, notes, or the original article will sync seamlessly from Reader to Readwise, including deletion. We recommend that you store any documents you've annotated in your Reader archive, to maintain searchability and preserve their highlights. ## How do I find a roadmap or list of known issues so I don't report something you're already aware of or planning to build? Our Reader beta newsletter is a great resource to get some insight into what we're working on (you can even [subscribe via RSS](https://readwise-community.ghost.io/2defd8e965b87487102ef0c6db1880/rss/) to get the updates directly in Reader!). Also feel free to reach out via the in-app feedback or email (hello@readwise.io) to ask us any specific question. In general, we don't mind receiving duplicate feedback because it helps us prioritize. ## Where can I see my tagged highlights? Right now we are deferring most highlight-based workflows to Readwise, so you can find your tagged highlights in Readwise here: [https://readwise.io/tags](https://readwise.io/tags). Eventually, we plan to create a place in Reader where you can view your highlights by tag. Navigation ## How do I customize the sections in the left sidebar of the web app? The sections in the left sidebar are just defaults and fully customizable, except for Home, Library, Feed, and Search (those are fixed). You can reorder the views by dragging and dropping, unpin the views from the sidebar by clicking the down caret at the top of the view, and pin new views from the [Manage views](https://read.readwise.io/views) page. ## How do I customize the swipe actions in the Reader mobile app? You can customize the swipe actions in the Reader mobile app by navigating to the `Account` tab in the bottom right and choosing `Customize swipes`. ## Can I auto-advance to the next document when I perform an action (e.g. moving the current document to the Archive)? By default, if you move a document while in its reading view, you'll be returned to previous document list. You can toggle this behavior to instead auto-advance by looking for "Toggle auto-advance" in the Command Palette on web or switching the setting in the Settings panel on mobile. ## How do I find a list of keyboard shortcuts? Reader on web is fully keyboard shortcut driven, including while reading documents. Most keyboard shortcuts are shown in hover tooltips in the user interface, but you can additionally open the Command Palette (`Cmd/Ctrl + K`) and search for an action to find its or use the `?` shortcut to pull up a reference guide. ## How can I customize the keyboard shortcuts? You can edit the default keyboard shortcuts to your preference by navigating to `Account settings` > `Preferences` > [`Customize`](https://read.readwise.io/preferences/shortcuts). ## Some keyboard shortcuts are not working on my keyboard such as `[` and `]` to open or hide the side panels. How do I customize my keyboard shortcuts? Some non-North American keyboard layouts (such as German, Swedish, Dutch, Norwegian, Catalonian, etc) may not be optimized for the default Reader shortcuts. You can customize these shortcuts to your preference by navigating to `Account settings` > `Preferences` > [`Customize`](https://read.readwise.io/preferences/shortcuts). ## How do I use keyboard shortcuts in the iPad app? We haven't yet had an opportunity to optimize the iOS for iPad yet, but it's on our roadmap. In the meantime, if you use your iPad with a keyboard as a quasi-laptop, we recommed using Reader inside the browser web app ([read.readwise.io](https://readwise.io)) rather than the native app. ## How do I dismiss the nudge to use the mobile app when using read.readwise.io in Safari on iPad? Whenever an iOS app has deeplinking enabled (which is what allows Reader to open links from external sources), Apple will detect the link pattern in Safari and display a banner nudging you to use the native app rather than the web app. There are a couple of workarounds to permanently hide this banner: 1. Delete the app from your device if you only ever plan to use Reader in the browser 2. Turn on `Hide and require Face ID` in the app options by long-pressing the home screen icon Once you've hidden the app, the banner should no longer appear at the top of the Safari page. ## How do I change my settings to keep the sidebars hidden at all times? You can change the default sidebar setting upon entering the reading view by opening the Command Palette and searching for `Hide side panels by default in reading view`. Alternatively, you can go to the [Preferences page](https://read.readwise.io/preferences) and use the **Side panel visibility by default** dropdown to select which of the panels you would like to be displayed by default when you open a document. ## Can I bump an old document back to the top of my document list? Yes! To do this, you can use the **Bump to top** option in the actions menu (`...`) of any document (or press `B` on your keyboard with the document selected). Note that bumped documents will only appear at the top while the list view is sorted by `Date moved`. Any other sorting option (date published, author, progress, etc.) will still place the document according to its metadata for that sorting category. Parsing ## An article I saved is missing content such text, images, videos, or tables. How do I fix missing content in saved articles? We built a benchmark test we run against the top 200 articles saved to Readwise from Instapaper and Pocket and Reader already parses them better, but it's still not possible to parse the open web 100% correct 100% of the time. If you save documents using the browser extensions on web or using the Safari browser and share sheet on iOS, these methods will generally result in the highest quality parsing because Reader is getting the full document content rather than the naked URL. If the document is still missing content (such as missing images), you should report those documents through the feedback section of the Reader app and selecting `Report document parsing issue`. (Make sure the app is open to the document you're reporting when you do this to ensure that we receive the correct metadata in your report!)We have an engineer dedicated to fixing parsing tickets and we are constantly upgrading our parsing. ## An article I saved includes non-core content such as an advertisement. How do I fix extra content in saved articles? We built a benchmark test we run against the top 200 articles saved to Readwise from Instapaper and Pocket and Reader already parses them better, but it's still not possible to parse the open web 100% correct 100% of the time. If you save documents using the browser extensions on web or using the Safari browser and share sheet on iOS, these methods will generally result in the highest quality parsing because Reader is getting the full document content rather than the naked URL. If the document still has extraneous content (such as inline advertisements), you should report those documents through the feedback section of the Reader app and selecting `Report document parsing issue`. (Make sure the app is open to the document you're reporting when you do this to ensure that we receive the correct metadata in your report!) We have an engineer dedicated to fixing parsing tickets and we are constantly upgrading our parsing. ## How do I save articles behind paywalls? If you save documents using the browser extensions on web or using the Safari browser and share sheet on iOS, paywalled document should be saved without issue. ## I noticed that articles from large news sites such as NYT, Washington Post, Medium, and so on do not contain the full content. How do I save the full content of an article behind a paywall? If you save documents using the browser extensions on web or using the Safari browser and share sheet on iOS, paywalled documents should be saved without issue. Note that if you save directly from another app on iOS (e.g. NYTimes, Medium, etc), this may result in partial parsing because Reader can only get the naked URL and those apps aggressively block read-it-later apps. If you're seeing documents come over with partial content from a source in your Feed, you can quickly open the original article in your browser (by pressing `O` on your keyboard or tapping `...` > `Open` on mobile), make sure you're logged into the site in question (e.g. NYT, Medium, etc), and then re-save the page using the browser extension or mobile share sheet. ## Will Reader store the content of my saved articles even if the original article is changed or removed from the web? Yes, saving an article to Reader parses the page and saves the content as-is. Reader will never try to re-parse previously saved content, so the version in your Reader library will always reflect the way you originally read it, and your highlights and notes will never lose their context. ## What if I want to manually refresh an article to reflect updates to the original? Since Reader intentionally stores the originally saved version to preserve highlight and note context, the only way to get an updated version of an article is to delete it from your library and re-save it. Note that this will also delete any highlights and notes associated with the document, in both Reader and Readwise. ## How does Reader detect duplicate content? Reader’s current de-duping logic will catch any documents that are saved multiple times with the same URL. If you re-save a URL, the document will be moved to the top of your Library and will feature a green dot in the upper left to indicate that you’ve saved it more than once. However, the current logic isn’t able to detect duplicate *content*, so saving the same document from slightly different URLs will result in the creation of a second version. This often happens when a URL contains tracking information or other additional parameters (e.g. `https://site-name.com/article-title?utm_source=rss-feed` vs `https://site-name.com/article-title`), and this is the primary reason that articles saved from a Feed source won’t be recognized as duplicates of the same articles saved from the original website. PDFs ## Sometimes PDFs have strange filenames. How do I change the name of a PDF? Reader uses the metadata contained inside the PDF to determine its filename, which was often improperly set or not set at all by the PDF file creator. When this happens, the title of the PDF may be strange or confusing. With that in mind, you can edit this metadata by selecting Edit Metadata (`Shift + M`) in the bottom right of the `Info` sidebar. You can edit other document-level metadata than just title, and you can do this on documents other than just PDFs. ## How do I edit metadata on mobile? While viewing a document, tap the `i` icon in the top right to open the `Info` sidebar. Then tap the `Edit metadata` button at the bottom. ## How do I zoom in or out on a PDF? On web, you can zoom in or out by using the `+` and `-` icons in the top of a PDF or the keyboard shortcuts `Ctrl/Cmd + -` `Ctrl/Cmd + +`. On mobile, you can pinch. ## How do I highlight images, tables, and figures in a PDF? You can use the "snapshotting" feature to save screenshots of a PDF as a highlight via the icon in the top left that looks like a square with a plus in the corner. Click the icon, then click and drag to select the area of the PDF you'd like to save. The selected area will be saved as an image in the document's Notebook. ## How do I download and/or export a highlighted PDF from Reader? You can download an annotated version of a PDF document by pressing `Shift + D` while viewing the document in the web app. The downloaded PDF will contain all of your highlights and highlight notes. ## How do I import highlights from a previously highlighted PDF to Reader? Currently, highlights made in another PDF app will not be recognized as proper highlights inside of Reader, but this is on our roadmap to add. ## How do I highlight across pages inside a PDF? Without reflowing the PDF into plain text, there is no way to highlight across PDF pages in any app that we're aware of. That said, you can use Readwise's "[inline concatenation](/reader/docs/faqs/action-tags#how-can-i-combine-two-disparate-pieces-of-text-into-a-single-highlight)" feature to combine two disjointed highlights when they're imported into Readwise and before they're exported to your note-taking app. ## How do I remove the random line breaks from highlights made in a PDF? The underlying text behind a PDF often has glitches that aren't visible on the rendered PDF that will appear in the highlights such as random line breaks. It's on our roadmap to clean this text automatically. In the meantime, you can edit your highlights in Readwise to remove the line breaks. ## How do I customize the appearance of a PDF while reading? Although customizing the actual PDF isn't possible within Reader, since PDFs are essentially just a series of images, you can switch the document to `Enhanced text mode` (via the `Text view` icon in the top left on web or `...` > `View as text` on mobile) to view a plain text version. While in this mode, you can use the same appearance customization available in any other document type via the `Aa` menu. ## I'm using dark mode and the images in my PDF look strange. How can I fix it? By default when using dark mode, PDFs have a color inversion filter applied to maintain the white-on-black color scheme. However, the filter can cause images to look pretty weird. If you'd prefer to turn it off, you can use the Command Palette (`Cmd/Ctrl + K`) to search for `Disable/enable PDF color inverting`. On mobile, you can navigate to the Settings page and toggle off the `Enable PDF color inverting` setting. ## Why can't I see my my highlights overlaid on the PDF? Highlights made while in the `text view` mode won't be visible in the default PDF view mode, and vice versa. However, any highlights you've made will always be visible in the document's **Notebook** panel. Untitled # 👻 Pro Tip ## Use Ghostreader to ask a question One of the coolest features of Reader is an AI reading assistant called _Ghostreader_. Ghostreader enables you to define terms, look up encyclopedia entries, simplify complex language, and much more, but one of its most powerful functions is asking a document a question. You can ask this FAQ your question using Ghostreader and likely find the answer you're looking for. Try it for yourself: * **On web**: Hit `Shift + G` to invoke Ghostreader at the document-level, select "Ask the document question", and input a specific question such as "How do I upload an OPML file?" or "Where do I find the Safari extension?" Nine times out of ten it should return what you're looking for! * **On mobile**: Tap the "..." icon in the lower right, tap the Ghostreader icon, and input a specific question such as "How do I save articles to Reader on iOS?" Searching ## How do I use full-text search to find a particular document? Reader has blazingly fast, full-text offline search that will search the full text of all your Library documents, as well as their titles and authors. On web, click the magnifying glass in the lower left or use the keyboard shortcut `/`, then type your search query. On mobile, tap **Search** in the app's bottom bar, then use the search field at the top of the page. Currently, documents in your Feed aren't indexed for full-text search. However, moving a document to your Library (inbox, later, shortlist, or archive) will allow it to be indexed and subsequently make it searchable. For a workaround to search your Feed documents, [check out the FAQ below](/reader/docs/faqs/searching#how-can-i-search-my-feed-documents)! ## How do I find specific text within a document? On web or in the desktop app, you can search for text within a document by using `cmd/ctrl + F`. On mobile, you can find text within a document by tapping into the actions menu (`...`) in the bottom right and choosing `Find in document`. ## How do I filter my full-text searches? Currently, filtered views and full-text search are distinct features. That said, it's on our roadmap to merge the two features and allow you to sort your search results or search within filtered views. ## How can I search my Feed documents? Currently, documents in the Feed aren't indexed for search. However, this is something we've had requested a number of times and we are considering adding the option in the future. In the meantime, you can include a text search of the title field within a filtered view. So, to search for a document in your Feed, you could use a query like this: ``` feed:true AND title__contains:"search term" ``` This won't search the full content of the article, but it can still be a useful way to find specific documents in your Feed. You can use this same tactic to search your Feed based on any other available query parameter, such as the document's author or source domain. Check out the [query syntax guide](/reader/guides/filtering/syntax-guide) for a full list of available parameters! Sharing ## How do I copy the URL of the document to my clipboard? You can copy the URL of the document to your clipboard a variety of different ways. On web, you can simply hit `Shift + C` to copy the URL of the current document or focused document to your clipboard. Alternatively, you can hit `O` to open the original document in a new tab or hover over the domain underneath the document title in the right sidebar to reveal a copy button. On mobile, you can enter the more menu (`...`) on any document and choose `Share` to copy the URL. ## How do I share an annotated article with a friend, colleague, or family member? You can share a clean, distraction free version of any document you highlighted and annotated in Reader (except for EPUBs or PDFs) by entering the more menu (`...`), choosing `Share`, and selecting `Enable public link` on web or `Share with annotations` on mobile. This will create a publicly viewable link with your highlights and annotations overlaid. For more on this feature including best practices, see [our Twitter thread](https://twitter.com/ReadwiseReader/status/1575286281562718210) announcing the share annotated documents feature. ## What is a Bundle and how can I create my own to share with friends? Bundles are themed collections of documents with pretty landing pages that can easily be shared with others. To create a bundle, first save a filtered view in the web app, click the down chevron next to its name, and select `Enable public link`. You can optionally add a description and a cover image to spice up the public landing page. When a recipient hits the `Open in Reader` call-to-action, a filtered view will be created in their account and populated with the documents you curated. ## How do I share highlights? You can share a beautified image of any highlight by clicking the `...` icon while hovering over the highlight in the Notebook panel, then selecting `Share highlight as image`. On mobile, you can do this by tapping the `i` icon in the top right, tapping into the Notebook tab, tapping the `...` beside a highlight, and selecting `Share as image`. ## How do I print an annotated copy of a document? You can print a clean copy of the document with all of your highlights by pressing `Cmd/Ctrl + P` or by opening the `...` menu and selecting `Print with annotations`. You can then use your browser's print dialogue to select a printer, customize the print options, and print the document. If the document is a PDF, you can use `Shift + D` (or `Download with annotations` from the `...` menu) to download a copy of the original file with your highlights overlaid onto it. Text-to-Speech (TTS) ## What is text-to-speech? Text-to-speech enables you to listen to virtually any document using the highest quality AI voices the big tech companies have to offer. Note that text-to-speech only works on PDFs in **text view**. You can still start TTS playback while in original PDF view, but doing so will automatically switch the document to text view. ## How do I start text-to-speech (TTS) partway through a document? You can start the TTS from your current scrolled position by tapping the play button in the top right corner. This will start the TTS at whichever paragraph is roughly centered on your screen when you start it. ## What's the difference between pausing and stopping the text-to-speech? You can pause the current playback using the pause button in the middle of the playback control bar. This will keep the playback control bar active and remember your place, so you can resume playback when you're ready. You can stop the TTS playback of the current document by tapping the square stop icon in the top right. This will cancel the TTS playback of the current document and hide the control bar. If you wish to resume the document after stopping TTS, you'll need to relocate where you ended and restart TTS playback using the play button. ## How do I highlight while listening to a document using text-to-speech? Can I triple tap my AirPods? Yes! To enable highlighting via triple tap, navigate to `Account settings` and then to `Headphone gestures`. By default, double tap is set to `Jump forward` and triple tap is set to `Jump backward`, but you can change either (or both) of these gestures to highlight instead. ## Sometimes the highlighted word misaligns from the spoken word while using text-to-speech. How do I make sure the highlighted word maps closer to the spoken word? Occasionally, the speech will disconnect from the highlighted text. We are constantly improving the accuracy of this feature. ## How do I use text-to-speech offline? Currently, it's not possible to use text-to-speech offline, but it's on our roadmap to add the ability to pre-download TTS before going offline. ## How do I use text-to-speech in the web app? You can start using text-to-speech in the web app by clicking the `Listen` button in the top right, above the document's title. You can also use the Command Palette (`cmd/ctrl + K`) to search for `tts` and start playback from any point in the document. ## Can I use keyboard shortcuts to control TTS? The web app has a full set of keyboard shortcuts to control TTS playback. `P` will play or pause, `shift + P` will stop playback, `left arrow` and `right arrow` will skip through the content, and `shift + up arrow` or `shift + down arrow` will control the volume. The built-in media controls on your keyboard will also work for this. To slow the speed of playback, press `,`, and to speed it up, press `.`. ## Does text-to-speech work on languages other than English? Yes! To change the language while listening, tap on the waveform icon at the left side of the TTS bar, then tap `View all languages` at the bottom of the menu. 📣 FAQs Update Log Changes and updates made to the Reader FAQ as the software evolves. ## July 3, 2025 - Add "bump to top" instructions to Navigation section - Explain how to change the iOS app icon - Add section for E-ink Devices - Add long-form reading mode to Appearance section - Update Ghostreader models ## March 6, 2025 - Expanded the "Ghostreader" section of the FAQs to include: - How to turn off automatic prompts - Our policy on sharing data with OpenAI - Troubleshooting for automatic prompts turning off or failing - Automatic prompt behavior for previously saved documents ## February 28, 2025 - Added instructions to export a document's highlights on mobile - Added instructions for sending documents to Kindle ## February 19, 2025 - Added "Videos" section - Moved "how to add YouTube videos" question from the Adding Content section to the new Videos section - Added FAQs for enhanced transcripts, changing the captions language, resizing video player, and other video options ## January 2, 2025 - Updated TTS instructions to match current app UI - Moved Substack instructions to Email Newsletters section ## October 10, 2024 - Updated documentation links to direct to [docs.readwise.io](https://docs.readwise.io) help center - Updated all mentions of GPT 3.5 to GPT 4o Mini - Minor tweaks to reflect updated UI ## April 11, 2024 - Added instructions for TTS on web - Added paged scroll to Appearance section ## March 25, 2024 - Updated instructions for bulk importing via CSV ## March 21, 2024 - Updated all mentions of GPT 3 to GPT 3.5 - Added instructions on how to print annotated documents - Clarified stopping vs pausing for TTS - Added instructions on creating Bundles from filtered views ## March 13, 2024 - Fixed the Twitter configuration instructions to correctly link to the integrations settings instead of the import settings ## February 23, 2024 - Updated pricing information ## January 31, 2024 - Fixed a typo in the paragraph about personalizing the custom Reader email - Fixed incorrect information about saving Twitter threads on mobile ## January 5, 2024 - Broke out importing instructions to a new section and added CSV format and Raindrop.io info - Added new section explaining action tags (headings, concatenation, etc) - Expanded Appearance 🕶️ section - Explained Reader's de-duping logic - Added best practices for subscribing to Substack newsletters - Explained document tags vs highlight tags - Explained Instapaper private content - Added information about how to personalize your custom email address - Explained how Reader stores docs and why they don't update with the original - Expanded Exporting 📤 section ## December 19, 2023 - Added section about the Daily Digest - Explained limitations of Kindle/Google/etc books - Explained link between Reader docs and Readwise highlights - Updated info about auto-highlighting feature - Expanded section about PDF highlights - Added browser extension hot key (`alt+R`) ## December 7, 2023 - Added more context for a variety of actions on mobile - Updated instructions for saving Twitter threads - Added instructions for customizing keyboard shortcuts - Added instructions for switching to text view on PDFs - Added information about PDF color inverting and how to disable it - Updated TTS section to reflect new functionality (start midway through document, headphone gestures, etc) - Various punctuation, semantics, and phrasing tweaks ## October 27, 2023 - Updated instructions for adding document notes to include mobile and browser extension - Updated mobile directions for customizing appearance YouTube Videos ## How do I watch a YouTube video inside Reader? If you save a YouTube link to Reader, you'll be able to watch it alongside its time-synced transcript and take notes and highlights as it plays. On web, you can also precisely navigate the video by clicking any fragment, clicking a highlight in the right sidebar, or using special keyboard controls. ## What keyboard shortcuts can I use while watching videos in Reader? Like on YouTube itself, you can use the `space` shortcut to play or pause the video. You can also use the `,` and `.` keys to change the video's playback speed, and skip forward or backward by 15 second increments using the left and right arrow keys. ## What is "autoscroll" and how do I turn it off? Autoscroll makes the video transcript act like a teleprompter, automatically moving the focus from paragraph to paragraph as the video progresses. If you'd like to turn this off so you can freely navigate the transcript as you watch, press `shift + enter` on your keyboard or click into the **Video settings** menu in the top left and select **Toggle autoscroll**. If autoscroll is off and you've navigated away from the current section of the transcript, you can quickly hop back to be in sync with the video by pressing `cmd/ctrl + enter`. ## Can I resize the YouTube video to see more of the transcript? Yes! To resize the video player, click and drag the small gray bar between the video and the transcript. ## The transcript from YouTube isn't great. Can I improve it somehow? If the creator of the video didn't upload their own captions, then Reader uses the one that is auto-generated by YouTube. Although better than nothing, the auto-generated transcripts often have a lot of syntax and formatting issues, like missing punctuation and line breaks in the middle of paragraphs. To fix this, you can use Reader's *enhanced transcript* option. On web, you can toggle the enhanced transcript by clicking the document icon in the top left corner. On mobile, tap into the `...` menu in the lower right and select **View enhanced transcript**. If you made any highlights on the original version of the transcript, they may not visible on the enhanced version. However, you will see a note letting you know that some of your highlights can't be overlaid onto the text, and all of your highlights will still be safe in your **Notebook**. ## How can I select a different language for a video's transcript? To select a different language than the default (usually English) for the transcript of a video, click the globe icon in the top left and select your desired language from the dropdown menu. On mobile, tap into the `...` menu in the lower right and select **Captions language**. The language options in this menu are limited to the caption options available on the original YouTube video. If the creator of the video didn't upload any captions, you may only see a single `(auto-generated)` option in this list. Selecting a different language from the default will create a *new document* in your Library with the language appended to the title to differentiate it from the original video document. ## How do I add my YouTube subscriptions to Reader? To subscribe to a single channel, simply copy the URL of the channel and paste it into Reader's **Add Feed** dialogue (`shift + A`). This will add the 5 most recent videos to your Feed, and any new video the channel posts will be automatically pushed to your Reader Feed as well. If you'd like to subscribe to all of your YouTube subscriptions at once, you can use [this bookmarklet created by jeb5 on Github](https://github.com/jeb5/YouTube-Subscriptions-RSS?tab=readme-ov-file) to create an OPML file from your subscriptions list. Upload the OPML to Reader by dragging and dropping the file onto the Reader window or by pressing `U`, and it will subscribe you to all of your YouTube channel subscriptions. Migrate Existing Content to Reader If you've used another read-it-later app before Reader, you might have quite a lot of content saved elsewhere. Instead of manually re-saving your content, we've developed various integrations to migrate your content automatically. ## Migrate from Matter You can import your Matter articles to Reader by generating an export [inside the Matter app](https://web.getmatter.com/settings), which will send you an email with a link to download your data. Forward this email to [read@readwise.io](mailto:read@readwise.io) from the same email associated with your Reader account, and Reader will automatically follow the link and import the documents you saved to Matter. At this time, the Matter import does not support tags or document locations (e.g. inbox, archive). This is something we hope to be able to support in the future! ## Migrate from Instapaper To import your data from Instapaper, navigate to the [Integrations preferences](https://read.readwise.io/integrations) of your Reader account. Next to the Instapaper option, click **Connect**. This will prompt you to log in to your Instapaper account. Once you've done so, your Instapaper articles should begin syncing to Reader. (Note that if you have a large Instapaper library, the initial import may take some time.) Once you've connected your accounts, any new documents you save to Instapaper will also be saved to Reader. The ten most recently saved and unarchived documents in your Instapaper account will go to the Inbox in Reader. The rest of your unarchived content will go to the Later tab. Any documents that were archived in Instapaper will go to the Archive. If you'd like to see all of your imported Instapaper documents in one place, you can [create a filtered view](/reader/docs/organizing-content#filtered-views) using the query `saved_using:instapaper`. ## Migrate from Pocket Pocket [shut down](https://support.mozilla.org/en-US/kb/future-of-pocket) on July 8, 2025. As of November 12, 2025, the API has been disabled and users can no longer export their data. If you still have a ZIP file with your Pocket content, you can upload that to Reader using the instructions below, but the direct integration will no longer work. If you exported your user data from Pocket before the shutdown, you can upload the `.zip` file to import that content to Reader. To do so, upload the `pocket.zip` file on the [Integrations preferences page](https://read.readwise.io/integrations) of your Reader account. If you downloaded your Pocket data while using Safari, note that Safari may have *automatically unpacked* the file. Trying to upload the unzipped file or recompressing it yourself can cause a partial or failed import. To ensure a full and correct import, make sure to upload the original `.zip` file. If you'd like to see all of your imported Pocket documents in one place, you can [create a filtered view](/reader/docs/organizing-content#filtered-views) using the query `saved_using:pocket`. Organizing Content Once you've [saved a lot of content](/reader/docs/saving-content) to your Reader account, you might find yourself struggling to stay organized. Luckily, Reader has a few different ways to make sense of the chaos. ## Tags Tags come in two flavors: *document tags* and *highlight tags*. As the names imply, document tags are applied to the full document, while highlight tags are applied to individual highlights. You can click a tag wherever it appears to display a [filtered view](#filtered-views) of the documents it contains. ### Add tags on web On web, adding document tags is slightly different depending on how you're viewing the document. - **From the list view:** Focus the document you'd like to tag (by using the arrow keys or hovering the document with your mouse) and press `T` on your keyboard. You can select the tag from the dropdown or begin typing to search. Use `enter` to apply to the tag and close the menu, or use `cmd/ctrl + enter` to apply the tag and keep the menu open. - **From the document view:** Press `shift + T` on your keyboard to open the tagging menu. You can select the tag from the dropdown or begin typing to search. Use `enter` to apply to the tag and close the menu, or use `cmd/ctrl + enter` to apply the tag and keep the menu open. You can add *highlight tags* by selecting the highlight and pressing `T`, or by clicking the tag icon in the annotation menu that appears. ### Add tags on mobile On mobile, you can add *document tags* in a couple of ways: - **From the list view:** Tap the three dot (...) menu in the right-hand corner of the listing card, tap Notes and tags, then select the tag you'd like to apply to the document. (If the tag doesn't already exist, just type it into the search bar and then tap the dropdown option that appears to create the tag and apply it to the current doc.) - **From the document view:** Tap the icon to the left of the three dot (...) menu in the bottom bar (it looks like a comment bubble and a tag next to each other), then select the tag to apply to the document. You can add *highlight tags* by tapping the highlight, then tapping the tag icon in the menu that pops up: If the tag you'd like to add doesn't already exist, you can simply type it in and then tap where it appears right below the text field to create it: ## Filtered Views Filtered views allow you to organize the content in your library based on a multitude of parameters, such as the date saved, reading length, number of highlights, and more. For a list of all the available filtering parameters, check out our [query syntax guide](/reader/guides/filtering/syntax-guide). Or, if you need some help getting started, explore some of our [query examples](/reader/guides/filtering/query-examples)! ### Create a filtered view on web Navigate to the [Manage views page](https://read.readwise.io/views) by clicking **Manage views** below the **Pinned** section of the left sidebar, then click **Add filtered view** in the top right. Alternatively, you can use the keyboard shortcut `shift + F`. Type in your [filter query](/reader/guides/filtering/query-examples) and click **Filter by query**. Then, to keep the view for later, click **Save view** and give it a name. You can use the [Tags](https://read.readwise.io/tags) page to quickly add tags to new or existing views. ### Create a filtered view on mobile Tap into the **Search** tab of the Reader app and then tap the `+` icon in the top right corner of the views list. Type in your [filter query](/reader/guides/filtering/query-examples) and then tap **Show** to see the filter. To save it for future use, tap **Save** and give it a name. ## RSS Folders RSS folders (or "feed folders") allow you to easily group feed sources into manageable categories, which you can then explore without the extra noise of other feeds getting in the way. ### Create RSS folders on web To create an RSS folder on web, navigate to the [Manage feeds page](https://read.readwise.io/feed/sources) and use the "Manage folders" dropdown to add a feed to a new or existing folder. Once the folder has been created, you can drag and drop feeds from the list into the new folder in the left sidebar. Use `shift + X` to open or close all folders in the sidebar at once! ### Create RSS folders on mobile On mobile, you can create folders in your Feed by tapping the `+` icon in the top right, then selecting **Add new folder**. Enter a name for your new folder, then tap **Next**. You can add feeds by tapping them in the list so that they show a blue checkmark. Once you've added the feeds you'd like to have in this folder, tap **Next** again to create the folder. To access your folders, tap the three horizontal lines in the top left of the Feed page to open the sidebar. Once you've created an RSS folder, you can add or remove feeds to or from the folder in a couple of ways. 1. **From the folder:** From the Feed sidebar, tap into the folder you've like to add the new feed to. Tap the `+` button in the top right, use the search field or scroll until you see the feed you're looking for, then tap the item to add it to the folder. Tap **Done** in the top right to confirm. 2. **From the individual feed view:** From the Feed sidebar, tap the name of the feed you want to put in a folder. Tap the `+` button in the top right, then tap the name(s) of the folder you'd like to put the feed into. Tap **Done** in the top right to confirm. Saving Content to Reader Your Reader library is only as good as the content it holds, so how can you make sure it's full of things you want to read? By saving cool things as soon as you find them! ## Save from the web with the browser extension The Reader browser extension performs two functions: first, saving articles to Reader and second (optionally), highlighting the open web. To save a document to Reader, tap the icon in the browser bar or use the keyboard shortcut `alt + R`. (You can change the keyboard binding in the extension's options.) This will save a clean, readable version of the document to your Reader inbox. The browser extension is the most robust way to save documents to Reader because the extension gets the underlying content rendered in your browser as opposed to just a URL. ### Browser extension features 1. **Open in Reader:** Go to the current article in your Reader Library. 2. **Number of highlights:** Displays the number of highlights you've taken on the current document. 3. **Toggle auto-highlighting:** By default, this option is on and selected text on the page will automatically become a highlight in Reader. If turned off, selections will need to be manually converted to highlights via the annotation menu bar. 4. **Add tags:** Open the tagging menu to categorize the document. 5. **Add a document note:** Open the document note field. Good for adding context about why you're saving a document, or who recommended it. 6. **Move the document:** By default, the extension saves documents to the first section of your Library (either Inbox or Later, depending on your configuration). Use this dropdown menu to move the document to another section. For example, you can move it straight to the archive if you read it on-site. 7. **Hide the extension bar:** Click the upward arrow to hide the extension's options. ## Save on mobile with your device's share menu You can save documents to Reader using your mobile device's share sheet. If you don't see Reader among the apps you can share to, try restarting your device. Sometimes mobile devices have a bug where new apps don't immediately appear in the share menu, but a restart should clear that up. On mobile, Reader can only get the full content of a paywalled article if it's saved using the iOS Safari browser while logged into the site. When importing from other sources (e.g. the native WSJ or NYT apps) or from any Android browsers, Reader only receives the naked URL, and this results in partial parsing because the full content is blocked. ### Mobile share menu features 1. **Read Now:** Open the shared article in the Reader app. 2. **Delete:** Remove the shared article from your Reader Library. 3. **Add tags:** Open the tagging menu to categorize the document. 4. **Add a document note:** Open the document note field. Good for adding context about why you're saving a document, or who recommended it. 5. **Move to Later:** Move the shared article to the Later section of your Library. *Note: If your Library is using the "Shortlist" configuration, this will be a star icon that will move the document to your Shortlist.* 6. **Move to Archive:** Move the shared article to the Archive section of your Library. This is useful for articles you've read in your browser and simply want to save for posterity. Default Filtered Views Reader comes with a few preset filtered views. If you've deleted one of them—either intentionally or by mistake—you can recreate it by referencing the queries below. ## Library Sub-Categories Reader comes with some default sub-categories that are nested under the Library section of your account. These have custom icons and can be hidden by toggling the arrow to the left of the Library heading. If you've deleted one of these default views, you can add it back to the list by [creating a new filtered view](/reader/docs/organizing-content#filtered-views), then entering the appropriate query from the list below. - **Articles:** `category:article` - **Books:** `category:epub` - **Emails:** `category:email` - **PDFs:** `category:pdf` - **Tweets:** `category:tweet` - **Videos:** `category:video` To properly recreate a Library view that's been deleted, the query needs to be *exactly* the same as it appears above, with no space between the `:` and the category name. Once the view has been recreated, it will re-adopt the default icon and will display in the Library section of the sidebar when Pinned. ## Default Filtered Views These views can be accessed from the [Manage views page](https://read.readwise.io/views), and they can be Pinned to the sidebar by clicking the pin icon in the list view or by selecting **Pin to sidebar** from the view's dropdown menu. Many of these default views use `(in:inbox OR in:later)`. If you use the Shortlist Library configuration, you may want to edit these to use `(in:later OR in:shortlist)` instead. --- ### ⭐ Shortlist Tagged `shortlist` and not yet archived ``` tag:shortlist AND (in:inbox OR in:later) ``` This default view is also associated with a keyboard shortcut: you can add the `shortlist` tag to documents using the `S` key. The `shortlist` tag is meant for when your Library is in the Triage configuration. If you switch to the Shortlist configuration ([more here](https://www.youtube.com/watch?v=MX0XN\_O89r0)), you should use `in:shortlist`. --- ### 📥 Recently added Saved in the past week and not yet archived ``` saved__gt:"1 week ago" AND (in:inbox OR in:later) ``` --- ### ✨ New in Feed Unseen in the Feed section ``` feed:true ``` Just looking at the query, you might think that this view simply shows everything in the Feed. While technically true, this view is also [split](/reader/docs/faqs/filtered-views#what-does-it-mean-to-split-a-view) by the Seen status of its documents. When [featured on the home page](/reader/docs/faqs/filtered-views#how-do-i-add-a-filtered-view-to-my-home-page), only documents in the first tab of a split view will display on home. The view is also sorted in reverse chronological order by *Date saved*. This means that, in practice, the home page version of this view will display *unseen documents with the most recent first*. --- ### 📖 Continue reading Started in the past week and not yet archived ``` progress__gt:5 AND last_opened__after:"1 week ago" AND (in:inbox OR in:later) ``` The default query for the "Continue reading" view specifies that only documents with progress beyond 5% of the document are displayed. This is meant to prevent any recently opened document from appearing if all you did was open it and then close it again, but if you often read longer documents, you might stop reading less than 5% of the way through the document. To adjust for this, you can change the 5 to a smaller number or even delete that section of the query entirely. --- ### ⏱️ Quick reads Short than 10 minutes and not yet archived ``` minutes__lt:10 AND (in:inbox OR in:later) ``` --- ### ⏳ Long reads Longer than 30 minutes and not yet archived ``` minutes__gt:30 AND (in:inbox OR in:later) ``` --- ### 💎 Recently highlighted Highlighted in the past week ``` has:highlights AND last_opened__gt:"1 week ago" ``` Despite the name, this view *technically* will display any document that has any highlights and that has been opened recently, even if the none of the document's highlights were made within the last week. If you want to see your individual highlights in reverse chronological order, you can check out your [Readwise "Latest" view](https://readwise.io/latest). Filtered View Examples ## Short reads Display all documents in the Later section of the Library that have an estimated read time of less than 10 minutes. ``` minutes__lt:10 AND in:later ``` ## Currently reading Display all documents started in the last week and not yet archived. ``` progress__gt:5 AND last_opened__after:"1 week ago" AND in__not:archive ``` This query specifies that only documents with progress beyond 5% of the document are displayed (`progress__gt:5`). This is meant to prevent any recently opened document from appearing if all you did was open it and then close it again, but it's possible that—perhaps for exceptionally long documents—you might have stopped reading less than 5% of the way through the document, which would mean that it won't appear in this view To solve for this, you can edit the query and change the 5 to a smaller number or even delete that section of the query entirely. ## Delete automatically imported Pocket or Instapaper articles ``` saved_using:pocket AND highlights:0 ``` Once you've created the filtered view, you can clear out all of its contents with the following steps: * Use `shift + B` to open the Bulk Actions menu * Start typing `Delete`... to find `Delete all documents` ## Untagged documents view If you’re trying to clean up your account and want to find all of the documents that you haven’t tagged, you can use a custom filtered view with the following query: ``` has__not:tags ``` This will create a new filtered view showing any documents without a tag. If you'd like to keep the view handy for periodic housecleaning, you can click **Save view** and give it a fun, broom- or vacuum-related name. ## View all email subscriptions Email subscriptions don't currently appear in the Manage Feeds view, but you can create a custom filtered view to see only feed items added via email. To do this, you can use the following query: ``` feed:true AND type:email ``` To make this view act like the Feed, you can use the caret dropdown menu to select **Split view** (or press `\` on your keyboard) and split by **Seen** to get the same Unseen and Seen tabs. Additionally, if you'd like to see only the newsletters from a specific source or author, you can click the author name in the **Info** tab of the right-hand sidebar to see a filtered view, which you can then save to your account. ## Clean out old Feed documents If your Feed is getting cluttered up with old documents you never looked at, you can create a new filtered view showing any documents from your feed older than a week to easily clean out your backlog using the following query: ``` feed:true AND saved__lt:"1 week ago" ``` Once you've saved the view, you can use the caret dropdown menu to select **Split view** (or press `\` on your keyboard) and split by **Seen**. Once you've split the view, you'll see the same options you have on your general **Feeds** view: **Mark all as seen** in the bottom left of the **Unseen** tab, and **Delete all** in the bottom left of the **Seen** tab. By clicking **Mark all as seen** and then **Delete all**, you can quickly delete all of your old feed items at once. ## Filter out YouTube Shorts Subscribing to a YouTube channel [via RSS](https://tips.slaw.ca/2019/technology/rss-feed-for-a-youtube-channel-or-playlist/) is great, until your feed starts getting clogged with YouTube Shorts. To lose the junk food and focus on the meatier videos, try this filter: ``` category:video AND minutes__gt:2 ``` ## Unfinished long reads This acts like a "Continue Reading" but only for documents with a read time over 20 minutes. It also reduces the progress requirement, since the progress data is a percentage and longer documents will have a smaller percentage after more reading. ``` progress__gt:3 AND minutes__gt:20 AND (in:inbox OR in:later OR in:shortlist) ``` Filtering Syntax Guide Filtered views are powerful tools for organizing your Reader documents. The power behind them comes from **queries**, which can be customized with a variety of parameters. ## Query Structure Creating a query from a single parameter is relatively straightforward: enter the parameter and the desired input. To create a query that uses multiple parameters, you'll need a bit more structure. This structure is added using three core concepts: `AND`, `OR`, and nesting via parentheses. ### AND This is used to link parameters that should *all* apply to each filter result. For example, `tag:news AND published__after:"1 week ago"` will return documents that are tagged with "news" and were published within the last week. ### OR This is used to link parameters where only *one* of them should apply to each result. For example, `tag:news OR tag:tech` will return documents that are tagged with "news" or are tagged with "tech". ### Nesting What do you do if you want to mix and match your ANDs and ORs? Parentheses! To separate the parameters from each other, you can group them into shorter statements with parentheses. For example, to display recent documents from two different tags, you could use `(tag:one OR tag:two) AND saved__after:"2 weeks ago"`. ## Date Parameters These parameters filter results based on the date of a particular aspect of the document. You can use dates in two formats: absolute (e.g. `2024-09-15`) or relative (e.g. `"1 week ago"`). Date parameters are often most useful when combined with the `__before` and `__after` [operators](#operators). ### saved Filters by the date the document was saved to your Reader library. ### last_opened Filters by the date that the document was most recently opened. ### published Filters by the date that the document was published. ### last_status Filters results by the date of the most recent action taken on the document, such as moving it from the inbox to the archive. ## Text Parameters These parameters filter results by text-based metadata, such as title, author, or category. If the text input contains more than one word, it should be placed inside of quotation marks, e.g. `title__contains:"keyword or search term"`. ### tag Filters by tag(s) applied to the document. ### domain Filters by the domain the document originated from, e.g. `nytimes.com` or `youtube.com`. ### url Filters by the full URL of the document's original page. ### category or type Filters by the document's type. These types are set by Reader when the document is saved, so the valid options are limited to the following list: - `article` - `epub` - `email` - `pdf` - `tweet` - `rss` - `video` If you've deleted one of the default category views that lives under the Library in your Reader sidebar and decide you want to restore it, you can do so by creating a filtered view with the query `category:[name]`. For example, to recreate the "Books" view, you would want to use the query `category:epub`. (Make sure there's no space after the colon!) Once the view is recreated, it will re-adopt the default icon and display in the Library section of the sidebar. ### rss_source Filters by the name of the source RSS feed. This will only work on documents added via an RSS feed, not with manually saved documents or documents sent via email. ### author Filters by the name of the document's author. ### location or in Filters by the document's current location within your Library. If you're using the default Triage Library configuration, the Library locations are `inbox`, `later`, and `archive`. If you're using the Shortlist configuration, the options are `later`, `shortlist`, and `archive`. ### title Filters by the title of the document. ### saved_using This parameter is used to locate documents imported from another read-it-later service. *Options:* - `instapaper` - `pocket` - `omnivore` ## Binary Parameters These parameters filter results by parameters that can either be `true` or `false`. ### feed Filters by whether or not the document is in the feed. ### seen Filters by whether the document has been opened or marked as seen. ### unseen The inverse of the above: Filters by whether the document has been opened or marked as seen. ### shared Filters by whether the document has a public link enabled. ## Numerical Parameters These parameters filter results based on parameters that accept numbers. Numerical parameters are most often useful when combined with the `__lt` or `__gt` [operators](#operators). ### words Filters by the number of words in the document. ### progress Filters by the reading progress percentage. ### highlights Filters by the number of highlights made in the document. To display all documents with at least one highlight, you can also use `has:highlights`. ### minutes Filters by the estimated reading time of the document. ### saved_count Filters by the number of times a document has been saved to your account. ## Other Parameters ### has This parameter filters documents based on whether or not certain annotations have been made. It accepts the following options: - `highlights`: Displays all documents with at least one highlighted passage. - `tags`: Displays all documents with at least one tag. - `notes`: Displays all documents with content in the document note field. ## Operators You can add these double underscore operators to other parameters above to modify them. *Example:* ``` highlights__gt:5 ``` ### __gt **Type:** Numeral Displays results where the parameter is *greater than* the specified number. ### __lt **Type:** Numeral Displays results where the parameter is *less than* the specified number. ### __gte **Type:** Numeral Displays results where the parameter is *greater than or equal to* the specified number. ### __lte **Type:** Numeral Displays results where the parameter is *less than or equal to* the specified number. ### __contains **Type:** Text Displays results where the parameter contains the specified text anywhere within its content. ### __exact **Type:** Text Displays results where the parameter content is exactly the same as the specified text. ### __before **Type:** Date Displays results where the parameter's date is earlier than the specified date or time frame. ### __after **Type:** Date Displays results where the parameter's date is later than the specified date or time frame. ### __not **Type:** Any Displays results where the parameter does or is *not* the same as the specified input. Chat with your documents Reader's Chat feature allows you to chat with documents as you're reading. This is currently only available on the web and desktop versions of Reader, but we plan to reciprocate the feature to mobile as we continue to develop it. To access the chat, open any document and click **Chat** in the right sidebar (or hit the backtick `` ` `` twice to cycle between the panels). The language model has access to the underlying document, its metadata, and your reading position, so it's more effective than other Ghostreader prompts at extracting detailed information, clarifying random questions that come up while reading, and applying the writer's concepts to domain-specific situations. The LLM also has access to the chat history, so you can more naturally ask follow up questions. ## Save chat responses If you get a particularly useful or evocative response while chatting, you can save it to the document's note field. Not only will this separate the note out from the chat interface, it will also allow it to be synced to Readwise with the rest of the document's notes and highlights. To save a response to the document note, click the notebook icon below the response. Additionally, you can use the **Copy** icon to save the response to your clipboard for use elsewhere. ## Change the GPT model By default, it uses OpenAI's `GPT-5.1` model with fairly low thinking for quick replies, but you can optionally switch to a more thoughtful version of the model if you'd prefer to trade speed for intelligence. To change the model, click into the dropdown menu at the bottom of the chat field. ## Clear the chat history If at any point you'd like to start fresh with a new chat, you can click **Clear chat** at the bottom of the Chat panel. This will erase all of the current responses, so make sure you've copied or saved anything you might want to keep before you click this! ## Use preset prompts Ghostreader comes loaded with a variety of [default prompts](/reader/guides/ghostreader/default-prompts), and you can also [customize them or create your own](/reader/guides/ghostreader/custom-prompts). To use a preset prompt, open the **Preset prompt** dropdown at the bottom of the chat window and select the prompt you'd like to run. The preset options will vary based on the [scope](/reader/guides/ghostreader/custom-prompts#scopes) of the selected text. That is to say, you'll see a different set of options if you have a word or two selected in the document versus if you have a full sentence or paragraph selected. If you have nothing selected, the listed prompts will be for the full document content. To quickly access the preset prompts, use the `G` keyboard shortcut for selected words or passages, or use `shift + G` to run a prompt on the full document. Note that preset prompts use the GPT model set for them on the [Ghostreader preferences page](https://read.readwise.io/preferences/ghostreader), *not* the model currently selected for the chat. If you'd like to save a particular chat response as a highlight note, you can use the **Copy** option below the response, then use the `N` keyboard shortcut to edit the highlight note and paste the Ghostreader note. Ghostreader Prompt Customization You can enrich your reading experience with Ghostreader's built-in prompts written by the Readwise team, but you're not restricted to only those use-cases. The option to fully customize those prompts or even write your own is arguably Ghostreader's coolest feature. This page will guide you through the basics of crafting a Ghostreader prompt, using the default summarization prompt as an example. Or, for an even quicker start, you can jump over to the [prompt library](/reader/guides/ghostreader/prompt-library) to copy/paste some prompts created and shared by others. ## Scopes One of the first things to understand about creating prompts for Ghostreader is the concept of a prompt's scope. *Scope* here refers to (a) how much of the original document content is selected/highlighted and (b) where the Ghostreader response is outputted. - *Document prompts*, such as summarizing the document or extracting takeaways, operate at the whole document level. On mobile, the response is outputted to the document note field. - *Paragraph prompts*, such as simplifying text or expanding a concept, operate on the individual highlight level (when the highlight is longer than 4 words). On mobile, the response is outputted to the highlight note. - *Word or phrase prompts*, such as define or encyclopedia lookup, operate on the individual highlight level (when the highlight is 4 words or fewer). On mobile, the response is outputted to the highlight note. - *Automatic prompts* operate at the whole document level and acan be run automatically when a document is added to your Library. Currently, Ghostreader only has two automatic prompts: auto-summarizing and auto-tagging. ## Customizing Prompts You can customize any prompt from the [Ghostreader section of the Preferences menu](https://read.readwise.io/preferences/ghostreader) in the web and desktop apps. Here you’ll find all the prompts that can be customized, organized into sections based on scope. ## Anatomy of a Prompt: Summarize the document To explain how a prompt is created, let's take a look at the default summarization prompt. To get started, click `Edit prompt` next to **Summarize the document**. If it’s your first time editing it, you'll see the default prompt that’s currently being applied to your documents: ``` {#- BACKGROUND: This prompt instructs ChatGPT to summarize the document into three information-dense sentences. It's intended to be used after you're done reading. If you want your summaries in a language other than English, we recommend rewriting the entire prompt in the target language. You can get quite creative using combinations of logic and variables to enable all kinds of creative use cases. See the documentation for details and examples. -#} Write three easy-to-read sentences summarizing the following text: === Title: Author: Domain: {#- The if-else logic below checks if the document is very long, long, or short in order to not exceed the GPT "prompt window". We highly recommend not changing this unless you know what you're doing. -#} IMPORTANT: Write no more than THREE sentences. Each sentence should be short and easy-to-read. Use words sparingly and please capture the big idea. ``` You’ll notice several uses of single or double curly brackets, sometimes with percentage symbols or hashes. This is the syntax of the templating language known as [Jinja2](https://jinja.palletsprojects.com/en/2.10.x/templates/). Even basic knowledge of Jinja can allow for lots of creative uses—including if statements and if-else statements—as well as inserting the custom variables we’ve created to render your prompt with the target document’s content and metadata. Now, let’s break the default summary prompt into its parts. ### Commenting *Template part:* `{#- BACKGROUND: This prompt instructs ChatGPT to... -#}` The `{#` notation is how you leave a comment in a Jinja2 template. We’ve written this template to help orient users who don’t read the manual. The `-` symbol ensures that no blank space is left behind when the prompt renders. (More on what rendering means below.) ### Plain Language Instructions *Template part:* `Write three easy-to-read sentences summarizing the following text:` This is just a plain language instruction, like what you might write inside a ChatGPT chat. ### Delimiters *Template part:* `===` This is just a random delimiter to let GPT know that you’re separating the text you want summarized from the rest of your instructions. Three quotes was a common convention when GPT was first getting popular, but you could use anything (a few backticks, a few plus signs, etc.)—there's no syntax rule that requires it to be quotes. ### Metadata Variables #### Title *Template part:* `Title: ` Now we’ve arrived at the first custom variable of this prompt. When Ghostreader renders this prompt, it replaces `` with the title of the document being summarized. So if you were summarizing an article entitled *Hunter S. Thompson's Letter on Finding Your Purpose and Living a Meaningful Life*, this line would render **Title: Hunter S. Thompson's Letter on Finding Your Purpose and Living a Meaningful Life.** #### Author *Template part:* `Author: ` This variable will be replaced with the name of the document author. So if you’re summarizing *The Art of War*, this would render as **Author: Sun Tzu**. #### Domain *Template part:* `Domain: ` This variable will be replaced with the name of the domain that the document was saved from. So if you’re summarizing an article from the New York Times, this would render **Domain: nytimes.com**. ### If Statements: Content Length #### Opening if tag *Template part:* `` This is an important if statement. LLMs have what’s known as a “context window” (discussed below). The pipe symbol `|` followed by the subroutine `num_tokens` after `document.content` checks how long the document is in tokens. If the document is longer than 25,000 tokens, the next line reduces the document to a manageable amount of text that doesn’t exceed the GPT context window. #### What to do when if returns true *Template part:* `` If the document is too long to fit in the context window (or you don’t want to spend an excessive amount of money on API credits), this line runs a custom subroutine we’ve made called `central_paragraphs` which reduces the document to its most important paragraphs. This specific line is meant for very long documents, which often fail with the `central_sentences` subroutine (explained below). The `join('\n\n')` filter ensures that the paragraphs are returned with two line breaks between each one to keep them separated. #### elif tag *Template part:* `` The `elif` tag functions essentially the same as the `if` tag, but it will only run when the original `if` statement assesses to false. In this case, it will run on any documents that are shorter than 25,000 tokens, and it will assess to true if the document is still longer than 2,500 tokens. #### What to do when elif returns true *Template part:* `` Like the answer for the opening `if` above, this line runs a custom subroutine called `central_sentences`, which reduces the document to its most important sentences. This subroutine employs a popular LLM framework for embedding-based extractive summarization. #### else tag *Template part:* `` Following an if statement, this else statement indicates what should be done if the results of the `if` statement and the `elif` are both false—in this case, if the document is not longer than 2,500 tokens. #### What to do when if returns false *Template part:* `` This variable renders the full content of the target document. #### Closing if tag *Template part:* `` This delineates the end of the if-else statement. An LLMs “context window” is the amount of information it can refer back to when generating a response. Essentially, it’s like the model’s short-term memory. Different models have differently sized context windows. The if-else logic included in Reader’s default summarization prompt (explained above) checks to see if the document’s content will exceed a certain number of tokens. If the provided content exceeds the context window of the selected model, the Ghostreader prompt will fail, so this logic helps avoid that. ### Final Instructions *Template part:* `IMPORTANT: Write no more than THREE sentences. Each sentence should be short and easy-to-read. Use words sparingly and please capture the big idea.` This is another plain language instruction, this time emphasizing the crucial points of the prompt. LLMs get off track fairly easily and thus benefit from the repetition of rules, so it doesn’t hurt to re-state important concepts that were already included at the beginning of the prompt. ## Reset to Default If you've made some edits to a default prompt but decide you preferred the original or want to start fresh, you can use the **Reset prompt** button to return the prompt to its default value. ## Non-English Summarization One of the most straightforward use cases of customizing your summary prompt is to get Ghostreader to write summaries in a language other than English. Large language models are trained on all the publicly available text on the internet, which is largely written in English, so they have a strong bias to respond in English even if you give them instructions to, say, “Write this summary in German.” To overcome this bias, it’s extremely effective to rewrite the entire prompt in German itself. ``` Verfassen Sie umgehend drei knappe, leicht erfassbare Sätze zur Zusammenfassung des nachfolgenden Textes: ... ACHTUNG WICHTIG: Begrenzen Sie sich strikt auf drei Sätze – jedwede Ausschweifung ist inakzeptabel. Jeder Satz muss präzise, unmissverständlich formuliert, sowie grammatikalisch und orthografisch korrekt sein. Fassen Sie die zentrale Aussage knapp und ohne Umschweife zusammen. Schreiben Sie eine Zusammenfassung auf Deutsch: ``` We’re using German here as an example, but obviously you should translate our English prompt to your desired language. ## Jinja Basics As mentioned above, Ghostreader uses a templating language called Jinja2 for its prompt templates. To help you navigate these areas of your prompts, here are some of the basic Jinja functions that are most useful for crafting Ghostreader prompts. ChatGPT is surprisingly good at writing and error-checking Jinja. Try asking it for help if you get stuck! ### Commenting As mentioned in the prompt breakdown above, comments use the syntax `{#- COMMENT TEXT HERE -#}`. Anything included between the two `-` symbols won’t be used in the prompt, so this is a great place to make notes to yourself (and others, if you share your prompt) or explain the logic behind a certain piece of the template. ### If-else statements If you’re familiar with any programming languages (JavaScript, Python, etc.), the concept of an if-else statement is probably old hat. If not, here’s a brief explanation, as stated in the Jinja documentation. >In the simplest form, you can use it to test if a variable is defined, not empty and not false For example, you could use it to check if a document has a note: ``` Document Note: ``` If the document does have any text in the document note field, the if statement will return *true* and the note will be included. If it doesn’t, the statement will return *false* and won’t output anything. You can get even more creative with the use of `elif` and `else`. This lets you branch your if-else statement into various outcomes—whichever `if` evaluates as true first will be the section that gets run on the input. ``` ... ... ... ``` With the above template, a document called “Is this a Twitter List?” would use the first section of the prompt, a document called “Just another Twitter List” would use the second, and a document called “I’m a listicle” would use the third. You can put if-else statements inside of each other to achieve more complex logic. For example, a prompt might first run an if statement to check if the document is a Twitter List, and if that returns false, then it would run the usual summarization prompt and its if statement to check the document length. You can nest as many if-else statements as you’d like, but be warned that it’s easy to lose track and write a failing prompt. If you had no trouble following the plot of Inception, you’ll probably be okay. If not, well… if-else at your own risk! ### Using the length filter for highlights You can use the Jinja filter `length` to check how many highlights a document has and use it to set an if statement, like so: ``` ... ``` This would only render the results of the enclosed section if the target document has 3 or more highlights. ### Setting custom variables You can set your own custom variables in a prompt by using the `` command, like so: ``` ``` This will allow you to use the highlight_number variable to insert the number of highlights on the document. For example: ``` End the summary with a new line, followed by the sentence "This document has highlights." ``` ## Model Selection is included with your subscription. You can [use a more advanced model](/reader/docs/faqs/ghostreader#how-can-i-use-a-different-gpt-model) if you'd like, but it requires using your own OpenAI token. That said, we caution you to be careful not to use o3 *and* try to summarize an entire book’s content—you might be a bit shocked by your next OpenAI bill. If you've added your own API key, you can change the model of any prompt by selecting your desired model from the dropdown menu in the lower left corner of the prompt editing screen. Don't forget to click the `Save` button or the new model won't be applied. ## Automatic Prompts Ghostreader has two automatic prompts that work slightly differently than the rest of the prompts: auto-summarization and auto-tagging. These two prompts are listed in their own section of the Ghostreader customization page, and they can't be deleted or moved to another section. The auto-summarization prompt (the default of which was discussed above) outputs its response into the summary field in the document's metadata. It can be [set to run automatically](/reader/docs/faqs/ghostreader#how-do-i-enable-auto-summarization-or-auto-tagging) on any document that gets added to your Library, and it can also run automatically on any new document in your Feed if you've added your own API key. The auto-tagging prompt outputs its response as document tags. With how subjective most people's tagging systems are, this prompt is a bit trickier to use effectively. We'll discuss why, and our best recommendations for how to try, in the following sections. ### Ghostreader Tagging (tag at your own risk) Before we get started with this section, we'd like to highly recommend you don't turn on the auto-tagging feature until you've taken some time to customize and test your auto-tagging prompt. Doing so is likely to flood your account with new tags that you may or may not want, and deleting the extraneous ones can be quite tedious. With that out of the way, let's discuss Ghostreader's tagging functionality! Using an LLM to “tag” a document is an extremely cutting edge approach. Historically, this problem has been approached through a technique called *topic modeling*, which takes a huge set of text documents, converts each document to a numerical representation, and then clusters those documents based on how mathematically “close” they are to one another. Then the text in those clusters are analyzed for unusually frequent words in the related documents. That’s kind of a black box. This is much more fun. In order to get this to work, you need to write a prompt that gets GPT to respond with a set of 1 to 6 comma-separated tags. If the output is not formatted as a comma-separated list, the prompt will fail. For example, if GPT responds with a bunch of explanatory verbiage, it’s going to fail. #### Taxonomy Prompt The most effective technique for getting GPT to tag your documents, by far, is what we’re calling a taxonomy prompt. This is where you explicitly describe all the tags used in your system and a short description of *how* they’re used. While effective, it’s also the most laborious to craft. Here’s an example taxonomy prompt that might work for a news/magazine reader: ``` Your job is to categorize various types of documents including web articles, ebooks, PDFs, Twitter threads, and YouTube videos into one of the interest-based topic labels provided. """ Technology: Documents covering the latest trends, innovations, and advancements in technology, including topics like AI, artificial intelligence, machine learning, robotics, virtual reality, gadgets, cybersecurity, programming languages, breakthroughs, hardware devices, cryptocurrency, and software development. Health & Wellness: Documents covering physical and mental health, fitness, nutrition, medicine, and alternative therapies, providing insights and tips for maintaining a healthy lifestyle. Science: Documents covering discoveries, research, and developments in various scientific fields, such as physics, chemistry, biology, astronomy, and earth sciences. Business & Finance: Documents covering the world of investing, sales, marketing, economics, companies, earning reports, and personal finance, offering advice and analysis for professionals and enthusiasts alike. Startups: Documents covering the ecosystem of startups, including entrepreneurship, venture capital, startup culture, innovation, business strategies, and the challenges and successes of launching and growing new ventures. Lifestyle: Documents covering topics related to travel, fashion, home decor, and other advice to enhance everyday living and personal interests. Family & Relationships: Documents covering topics related to family dynamics, parenting, relationships, marriage, and interpersonal communication, offering advice and insights for nurturing healthy and fulfilling connections. Arts & Culture: Documents covering literature, music, visual arts, performing arts, and architecture, showcasing the creative expression and cultural heritage of societies around the world. Education: Documents covering learning methods, educational technology, teaching strategies, and online courses, catering to educators, students, and lifelong learners. Environment: Documents covering sustainability, conservation, climate change, and renewable energy, highlighting the importance of environmental stewardship and sustainable living. Politics & Society: Documents covering analysis and opinions on current events, social issues, government, and international relations, offering perspectives on the dynamics of society and politics. History: Documents covering historical events, figures, archaeology, and cultural heritage, providing insights into the past and its impact on the present and future. Sports & Recreation: Documents covering various professional and amateur sports, fitness trends, outdoor activities, and athletic training, catering to sports enthusiasts and those seeking active lifestyles. Food & Drink: Documents covering culinary arts, restaurants, recipes, food trends, and beverages, offering inspiration and ideas for cooking and dining experiences. Entertainment: Documents covering humor, satire, movies, TV shows, celebrity gossip, and updates about the entertainment industry, providing light-hearted and enjoyable content. Productivity & Self-Improvement: Documents covering time management, getting things done, life-hacking, organization, note-taking, and efficiency strategies, offering tips and tools for improving personal and professional productivity. Research Papers: Documents such as scholarly articles, academic research, and scientific studies across various disciplines, providing in-depth analysis and insights into specialized topics. Professional Documents: Documents of an internal and often private nature including legal documents, internal communications, and project management materials, catching documents likely uploaded by a professional attempting to manage and organize their work-related documents. """ You select a category from this list only without any further explanation. Here is the content: """ Title: Author: Domain: """ VERY IMPORTANT: Return only the category and nothing else. Most appropriate category: ``` If you take the time to develop a taxonomy for your tagging system, you’ll discover that what you’ve been doing is probably not so much of a “tagging system” but rather a random mishmash of sometimes-applied tags. That’s okay. That’s how most of us tag. But what it means is that there probably isn’t enough of a structure that an AI could learn your tags just by the names of tags you’ve used before. Instead, you need to sit down and actually develop a system that can be described. If you can do that, GPT can be directed. Admittedly, that can be a fair amount of effort. It works best if you reduce your set of tags to something reasonable. We recommend no more than 50. You can copy your tags from the command palette (”Copy all tags to clipboard”) to help make this process easier. Also, we’ve discovered that it’s really important that each tag in your taxonomy sits in the same hierarchy. For example, if you create a category "Artificial Intelligence" alongside a category "Technology", GPT will often default to the broader category of Technology even for articles that are obviously about AI. #### Post-Reading Prompt You can write a prompt that uses your highlights—and the tags you used on those highlights—to tag documents after you read. ``` Write three comma-separated topic labels to tag the following text: """ Title: Author: Domain: """ Here are the highlights I took while reading the text as well as my notes and highlight tags: """ Tags: Note: """ Obviously, my highlights, notes, and highlights tags are particularly important context for the information I found most important. Please give them extra consideration when writing three comma-separated topic labels. VERY IMPORTANT: Format your response as a comma-separated list of exactly THREE tags. Use tags in my existing schema. Three comma-separated tags: ``` If you didn’t use any tags, GPT will make up some tags here. Some people are fine with that. Some are not. Ultimately, it's up to you to decide if auto-tagging enhances your workflow enough to be worth the effort. That said, if you come up with any awesome auto-tagging prompts and would like to share them, [we'd love to hear from you](/reader/guides/ghostreader/prompt-library)! Default Ghostreader Prompts Reader comes pre-loaded with a set of prompts for Ghostreader to help you do things like define words, translate passages, and simplify complex ideas. This page will discuss the purpose and methodology of each default prompt. In the parlance of LLMs, a *prompt* is a set of written instructions provided as input, and the *response* is the LLM's output. For the purposes of this guide in relation to Ghostreader, the *prompt* is a set of repeatable instructions, often containing placeholder variables that will be replaced with the document's information each time the prompt is called, and the *response* is the text that Ghostreader generates. Although the responses for these prompts are returned in the Chat panel, they use all of the instructions set for them in your account's [Ghostreader preferences](https://read.readwise.io/preferences/ghostreader). This includes the [model selection](https://docs.readwise.io/reader/guides/ghostreader/custom-prompts#model-selection) available per prompt on that page. (The default is , which is included with your Reader subscription.) Changing the Chat's current GPT model (`⚡ Fast` or `🧠 Thinking`) will *not* change which model a preset prompt uses. It will only change which model is used for any follow-up questions you might ask after the intial prompt is run. ## Word-Level Prompts These are prompts designed to be run on selections of *one to four words* at a time. Generally, this means that the input is a single word or phrase, so these use cases include things like dictionary and encyclopedia lookups. You can invoke these prompts by pressing `G` with the word selected or clicking into the `...` menu and selecting **Chat about this** on web, or by tapping the ghost icon in the annotation bar that appears on mobile. ### 📖 Dictionary definition This prompt generates a dictionary-style definition of the selected word or phrase, as used in the context of your selection. To give you some intuition for how Ghostreader works, the process goes like this: When you invoke the dictionary definition prompt, a message along the lines of `Please define "" as used in the following sentence: ` is sent to OpenAI's GPT model, and the GPT's response is then outputted by Ghostreader. For example, if you selected the word "monstrous" in the first line of *The Metamorphosis*, the input sent to the GPT would be: ``` Please define "monstrous" as used in the following sentence: As Gregor Samsa awoke one morning from uneasy dreams he found himself transformed in his bed into a monstrous vermin. ``` ### 📚 Encyclopedia lookup This prompt generates an encyclopedia-style description of the proper nouns found within your books and other reading materials. It works best when dealing with the kind of person, place, or concept you'd be able to find in an _external_ encyclopedia such as Wikipedia. For internally defined terms, such as a neologism or acronym introduced in the context of that specific document, see `Internal x-ray` below. ### 🩻 Internal x-ray (character, place, term) This prompt uses the context of the current document to generate a definition or explanation for the selected word or phrase. If you start studying the art and practice of reading, it won't be long before you come across the concept of _coming to terms_. What this means is that words can take on many meanings and it is your job as a reader to "come to terms" with the author's usage of language. > “You will find that your comprehension of any book will be enormously increased if you only go to the trouble of finding its important words, identifying their shifting meanings, and coming to terms. Seldom does such a small change in a habit have such a large effect.”\ > \ > — **Mortimer Adler, _How to Read a Book_** Sometimes, the use-case here might be obvious. Perhaps you're reading _The Lord of the Rings_ and aren't quite sure what an "Ent" is, or you might be reading _Dune_ and you've forgotten what "_Lisan al Gaib_" means. Other times, you might think you want a dictionary definition or encyclopedia lookup, when really a term lookup would be much more helpful. For example, the term "monotonically" is used most generally to mean "in a way that is unchanging or repetitive in tone, pitch, or manner". However, if you're reading a document about mathematical equations, you would probably prefer an explanation like, "In this document, monotonically is used to describe a mathematical function that either consistently increases or decreases without any fluctuations or reversals. It suggests a steady and predictable pattern or trend." This is where the x-ray prompt can really shine. ### 🇪🇸 Translate to Spanish (customizable!) This prompt generates a response in the style of a translation dictionary entry, with a direct translation of your selected word or phrase. Ghostreader's default translation prompt is set to translate from English to Spanish, but you can [customize it](/reader/guides/ghostreader/custom-prompts) to whatever language you'd prefer! If you're an aspiring polyglot, a multilingual UN ambassador, or just generally linguistically intrigued, you can even create multiple translation prompts to have each of your favorite languages right at your fingertips. ## Paragraph-Level Prompts These are prompts meant for highlights or selections _longer than four words_. The input for these is expected to be at least a full sentence, but usually a full paragraph or more. You can invoke these prompts by pressing `G` with the passage selected or clicking into the `...` menu and selecting **Chat about this** on web, or by tapping the ghost icon in the annotation bar that appears on mobile. (If the focus indicator is already on the correct paragraph, you don't even need to highlight it first! Just tap `G` and it will use the text of the selected paragraph as context for Ghostreader.) ### 👩‍🏫 Explain passage (simplify) This prompt takes sesquipedalian prose or jargon-dense passages and improves the brevity and concision, transforming them into more easily comprehensible verbiage. (It makes stuff easier to read.) ### 🕳️ Expand passage (elaborate) This prompt finds a core concept from the selected passage and elaborates on it. We've all experienced those times when we search an unknown term and blithely click into the Wikipedia article, then spend the next three hours tumbling down a rabbit hole that culminates in an excess of trivial knowledge about the history of knitted footwear in Ancient Greece. Instead of accidentally losing an entire afternoon, this prompt lets you take a *brief* exploration into a topic that intrigues you while you're reading, allowing you to spend your next three hours continuing to read the thing you meant to read. And the information is saved as a highlight note, so you can always come back and fall down the rabbit hole later. ### ⏩ Pick up where I left off Do you ever let a book sit for a bit too long and then get totally lost when you try to start reading again? Maybe you dozed off while trying to finish your chapter and don't remember the last few pages? This prompt will grab the most recent chunk of a document before your current location and summarize what happened, to help you get your momentum going again. For fiction books, the summary will be in the style of a "Previously on..." TV show recap. For non-fiction, it cuts the drama and gives it to you straight. ### 🇪🇸 Translate to Spanish (customizable!) This prompt is similar to the translation prompt at the word level (described above), but it's meant to be used on longer passages of text. Rather than responding with a dictionary-style definition of the translated word, it will simply translate the full passage to the specified language. If you want a good laugh, try translating a passage to Jar Jar Binks. ## Document-Level Prompts These are prompts that can be run on the _full content_ of the document. You can invoke these prompts at any time by pressing `Shift + G` or by clicking into the **Chat** tab of the right sidebar and opening the **Preset prompts** option in the chat window on web, or by tapping into the `...` menu in the lower right and selecting `Ghostreader` on mobile. ### 💭 Generate thought-provoking questions Remember the discussion questions from high school lit classes? Things like, "How do Elizabeth and Mr. Darcy both display prideful and prejudiced behavior throughout the novel?" This prompt instructs ChatGPT to identify the three most interesting questions you can ask of the document before you're about to read it. And maybe they'll even be more nuanced than the ones you got in school. ### 📋 Extract key takeaways and to dos This prompt instructs ChatGPT to use your notes and highlights to summarize the most important points or any action items according to some input from you to guide the large language model. It's intended to be used after you're done reading. ### 📝 Draft newsletter blurb This prompt instructs ChatGPT to use your notes and highlights plus an insight you provide to generate a one-paragraph blurb that you could use to get over the blank page problem in a newsletter. It's intended to be used after you're done reading. Please note that we highly encourage you to heavily personalize this prompt to your audience and writing style (e.g. by providing examples in the prompt) before actually using its output in a real newsletter. Otherwise you will be generating "slop". ## Automatic Document Prompts These prompts are document-level prompts that can be set to run automatically on any newly-saved documents as soon as they enter your Library. You can turn these on or off on your [Ghostreader preferences page](https://read.readwise.io/preferences/ghostreader). ### 🤏 Summarize the document This special document-level prompt runs automatically on any newly-saved document and outputs its response to the summary field of the document metadata. This is different to other document prompts, which output their responses to the document or highlight note. Even though it’s automatic, you can also manually trigger summarization from the document-level Ghostreader menu, either by clicking the little ghost icon that appears when you hover the summary section in the web app or by tapping the summarize button in the right side panel in the mobile apps. By default, Ghostreader will only automatically summarize documents that you manually save to your account using the browser extension, mobile app share sheet, and so on. Documents in your Feed will not be summarized unless you invoke Ghostreader manually. You can, however, enable auto-summarization on Feed documents by adding your own OpenAI API key. Once you add your key, your Feed documents will start being automatically summarized and will use your API credits. ### 🏷️ Tag the document This second document-level automatic prompt attempts to analyze the content of newly-saved documents and apply relevant tags. It's still experimental, so it’s toggled off by default. We strongly recommend that you do not have this feature set to run automatically on new documents and instead [trigger it manually](/reader/guides/ghostreader/overview#how-to-invoke-ghostreader) until you've done some testing and customization of the prompt to ensure it works the way you expect. Tagging the document with Ghostreader is discussed in more depth in the [Custom Prompts help doc](/reader/guides/ghostreader/custom-prompts). What is Ghostreader? Ghostreader is the cheeky name for Reader’s AI-powered assistant that helps you get the most out of whatever you’re reading. This feature brings the power of LLMs into easy reach—no need to open a new tab, switch apps, or pull out another device to get more context! Ghostreader comes with a few default prompts that enable you to do things like quickly summarize the document, look up a word (or a term, or a character, or a location), get more details about a new concept, draft a blurb for your newsletter, discover how a word or passage translates to any language, and much more. But Reader also offers the flexibility to customize the default prompts or even create brand new ones. This guide will teach you how to [chat with your documents](/reader/guides/ghostreader/chat), explain how each of the [default prompts](/reader/guides/ghostreader/default-prompts) work, walk you through the anatomy of a prompt to help you understand how you can [build your own](/reader/guides/ghostreader/custom-prompts), provide a large [library of examples](/reader/guides/ghostreader/prompt-library) for you to use or get inspired by, and outline the details of the [various tools](/reader/guides/ghostreader/reference) you have at your disposal to incorporate your library's metadata into your custom prompts. Ghostreader is now integrated into the [Chat](/reader/guides/ghostreader/chat) interface on web and desktop. You can use the same keyboard shortcuts to access the preset prompts (`G` for word and passage selections, `shift + G` for the full document), but these will now output their reponses into the Chat. This allows you to ask follow-up questions and unifies Reader's AI into one cohesive tool. ## How to invoke Ghostreader You can use Ghostreader on the whole document or on selections of text within the document, and the available prompt presets will vary based on these use cases. For example, if you select one to four words, you'll see options meant for smaller selections, such as dictionary define and encyclopedia lookup. To use a preset Ghostreader prompt on the full document, click into the **Chat** tab of the right sidebar and open the **Preset prompts** option in the chat window, or use the keyboard shortcut `Shift + G`. On mobile, open the `...` menu in the bottom right and tap the `Ghostreader` icon. Note that answers to document-level questions will appear in the Document Note field at the top of the Notebook panel. To use Ghostreader on a specific piece of content within a document, select text and choose **Chat about this** from the context menu or use the keyboard shortcut `G`. On mobile, tap the highlight and select the ghost icon in the menu that appears. ## Learn about Ghostreader Ghostreader Prompt Library One of the greatest advantages of a customizable, creativity-fueled feature like Ghostreader is the opportunity for collaboration among the community of people who use it. This prompt library serves as a depository of ideas that anyone can use, remix, or take inspiration from. This library is organized into several sections, based on when in the reading process you would be most likely to use the prompts. - The [before reading](#before-reading) section includes prompts for *organization and pre-reading information*, like flagging certain content or generating thought-provoking questions. - The [during reading](#during-reading) section includes prompts for *annotating and learning* while in the flow of reading, like defining words or expanding a concept. - The [after reading](#after-reading) section includes prompts for *processing the documents you've already read*, like extracting your key takeaways or generating a list of to-dos. Additionally, we've included two sections specifically devoted to [generating summaries](#summary-prompts) and [tagging documents](#tagging-prompts). We've started planting the garden with prompts written by Readwise team members, but we'd love for it to propagate even further! We have some blanks that we're hoping the community can help us fill, so please write in to [hello@readwise.io](mailto:hello@readwise.io) with your ideas. If we decide to include it here, we'll send you some swag and credit you by your requested name or social media handle. If you want to flex your prompt-creation muscles but you're short on ideas, look for the prompts marked with a 📍 emoji. We're calling these "bounty prompts"—they're ideas we had for useful prompts that didn't make the cut for defaults. ## Before Reading These are prompts that help with sorting your documents and deciding what to read. ### AI Content Warning **Created by:** Dan, co-founder of Readwise ``` I am on the lookout for articles written using AI. A common telltale is the use of the word "delve". Here are all the sentences containing delve in the article titled written by : Please write a brief warning beginning with an alert emoji ⚠️ that this article contains "delve" including quoting the offending sentence. ``` Example from the article "Cal Newport, the man who never procrastinates" by Iker Seisdedos: > ⚠️ This article contains the word "delve," which is often a telltale sign of Al-generated content. The sentence in question is: "In the following years, Newport delved into his criticism of technology from within, delving into how it wreaks havoc in the workplace." ## During Reading This section is dedicated to prompts that are useful *while* you read. Examples include things like word definitions, simplifications, and in-the-flow questions. ### Vocab Flashcard **Created by:** Cayla, technical writer at Readwise This prompt uses the [Q&A action tag](/reader/docs/faqs/action-tags#how-can-i-create-a-q-and-a-mastery-card-while-reading) to create a flashcard that will integrate with Readwise. It will also grab the sentence surrounding the selected word to provide as context in the answer. ``` I just came across the word or phrase "" as used in the following sentence: " " Please create a Q&A flashcard to quiz me about the definition of "" in the following format: .qa What is the meaning of "****"? **** (part of speech): {short definition} {2 emojis} — *Example:* ____ Here's an example of the format to use: .qa What is the meaning of "**orutund**"? **orotund** *(adjective)*: pompous or grandiloquent in speech or writing 🎩🎭 — *Example:* __Groucho Marx was once asked a long and orotund question.__ IMPORTANT: Use the same markdown formatting for the same parts of the response as seen in the example. ALWAYS begin with ".qa". ``` On web, use the **Copy** option to save the response to your clipboard, then use `N` to quickly open the highlight note and paste the Ghostreader response. The markdown formatting won't render in Reader, but it will make the flashcard easier to skim (and much fancier!) in Readwise. Here's an example: Give the highlighted word a tag like vocab and create a [Themed Review](/readwise/guides/themed-reviews) in Readwise to periodically review the words you've learned! ### Etymology & Word History **Created by:** Mitch, software engineer at Readwise **Expanded by:** Cayla, technical writer at Readwise This prompt provides a brief description of a word's etymology, then adds a fun fact about how its historical usage. (The level of "fun" in the fun fact may vary.) ``` I just came across the word or phrase "" as used in the following sentence: "" In one to two succint sentences, describe the etymology of this word or phrase. Begin this description with a 📜 emoji. In a new paragraph, give me a fun fact about the use of this word in history. Begin this paragraph with a newline and a ℹ️ emoji. ``` An example response from running the prompt on the word "committees": > 📜 The word "committees" originated from the Latin word "committere," which means to entrust or to consign. It entered the English language in the late 15th century. > > ℹ️ Fun fact: The concept of committees dates back to ancient Greece, where they were used in the Athenian democracy to manage various aspects of government and decision-making. ### Definition with Phonetic Pronunciation **Created by:** Mitch, software engineer at Readwise This prompt is identical to the default "Define" prompt, except that it adds the phonetic pronunciation of the word to the response. ``` {#- This prompt instructs ChatGPT to define a word or phrase as if you'd looked it up in the dictionary. Compared to using a dictionary, however, ChatGPT will define the word "in context" meaning you'll get the definition as the word was used rather than a list of potential definitions. In addition, ChatGPT can infer definitions for novel or creative uses of words or phrases. -#} Please define "" as used in the following sentence: Use the following format for your definition: (part of speech, US IPA pronounciation): [short definition] [2 emojis] Here's an example of that format in use: abecedarian (adjective, /ˌeɪ.biˌsiˈdɛ.ri.ən/ or /ˌeɪ.biˌsiˈdær.i.ən/): rudimentary; elementary 🧮🧒 ``` ### Q&A Flashcard **Created by:** Angie, customer support specialist at Readwise **Expanded by:** Cayla, technical writer at Readwise Similarly to the [Vocab Flashcard](/reader/guides/ghostreader/prompt-library#vocab-flashcard) prompt above, this prompt uses the [Q&A action tag](/reader/docs/faqs/action-tags#how-can-i-create-a-q-and-a-mastery-card-while-reading) to create a flashcard that will integrate with Readwise. It will use your highlighted passage to generate a question and answer pair about the passage's key concept, which will then be turned into a [Mastery flashcard](/readwise/guides/mastery) when it syncs to Readwise. ``` Below is text from by : """ """ Write a question-and-answer pair that will quiz me on a key concept from the selected text. The output should always start with '.qa' and the question should end with a question mark '?'. The answer should follow and end with a period '.'. Here's an example of some selected text from The Sense of Style by Steven Pinker: === Classic style is not the same as the common but unhelpful advice to “avoid abstraction.” Sometimes we do have to write about abstract ideas. What classic style does is explain them as if they were objects and forces that would be recognizable to anyone standing in a position to see them. === Using this text, here's an example of a good Q&A pair and how it should be formatted: === .qa How can classic style be used to explain abstract ideas? Explain them as if they were objects and forces that would be recognizable to anyone standing in a position to see them. === IMPORTANT: ALWAYS begin with ".qa". ``` On web, use the **Copy** option to save the response to your clipboard, then use `N` to quickly open the highlight note and paste the Ghostreader response. ### Refute this opinion 📍 **Created by:** ? This prompt will be an "angel and devil" style prompt that asks GPT to provide a debate-worthy argument for an opposing view to the highlight or note. ``` Send your ideas to hello@readwise.io! ``` ### Coming up / Next on 📍 **Created by:** ? Similarly to the [Pick up where I left off](/reader/guides/ghostreader/default-prompts#pick-up-where-i-left-off) default prompt, this prompt idea is inspired by the format of a television show. It will give you a brief overview of the next chunk of content in the document you're reading, which you could run before putting your book down for the day to keep you excited to come back to it (or while you're still in the middle of reading, if your interest is starting to flag). ``` Send your ideas to hello@readwise.io! ``` ### Simplify v2 📍 **Created by:** ? Ghostreader comes with a [Simplify](/reader/guides/ghostreader/default-prompts#explain-passage-simplify) default prompt, but we think there's room to make it even better or adapt it for more use cases. ``` Send your ideas to hello@readwise.io! ``` ### Translate v2 📍 **Created by:** ? Ghostreader comes with a [Translate](/reader/guides/ghostreader/default-prompts#translate-to-spanish-customizable) default prompt, but we think there's room to make it even better or adapt it for more use cases. ``` Send your ideas to hello@readwise.io! ``` ### Recapitulate last few pages ("I zoned out") 📍 **Created by:** ? Ghostreader comes with a [Pick up where I left off](/reader/guides/ghostreader/default-prompts#pick-up-where-i-left-off) default prompt for when you come back to a document after some time away, but what if you've read the last page a few times already and just have no idea what it said? This prompt would summarize the recent points for you in a way that reengages your brain with the material (or finally gives you a reason to put it down for good). ``` Send your ideas to hello@readwise.io! ``` ### Have Ghostreader ask you a question 📍 **Created by:** ? In iA Writer's blog post, [Turning the Tables on AI](https://ia.net/topics/turning-the-tables-on-ai), they suggest that to ask ChatGPT a question is to deprive ourselves of a chance to better our own thinking: "Don't ask AI," they said, "let AI ask you." This prompt would have Ghostreader ask you an insightful question to kick your brain gears into drive. ``` Send your ideas to hello@readwise.io! ``` ## After Reading This section is for prompts that will help you to process what you've read and organize it appropriately in your archive. Examples of "after reading" prompts include generating your key takeaways or making a to-do list from your notes. ### Highlight-Based Summary **Created by:** Erin, community manager at Readwise If you’ve read an article and want it to go into your archive with an easily accessible summary of what you got from reading it, try out this prompt that uses your highlighted passages to generate a summary of your key takeaways. ``` Here is the document: """ """ The most important pieces from this document are: Please write four easy-to-read sentences that capture the key takeaways of this article, based on what I've already highlighted. The important pieces represent the key takeaways of the document. Please begin by saying, "Based on your highlights, here are your key takeaways from this document:" Then share THREE key takeaways. IMPORTANT: Be sure to add paragraph breaks between each section. ``` You’ll likely want to nest this inside of an if statement like this one: ``` [PROMPT] ``` This will ensure that the prompt only runs when triggered on documents you’ve already highlighted and not on freshly-added documents. You can then use `` or `` (described in the [custom prompt walkthrough](/reader/guides/ghostreaer/custom-prompts)) to delineate the prompt(s) you want it to run automatically. ### What Did I Miss? 📍 **Created by:** ? This prompt will compare your notes and highlights to the content of the document and tell you about another angle you might not have picked up on. ``` Send your ideas to hello@readwise.io! ``` ### Newsletter blurb v2 📍 **Created by:** ? Ghostreader comes with a [Draft newsletter blurb](/reader/guides/ghostreader/default-prompts#draft-newsletter-blurb) default prompt, but we think there's room to make it even better or adapt it for more use cases. ``` Send your ideas to hello@readwise.io! ``` ## Summary Prompts This section is dedicated to custom summary prompts that give you a taste of each document's flavor before you commit to reading it. ### Answer the Document's Core Question **Created by:** Dan, co-founder of Readwise This prompt will analyze the document's content, generate a question that hones in on the document's core argument, and then use that question to prompt the summary. It's a little bit meta and very effective. ``` I'm about to read a document entitled "" written by having the following summary: === === Here's some of the original content for context: === === Write a single question capturing the essence of what this document is trying to answer. I'm about to read a document entitled "" written by having the following summary: === === The key question I want answered is: "" For context, here's some of the original content: === === First, repeat the question (). Next, write three easy-to-read sentences answering that question. ``` Here's an example of the output for *Future Ethics* by Cennydd Bowles: > How can technologists responsibly navigate the ethical challenges of emerging technologies to ensure they prioritize societal well-being and democratic values over profit and control? > > Technologists should involve the public in ethical decision-making processes and prioritize the collective good over revenue. They must actively identify and mitigate potential harms their products may cause by exercising moral imagination and addressing unintended consequences. Additionally, embracing humility, realism, and a deep understanding of societal impacts will help maintain a balanced and fair approach to technology development. ### Clickbaity Question Title **Created by:** Eleanor, QA specialist at Readwise This prompt that attempts to find the diamond of real information in the rough of clickbait-style, attention-seeking headlines. As you can see from the first if statement, this runs a separate prompt on any documents that have a `?` in the title. ``` I am a busy content creator who needs to stay on top of news and the zeitgeist, but do not have time to read clickbait. You are a conscientious secretary with a PhD in history, and you screen all of my nonfiction reading to help me direct my attention. If a headline is "Should we be skeptics?" you need to provide a thesis statement that restates the question as a sentence starter instead of a question, answers it, and provides up to 3 reasons, like: "We should be skeptics because skepticism can help us learn, avoid repeating mistakes, and protect us from propaganda." Use the preceding format to create a thesis sentence that answers the question , based on the content below: Title: Author: Domain: IMPORTANT: Write no more than ONE thesis statement, like one would find at the end of an AP test's introductory paragraph. Write a tl;dr summarizing the following document: """ Title: Author: Domain: """ IMPORTANT: Write no more than TWO sentences. Each sentence should be short, matter of fact, and easy-to-read. I can't read the full text so I rely on your brief to pretend as if I had read it. If I can't fake it, I will be fired from my job. ``` Here’s an example summary from a document title “Hispanic Evangelicals — A Growing Force?” > Hispanic Evangelicals are a growing force among immigrants in the United States, with a notable increase in evangelical self-identification observed among Hispanic immigrants over the years, suggesting a nuanced shift in religious identity influenced by immigration status and generational differences. ### Creative Devices **Created by:** Erin, community manager at Readwise This prompt attempts to peer into the soul of the author and extract the heart of their ingenuity. ``` In one sentence, summarize the author of the piece, what they are exploring in this piece, and the the inciting incident that has triggered them to explore this topic. You should exclude the publication name and website. Then provide two easy-to-read sentences explaining the creative devices the author most frequently uses in the piece, such as dialogue, flashbacks, historical examples, etc. Please end the summary with a quote from the document that highlights a surprising insight. """ Title: Author: Domain: """ IMPORTANT: Please add line breaks between each section. ``` An example summary generated from this prompt: > Author Jordan Kisner explores the concept of physiognomy and the inherent biases and implications associated with judging people based on their facial features, triggered by a visit to an orthodontist who presented her with the idea of reshaping faces through orthodontic procedures. > > In this piece, the author frequently uses personal anecdotes and historical examples to illustrate the complexities of physiognomy, as well as introspective reflections to delve into the emotional and psychological impact of societal beauty standards. A surprising insight highlighted in the document is, "The aspiration to trade one's features for those of a single, photogenic face shared by many takes to an extreme a longstanding human curiosity: to edit one's face as an attempt to erase, salvage, or inscribe to manage one's own unmanageable, inherited, irreversible narrative.” ### Emoji Bullet Points **Created by:** Tristan, co-founder of Readwise This prompt prepends each core sentence with a unique emoji. They say a picture is worth a thousand words, so summarizing a 3,000 word document must be more effective with a few pictures, right? ``` Write three short sentences briefing me with the insights I need to know for the following document. Each sentence should start with a unique emoji and ending in a newline: """ Title: Author: Domain: """ IMPORTANT: Write no more than THREE sentences. Each sentence should be short, matter of fact, and easy-to-read, like talking to an 11 year old. I can't read the full text so I rely on your brief to pretend as if I had read it. Start each sentence with a unique emoji, and end it with a newline. ``` Here's an example summary of an article from the New Yorker titled "What Phones Are Doing to Reading": > 📱 Phones are making it harder for people to read books the old-fashioned way, but some apps still have benefits. > > 📚 E-reading apps can be a good break from social media and help kids read more books. > > 🤖 Despite using these apps, people are reading fewer books overall and often give up on new ones more quickly. ### Twitter List **Created by:** Dan, co-founder of Readwise The following prompt first checks the subject document to see if it contains the words “Twitter List” in the title. If it does, then a special crafted summary prompt designed specifically for extracting the current thing or main character is sent to GPT. Otherwise, the default summary prompt is used. ``` I've gathered all tweets from my favorite follows over the past 12 hours. Please help me identify the "main character" or "current thing" that people are making fun of so I can be funny too. People on Twitter tend to be sarcastic, ironic, and sardonic so you need to read into what they're saying. Oftentimes they'll make deadpan serious tweets that are completely facetious. """ """ Please use the format: Jokes about [a few words SPECIFICALLY describing the most talked about topic or event of the day]. @handle: [tweet]. IMPORTANT: Be specific when describing the main character or current thing. Cite ONE tweet only that is no more than three sentences long. Write three easy-to-read sentences to summarize the following text: """ Title: Author: Domain: {#- The if-else logic below checks if the document is long. If so, it will use key sentences to not exceed the GPT prompt window. We highly recommend not changing this unless you know what you're doing. -#} """ IMPORTANT: Write no more than THREE sentences. Each sentence should be short and easy-to-read. Use words sparingly and please capture the big idea. ``` Here’s an example of the output on a Twitter list: > Jokes about the Apple calculator glitch. @stillgray: "Excuse me, Apple, why is the calculator wrong? When you key in 50 + 50 and hit the equals key, it’ll give you 100. Multiply that by 2 and you get 200. That’s correct. But type in 50 + 50 * 2 and it spits out 150. What gives?" ### Spoiler-Free Fiction **Created by:** Cayla, technical writer at Readwise This prompt asks GPT to summarize the themes and rising action of a novel without spoiling any super secret plot twists. ``` In 1-3 concise sentences, summarize the genre and rising action of the following document. The summary should not include any spoilers about revelations discovered later on in the book. On a new line, provide an insightful or entertaining quote from the first few chapters of the document that encapsulates the writing style and interest of the story. The quote should be more than five words long, but only a single sentence. """ Title: Author: Domain: """ IMPORTANT: Do not begin the summary with "Summary:". Start the summary with a unique emoji. Start the quote with a newline and a ✨ emoji. MOST IMPORTANT: Do not edit the extracted quote for clarity. It is critical that the quote appears exactly as it is in the text without modification. ``` Here's an example summary of *Mistborn* by Brandon Sanderson: > 📚 Mistborn: The Final Empire is a fantasy novel centered around a rebellion against an oppressive regime led by the immortal Lord Ruler. The rising action follows Vin, a young street urchin, as she discovers her Mistborn abilities and joins a group of rebels led by the charismatic Kelsier, who plans to overthrow the tyrannical empire. > > ✨ “The Lord Ruler has tried very hard to crush memories of those days, but still some remain.” ### Justify the Read Time **Created by:** Fernando, chief of staff at Readwise When you’re browsing the summaries of your saved documents, what is it that you’re really looking for? If you want the summary to tell you why on earth you should spend 33 minutes of your life reading about the durability of dog toys and what that says about humanity’s moral shortcomings, this prompt is for you. ``` Write three easy-to-read sentences justifying why I should read the following text: """ Title: Author: Domain: """ IMPORTANT: Write no more than THREE sentences. Each sentence should be short and easy-to-read. Use words sparingly and please capture the big idea worth reading. ``` An example summary generated from this prompt: > Read Noah Smith's text on patriotism to understand the importance of fostering patriotism in today's political landscape, where both the Left and the Right face criticism for their stances. Explore how patriotism can influence elections and societal values, and why it's crucial for political movements to connect with the majority's love for their country. Gain insights on the evolving perceptions of patriotism and its impact on shaping national identity and political ideologies. ### Wisereads Style **Created by:** Abi, content writer at Readwise Each volume of Wisereads, our weekly newsletter showcasing the top-highlighted documents in Reader, is hand-crafted by our writer Abi. But what if all of your documents could aspire to such concise, nuanced summaries? Well, here's a prompt that lets them take a shot at it. ``` {#- This template creates a Wisereads-style blurb -#} Your job is to write compelling blurbs for articles in the same exact style of the examples below. The pattern is always one easy-to-read sentence to introduce the document, followed by a selected excerpt from the text. Here are some examples: """ Title: Andrew Huberman's Mechanisms of Control Author: Kerry Howley Domain: https://nymag.com/intelligencer/article/andrew-huberman-podcast-stanford-joe-rogan.html Output: In case you missed it, a bombshell story broke this week contrasting Andrew Huberman's podcast with his personal life as described by former partners and fellow scientists. "There is an argument to be made that it does not matter how a helpful podcaster conducts himself outside of the studio. A man unable to constrain his urges may still preach dopaminergic control to others… The people who definitively find the space between fantasy and reality to be a problem are women who fell for a podcaster who professed deep, sustained concern for their personal growth." """ "" Title: End the Phone-Based Childhood Now Author: Jonathan Haidt Domain: https://www.theatlantic.com/technology/archive/2024/03/teen-childhood-smartphone-use-mental-health-effects/677722/ Output: The rise in youth anxiety and depression over the last decade prompted Jonathan Haidt, NYU professor and author, to take a deeper look into the modern version of childhood. "The intrusion of smartphones and social media are not the only changes that have deformed childhood. There's an important backstory, beginning as long ago as the 1980s, when we started systematically depriving children and adolescents of freedom, unsupervised play, responsibility, and opportunities for risk taking, all of which promote competence, maturity, and mental health." """ """ Title: Beware the Metagame Author: Amjad Masad Domain: https://amasad.me/meta/ Output: In any discipline, there are those who do the thing and those who talk about doing the thing. Amjad Masad warns us of getting sucked into the latter — the metagame. "In the startup world [you] see famous people that sell books, talk at conferences, and tweet advice to founders, but when you take a closer look, they've never done much founding themselves. They're like the 'entrepreneurship' professor that never built a business… I call them metapreneurs." """ IMPORTANT: The introduction sentence should only be 1 sentence, always preceding the quote. The quote should be an interesting part of the text that is not more than 2 sentences long. In the introduction sentence, you should say something that adds value and helps the reader decide whether to read the full document. This might note who the author is and why they're qualified to write about the topic, what the content is about overall, or questions being explored in the content. If the content's title already explains what the content is about, there is no need to repeat those exact words. Focus on adding value to the content metadata with this introduction. MOST IMPORTANT: Do not edit the extracted quote for clarity. It is critical that the quote appears exactly as it is in the text without modification. Write one easy-to-read sentence to introduce the following text, followed by a selected quote from the text for the article below: """ """ Title: Author: Domain: Output: ``` To keep GPT on track, the prompt includes some actual Wisereads summary examples for it to emulate. Here’s an example of one it generated: > Exploring the essential role of writing in fostering critical thinking, Farnam Street delves into how the act of writing helps individuals develop a deeper understanding of complex topics. "Writing forces you to slow down, focus your attention, and think deeply... Only when we have time to play with a problem can we hope to think about it substantially.” ### Vibe Check **Created by:** Michael K., Readwise user This prompt encapsulates the three primary topics of a document, then summarizes the general sentiment of each as presented by the author. ``` Treat the following text as a review. Provide a vibe check for each topic or product by summarizing how the author feels about each. === Title: Domain: === IMPORTANT: Format the response as a series of three topics with vibes. Each topic should be summarized in a single, concise sentence that does NOT begin with "The author". Do not use any markdown or html tags. Format it like this: [emoji] **Topic 1** vibe summary ``` Here's an example of a summary generated by this prompt for the article *[Aristotle — How to live a good life](https://ralphammer.com/aristotle-how-to-live-a-good-life/)* by Ralph Ammer: > 🌟 **Philosophical Insights** > The exploration of Aristotle's thoughts on living a good life evokes a sense of admiration for the depth and relevance of his ethical framework. > > 🧠 **Intellect and Character** > The discussion on developing a clear intellect and noble character inspires a feeling of empowerment, emphasizing personal growth and responsibility. > > 😊 **Happiness as Fulfillment** > The distinction between pleasure and true happiness cultivates a thoughtful appreciation for a life rooted in virtue and purpose, rather than mere enjoyment. ## Tagging Prompts This section is dedicated to custom prompts for using Ghostreader to tag your documents (either manually or [automatically](/reader/guides/ghostreader/custom-prompts#ghostreader-tagging-tag-at-your-own-risk)). ### Fact or Fiction **Created by:** Cayla, technical writer at Readwise This prompt analyzes the document and attempts to categorize it as either fiction or nonfiction. ``` I am going to give you some sample text and other metadata from a document a user is reading. Your job is to classify the document as either nonfiction or fiction. nonfiction: Nonfiction is a genre of literature that deals with factual and real-life events, people, and information. This genre aims to inform, educate, or persuade readers based on evidence and actual occurrences. Nonfiction encompasses a wide range of works, including articles, blog posts, email newsletters, YouTube videos, research papers, contracts, research reports, biographies, memoirs, essays, and historical accounts. Nonfiction writing relies on research, accuracy, and the author's ability to present facts engagingly and informatively. Nonfiction can include comparative essays that discuss works of fiction or creative devices. fiction: Fiction is a genre of literature that involves the creation of stories and characters that are products of the author's imagination. This genre allows for creativity and innovation in plot, setting, and character development, unbound by factual accuracy. Fiction can transport readers to fantastical worlds, like Middle-earth in _The Lord of the Rings_, or depict realistic scenarios with relatable characters, such as Scout Finch in _To Kill a Mockingbird_. It explores themes, emotions, and experiences that resonate with readers, providing a lens through which to understand the human condition. Fiction encompasses a wide range of works, including novels, short stories, plays, and screenplays, allowing for diverse narrative forms and styles. """ You select a category from this list only without any further explanation. Here is the content: """ Title: Author: Domain: {#- The if-else logic below checks if the document is long. If so, it will use key sentences to not exceed the GPT prompt window. We highly recommend not changing this unless you know what you're doing. -#} """ VERY IMPORTANT: Return only the category and nothing else. Use only lowercase letters in your reply. Most appropriate category: ``` ## Ghostreader v1 Prompts This section is an archive of the prompts from the original iteration of Ghostreader, before we revamped them all when we introduced fully customizable prompts. ### Term Lookup Defines a term as it is used within the current document. ``` I came across the term while reading a document entitled "" as used in the following sentence: "" I want to understand how the author is using the term "" so I gathered sentences below which might be relevant: """ """ Based on the context above, please write a very brief description of how the author is using the term "" in this document and add any details from your knowledge which might aid my understanding. Here's an example of the length and tone to use: Legibility: In this document, legibility refers to the ease with which a society can be controlled or manipulated by the state. ``` ### Translate (to any language) Requires user input to set the language, then translates the selected passage. ``` I just came across the word or phrase "" as used in the following sentence: "" Please translate "" to in the following format: (part of speech as used in the sentence): [ equivalent] [1 emoji] Here's an example of the format as if the word "school" were used as a noun and you were asked to translate it from English to Spanish: school (noun): una escuela 🏫 ``` ### TL;DR A basic summarization prompt for selections of text. ``` Summarize the following passage using only 8 words. tl;dr: """ """ ``` ### Haiku Rewrites the passage into a haiku poem. ``` Rewrite the following below into a haiku poem consisting of three lines, with five syllables in the first line, seven in the second, and five in the third. End each line with a descriptive emoji. """ """ ``` ### Flashcard Generate a Q&A pair based on the selected text. ``` While reading a document entitled "", I came across the following passage which I want to commit to memory using a question & answer flashcard: "" Please rewrite the passage into a flashcard using the following format: Q: [question about the most salient concept] A: [answer to the question] Here's an example of the format to use: Q: What was the new way of thinking in the late 1960s that enabled efficient code production? A: The Unix philosophy, which suggests that small, modular programs, which can be easily combined to perform complex tasks, are more effective and easier to maintain than large, monolithic programs. ``` Ghostreader References While it's entirely possible to create effective custom prompts purely with plain language and one or two simple variables, the options become nearly limitless with a bit of imagination and the use of some more complex control structures. In this document, you'll find descriptions of all the variables, subroutines, and other tools you can use to customize your prompts. For those unfamiliar with the terminology, here's a quick overview: - [Variables](#variables): Placeholders for content that will be pulled from the document or selection each time the prompt is run. Ghostreader's variables include options such as `` and ``. - [Subroutines](#subroutines): Processes that can be added to modify, quantify, or search within a given variable. They are separated from the variable by a pipe symbol (`|`) and often take additional arguments. (If you're familiar with Jinja2, you'll know these as "filters".) Ghostreader's subroutines include options like `num_tokens` and `central_sentences`. - [Utilities](#utilities): Extra tools you can use to craft prompts, such as `input` and `response`. ## Variables These are all the variables that can be used to retrieve information about the current document for Ghostreader to use as input for prompts. They should be enclosed within curly brackets (``) unless they're part of a statement, like `` or ``. ### document.author Renders the author of the targeted document, as it appears in the document metadata. *Example Usage:* ``` ``` ### document.category Renders the category of the targeted document, as it appears in the document metadata. *Example Usage:* ``` ``` ### document.content Renders the full text of the targeted document. Note that this variable should generally be used inside of an [if-else statement](/reader/guides/ghostreader/custom-prompts#if-else-statements) that runs the `central_sentences` or `central_paragraphs` subroutine on documents that exceed a certain token limit. If the prompt tries to render the full context of, say, an entire novel, the prompt will likely exceed the context window and fail (or cost you a few dollars per summary, if you're using a model with a larger context window). *Example Usage:* ``` ``` ### document.domain Renders the domain that the target document was saved or imported from, such as nytimes.com or jillianhess.substack.com. *Example Usage:* ``` ``` ### document.length Renders the length of the document, in number of words, as it appears in the document metadata. *Example Usage:* ``` ``` ### document.title Renders the title of the document, as it appears in the document metadata. *Example Usage:* ``` I'm about to read a document entitled "" written by . I want you to identify the 3 most interesting questions I should consider while reading. ``` ### document.source Renders the source of the targeted document, as it appears in the document metadata. (Only relevant for RSS feeds.) *Example Usage:* ``` ``` ### document.summary Renders the current contents of the target document’s summary metadata field. (The summary was probably generated by a prompt itself—how very meta!) *Example Usage:* ``` I'm about to read a document entitled "" written by having the following summary: === === ``` ### document.tags This variable renders a list of all the tags applied to the target document. Since it returns a list, you should generally run the `join(', ')` function on it to flatten the tags into a comma-separated list. *Example Usage:* ``` Tags: ``` ### document.note Renders the contents of the document note field. *Example Usage:* ``` ``` ### document.language Renders the language that's been set in the metadata of the document. *Example Usage:* ``` I'm reading a document in . ``` ### document.progress Renders the reading progress of the document. Returns an integer symbolizing the percentage read. ### document.highlights This variable returns an array containing the document’s highlights, which in themselves contain tags and notes. To extract the relevant information in a way that GPT can process, you need to use this variable within a `for` loop, like so: ``` Tags: Note: Highlight: ``` The `highlight.tags` variable works in the same way as the `document.tags` variable and should always be used with the `join` function. `highlight.note` and `highlight.content` render the content of their respective fields. ### document.html Returns the raw HTML of the document. *Example Usage:* ``` ``` ### document.key_sentences Returns the top sentences of the document in a single string. The number of sentences returned depends on the length of the document, so you can specify a token limit if you need to keep the response within a certain length, e.g. `document.key_sentences(200)`. ### selection Returns the text selected by the user when invoking Ghostreader (i.e. the highlighted passage). *Example Usage:* ``` I just came across the word or phrase "" as used in the following sentence: "" ``` ### selection.sentence Returns the full sentence that contains the selected text. *Example Usage:* ``` I just came across the word or phrase "" as used in the following sentence: "" ``` ### selection.paragraph Returns the full paragraph that contains the selected text. *Example Usage:* ``` Within the document, I selected this text: That selection is contained in the paragraph: ``` ## Subroutines These can be used to modify the results of a variable or run another process on it. To use a subroutine with a variable, include it inside the same set of curly brackets ``, but separate it from the variable using a pipe symbol `|`. *Example:* `` ### central_sentences Mainly used with `document.content`, this subroutine analyzes the provided content and returns the sentences that best convey its main points. Note that the example usage includes the `join()` filter, which adds line breaks between each query result to keep the limits of each result clear. *Arguments:* - `top_k`: integer (default = none) - `target_tokens`: integer (default = none) - `document_order`: boolean (default = true) *Example Usage*: ``` ``` ### central_paragraphs Similar to the `central_sentences` subroutine, but returns full paragraphs. Note that the example usage includes the `join()` filter, which adds line breaks between each query result to keep the limits of each result clear. *Arguments:* - `html`: string - `target_ratio`: float (default = 0.1) - `max_paragraphs`: integer (default = 10) - `min_paragraph_length`: integer (default= 150) - `max_paragraph_length`: integer (default = 700) - `min_sentence_words`: integer (default = 5) - `max_tokens`: integer (default = 3000) - `max_tokens_tolerance`: float (default= 0.1) - `centrality_token_threshold`: integer (default = 50) - `document_order`: bool (default = true) *Example Usage*: ``` ``` ### classify This subroutine can be used to detect sentiment, labels, and tags without needing to be heavily trained for your specific use-case. Note that running this on long texts or in situations with a lot of classes can be very slow. Note that the example usage includes the `join()` filter, but uses a comma as a delimiter rather than two newlines like many of the other subroutines on this page. That's because this subroutine is meant to return single words, rather than full sentences or paragraphs. *Arguments:* - `classes`: list, strings - `hypothesis`: string (prepends the selected class in the output) - `multi-label`: boolean (default = false) - `threshold`: float (default = 0.8) *Example Usage:* ``` {{ document.content | truncate | classify(classes=["news", "sports"], hypothesis="This news article was published under {}", multi_label=True) | join(', ') }} ``` ### document_range Returns full centences, beginning with the document position of the first argument and ending at the second. For example, `document_range(10, 12)` would return the sentences found between the 10% position and the 12% position. ### lexical_search Searches the provided content and returns literal keyword matches to the provided query. Note that the example usage includes the `join()` filter, which adds line breaks between each query result to keep the limits of each result clear. *Arguments:* - `query`: string - `document_order`: boolean (default=false) - `tokens_before`: integer (default = 1) - `tokens_after`: integer (default = 1) - `limit`: integer (default = 5) *Example Usage:* ``` ``` ### most_similar Searches the provided content and returns semantic matches to the provided query. Note that the example usage includes the `join()` filter, which adds line breaks between each query result to keep the limits of each result clear. *Arguments:* - `query`: string - `top_k`: integer (default=10) - `sentences_before`: integer (default = 0) - `sentences_after`: integer (default = 0) - `document_order`: boolean (default = true) - `threshold`: float (default = 0.5) - `extractive_summary_result_threshold`: integer (default=none) - `extractive_summary_score_threshold`: float (default = none) *Example Usage:* ``` ``` ### num_tokens Used to count the number of tokens that the returned content will use. The primary use case for this subroutine is checking that the content won't exceed the context window of the GPT and cause the prompt to fail. Often used inside an `if` statement. *Example Usage:* ``` ``` ### truncate Shortens the content so that it doesn't exceed the specified number of tokens. *Arguments:* - `max_tokens`: integer (default = 1000) *Example Usage:* ``` ``` ## Utilities This section describes some extra utilities that you can use while crafting your prompts. Some of these are built-in Jinja features, while others are specific to Ghostreader. ### set This Jinja statement lets you declare your own variable. It's useful in combination with other utilities like `input` and `response`, as well as to store other variables in certain formats. It should be used inside of the same curly brackets with percentage symbols (``) as other Jinja statements like `if`. *Example Usage:* ``` ``` ### length The `length` Jinja filter returns the "number of items in a container" (as stated in the Jinja documentation). For the purposes of Ghostreader prompts, this is most applicable for variables like `document.highlights` or `document.tags` that return a list or an array. *Example Usage:* ``` ``` ### join The `join` Jinja filter is used to concatenate items using a specified delimiter. This is useful for variables like `document.tags`, and for subroutines like `central_sentences`. *Example Usage:* ``` ``` ### input This allows the prompt to take input from the user. The input is usually stored in a variable using the `set` statement. The text added inside the parentheses will be displayed as placeholder text in the input field, and it should prompt the user to provide relevant input. For example, "Ask a question about the document" or "Describe your intention". It should be enclosed in quotation marks, which will not appear in the placeholder field. Note the use of the minus symbol (`-`) in the example below. Adding this will strip any extra whitespaces from the beginning and end of the input. *Example Usage:* ``` ``` ### response This powerful utility allows you to chain GPT responses inside of a single prompt. You can use this to tell GPT to analyze the provided content and classify it or answer a question about it, then set that response as a variable that can be used to influence the rest of the prompt. Note the use of the minus symbol (`-`) in the example below. Adding this will strip any extra whitespaces from the beginning and end of the input. *Example Usage:* ``` Please extract the most surprising and non-core topic of the passage for further exploration. Do not extract the core topic. Describe this surprising, non-core but surprising topic in a few words in the style of the title of a Wikipedia article. Write a three sentence, easy-to-read paragraph in the style of a Wikipedia page teaching me about the topic: . ``` Ghostreader Tips & Tricks Ghostreader is a powerful AI assistant that can enhance your reading experience in Reader. If you've got the basics down and are looking for more ways to customize your prompts, here are some clever ways to get even more value from your documents. ## Automatically tag your Ghostreader responses Do you find yourself repeatedly adding the same highlight tags after running certain Ghostreader prompts? Maybe you always use the `vocab` tag after running the **Define word** prompt, or you like to run the **Encyclopedia lookup** prompt and then tag it with `trivia`. To do this automatically instead, you can add an [action tag](/reader/docs/faqs/action-tags) to your prompt. Action tags are applied by adding a `.` in front of the name of the tag. Here's an example of how you might add the `trivia` tag to your **Encyclopedia lookup** prompt: ``` Please write a brief encyclopedia entry for "". For context, I encountered this term in the following sentence: Here's an example of the length and tone to use for your brief encyclopedia entry: === .trivia Unix philosophy: The philosophy that small, modular programs, which can be easily combined to perform complex tasks, are more effective and easier to maintain than large, monolithic programs. === IMPORTANT: Use the same formatting for the response as seen in the example. ALWAYS begin with ".trivia" ``` The tag won't render in Reader, but it will be applied when the highlight syncs to Readwise. To see another example of using an action tag with a Ghostreader prompt, check out the [Vocab Flashcard](/reader/guides/ghostreader/prompt-library#vocab-flashcard) example in the Prompt Library. It uses the `.qa` action tag to automatically create a Mastery card in Readwise! ## Use ChatGPT to reverse-engineer a summary tone or style Are your [Ghostreader document summaries](/reader/guides/ghostreader/default-prompts#summarize-the-document) putting you to sleep with their dry, matter-of-fact tone? If you want to try crafting a prompt that has more panache, a fun tip is to reverse-engineer the writing style of a document you enjoy. Toss a few writing examples into an AI chat tool (ChatGPT, Claude, etc.) and ask it to describe the style and tone of the provided examples. After it answers, ask something like this: >If you were going to tell someone to summarize a document in the same tone as the examples above, how would you describe the style in an instructional manner so they could capture the right essence? Then you can use the verbiage it provides to write a more detailed prompt for Ghostreader. You can also provide a couple of examples of summaries you like right in the prompt, so it has more to guide it. Here's an example of a summary prompt inspired by the offbeat humor and angst of [Archive of Our Own](https://archiveofourown.org) fanfiction summaries: ``` On a new line, in 1-3 concise sentences, summarize the story in the style of a fanfiction summary. Aim for a playful, honest, and self-aware tone, as if talking to a fellow fan. Instead of a strict plot outline, focus on enticing elements like relationships, conflicts, and unique quirks, hinting at major themes or twists without giving too much away. Use fandom-inspired tags to highlight key dynamics or tropes readers might be looking for—think “Enemies to Lovers,” “Found Family,” or “Angst with a Happy Ending”. Emphasize emotion, humor, or drama, leaning into hyperbole where fitting without verging into melodrama or "cringe". ``` This particular prompt gets a bit weird with listicles like [this Verge article](https://www.theverge.com/23837448/cheap-gadgets-tools-tech-accessories-wearables). > Meet a quirky crew of sub-$50 sidekicks, from electric screwdrivers to 9V battery hacks. They’ll help you feel like the ultimate gadget savior, complete with #DIYAllies and #BudgetBliss. Just wait for the surprise cameo from an eyeglasses necklace—drama included. If you want to limit your extra-fun summary to specific documents, like EPUBs or docs with a read time longer than 20 minutes, try adding some [if-else logic](/reader/guides/ghostreader/custom-prompts#if-else-statements) to your prompt! When trying to guide the tone or style of Ghostreader, you can improve the results by using a higher-tier model. Although you might get decent results with , you can often get more flair (and less passive voice) by using GPT-4.1 or o3. You can learn how to add your own API token in the [Ghostreader FAQs](/reader/docs/faqs/ghostreader#how-can-i-use-a-different-gpt-model). ## Use Ghostreader auto-tagging to automatically tag specific documents When used in conjunction with some if-else logic, Ghostreader's [auto-tagging](/reader/guides/ghostreader/custom-prompts#automatic-prompts) feature allows you to use a custom Ghostreader prompt to automatically apply tags to certain documents based on metadata, such as source, author, etc. To apply a single tag to a particular type of document, you can use variables and if-else logic. For example, if you want to tag any article from the New York Times with a `news` tag, you could use a prompt like this: ``` {# noghost #} news ``` You can expand this to tag other kinds of documents by adding `elif` arguments to the if-else statement. Say you often save YouTube videos about ChatGPT and you want to automatically tag them with `ai`. You can use the [`document.title` variable](/reader/guides/ghostreader/reference#document-title) to check the name of the video and see if it references ChatGPT or OpenAI, then tag accordingly. ``` {# noghost #} news {# noghost #} ai ``` You can also combine this with a standard, [more taxonomical approach](/reader/guides/ghostreader/custom-prompts#ghostreader-tagging-tag-at-your-own-risk) to auto-tagging by including a full prompt in a final `elif` argument that will run if none of the previous requirements are met. Technically, `{# noghost #}` actually tells Ghostreader (i.e. the LLM) *not* to run on the provided document, and this will cause an "unknown error" when run on any document that doesn't match the specified document rules. That said, the error won't actually cause any problems other than not returning a tag if the document doesn't meet the specified requirements. This can then work in your favor to prevent unwanted documents from being tagged. Workflows With its extensive configuration options, Reader can facilitate many powerful custom workflows. The guides in this section will show off some examples of what you can do with Reader to really make it work for you. How to set up a Favorites workflow in Reader Sometimes, you might read something that really resonates with you and you know you'll want to reference it later. Although Reader has a few ways to help you resurface things you read in the past (for example, [full text search](/reader/docs/faqs/searching) or Readwise's [Chat With Highlights](/readwise/guides/chat-with-highlights) tool), it can still be handy to have a more intentional way to gather up documents you might like to revisit. ## Use a tag The simplest way to mark certain documents as favorites is to [use a tag](/reader/docs/organizing-content#tags). If you'd like to quickly apply the `favorite` tag, there's even a dedicated [keyboard shortcut](/reader/docs/faqs#does-reader-use-keyboard-shortcuts-or-hotkeys) in the web version of Reader: pressing `F` will automatically apply the "favorite" tag to the currently selected document. On mobile, you can use [swipe gestures](/reader/docs/faqs/navigation#how-do-i-customize-the-swipe-actions-in-the-reader-mobile-app) to quickly apply a tag, which might help the workflow feel a bit more natural when you're using Reader on the go. By default, a short swipe from left to right on a list item will invoke the tagging menu. You can then [create a filtered view](/reader/docs/faqs/filtered-views) to access these documents using the query `tag:favorite`. ## Create a dynamic view based on specific parameters Tags are great, but what if you want to pull in documents that you read before you started using the `favorite` tag? To gather up high-signal documents, you could [use a query](/reader/guides/filtering/syntax-guide) to create a filtered view of documents that have more than a given number of highlights. For example, if you want to display any documents where you made more than 5 highlights, you could use this query: ``` highlights__gt:5 ``` But maybe the strength of the signal depends on the number of highlights in relation to the full **length** of the article. After all, 5 highlights on a blog post says a very different thing than 5 highlights in a full length book. To narrow down your filter a bit, you could try something like this: ``` (highlights__gt:5 AND words__lt:20000) OR (highlights__gt:10 AND words__gt:20000) ``` This will display any documents **shorter** than 20,000 words that have more than 5 highlights, along with any documents **longer** than 20,000 words that have more than 10 highlights. Alternatively, you could infer the length based on the **type** of document, like so: ``` (highlights__gt:5 AND type__not:epub) OR (highlights__gt:10 AND type:epub) ``` This will display any non-EPUB documents (e.g. articles, PDFs, videos, etc) that have more than 5 highlights, along with any EPUB documents that have more than 10. ## Combine tags with dynamic queries Of course, you're not limited to only doing one or the other of the options above. With a slightly more complex query, you can automatically gather up a great selection of high-signal documents while *also* being able to manually add any document you'd like when the mood takes you. To do so, you can use a query like this: ``` (highlights__gt:5 AND words__lt:20000) OR (highlights__gt:10 AND words__gt:20000) OR tag:favorite ``` By mixing and matching [query parameters](/reader/guides/filtering/syntax-guide), you can create a custom Favorites view that matches your own workflow and use cases. Check out our [filter library](/reader/guides/filtering/query-examples) for some query examples to get you started. What is Readwise? Readwise is a digital tool designed to help you retain and organize the most valuable insights from your reading. Readwise leverages powerful techniques like spaced repetition and active recall to supercharge your memory. Through Daily Reviews, Readwise ensures you regularly revisit key insights from your reading material, perfectly timed to enhance retention. This prevents knowledge from slipping away and keeps your memory sharp. ## Where should I start? Great question! With so many options for importing, exporting, and customizing, getting set up with Readwise can feel daunting. To help ease the mental load of a new system, here are some ideas: 1. [Import existing highlights](/readwise/docs/importing-highlights) from Kindle, Apple Books, Kobo, Pocket, and more. 2. Add some [Supplemental Books](/readwise/docs/faqs#how-do-i-use-readwise-if-i-dont-have-that-many-highlights-yet) to start using Readwise even without an existing library of highlights. 3. [Customize your Daily Review](/readwise/docs/faqs/reviewing-highlights#can-i-customize-how-often-books-and-articles-appear-in-my-daily-review) to show you more of the documents you care about. 4. [Export your highlights](/readwise/docs/exporting-highlights) to your note-taking app(s) of choice, including Notion, Evernote, Obsidian, and more. ## What else can I do with Readwise? An even better question! To learn more about the deep cuts of Readwise's feature set, check out these resources: What is Readwise? Readwise is a digital tool designed to help you retain and organize the most valuable insights from your reading. Readwise leverages powerful techniques like spaced repetition and active recall to supercharge your memory. Through Daily Reviews, Readwise ensures you regularly revisit key insights from your reading material, perfectly timed to enhance retention. This prevents knowledge from slipping away and keeps your memory sharp. ## Where should I start? Great question! With so many options for importing, exporting, and customizing, getting set up with Readwise can feel daunting. To help ease the mental load of a new system, here are some ideas: 1. [Import existing highlights](/readwise/docs/importing-highlights) from Kindle, Apple Books, Kobo, Pocket, and more. 2. Add some [Supplemental Books](/readwise/docs/faqs#how-do-i-use-readwise-if-i-dont-have-that-many-highlights-yet) to start using Readwise even without an existing library of highlights. 3. [Customize your Daily Review](/readwise/docs/faqs/reviewing-highlights#can-i-customize-how-often-books-and-articles-appear-in-my-daily-review) to show you more of the documents you care about. 4. [Export your highlights](/readwise/docs/exporting-highlights) to your note-taking app(s) of choice, including Notion, Evernote, Obsidian, and more. ## What else can I do with Readwise? An even better question! To learn more about the deep cuts of Readwise's feature set, check out these resources: API Documentation Our API supports creating, fetching, and updating highlights on behalf of the user. Rather than following any particular standard to the letter, we tried to make it as fun to use and easy to understand as possible. If you have any questions, please [reach out :)](mailto:api@readwise.io) Looking for the API docs for Reader? [See here](/reader/docs/api). ## Authentication Set a header with key "Authorization" and value: "Token XXX" where XXX is your Readwise access token. You (or your users) can get that from here: [readwise.io/access_token](https://readwise.io/access_token) If you want to check that a token is valid, just make a GET request to `https://readwise.io/api/v2/auth/` with the above header. You should receive a `204` response. ## Rate Limiting The default base rate is 240 requests per minute (per access token) but the `Highlight LIST` and `Book LIST` endpoints are restricted to 20 per minute (per access token). You can check `Retry-After` header in the 429 response to get the amount of seconds to wait for. --- ## Highlight CREATE If you want to save highlights to a user's Readwise account from your own application, this is the only endpoint you should need. **Request**: `POST` to `https://readwise.io/api/v2/highlights/` **Parameters:** A JSON object with the key `highlights`, pointing to an array of objects, each with these keys: | Key | Type | Description | Required | |-----|------|-------------|----------| | text | string | The highlight text, (technically the only field required in a highlight object). Maximum length: 8191 characters. | yes | | title | string | Title of the book/article/podcast (the "source"). Maximum length: 511 characters. | no | | author | string | Author of the book/article/podcast (the "source"). Maximum length: 1024 characters. | no | | image_url | string | The url of a cover image for this book/article/podcast (the "source"). Maximum length: 2047 characters. | no | | source_url | string | The url of the article/podcast (the "source"). Maximum length: 2047 characters. | no | | source_type | string | A meaningful unique identifier for your app (string between 3 and 64 chars, no spaces). Example: `my_app`. (Note: for legacy integrations book/article/podcast can also be passed here, but it is not recommended anymore.) Maximum length: 64 characters. | no | | category | string | One of: `books`, `articles`, `tweets` or `podcasts`. This will determine where the highlight shows in the user's dashboard and some aspects of how we render it. If category is not provided we will assume that the category is either `articles` (if source_url is provided) or (otherwise) a `books`. | no | | note | string | Annotation note attached to the specific highlight. You can also use this field to create tags thanks to our [inline tagging](https://blog.readwise.io/tag-your-highlights-while-you-read/) functionality. Please note that inline tagging does not recreate tags after they have been deleted. Maximum length: 8191 characters. | no | | location | integer | Highlight's location in the source text. Used to order the highlights. If not provided we will fill this based on the order of highlights in the list. If location_type is `time_offset`, we interpret the integer as number of seconds that elapsed from the start of the recording. | no | | location_type | string | One of: `page`, `location`, `none`, `order`, `offset` or `time_offset`. Default is `order`. If provided type is different than "order", make sure to provide location as well (see below). | no | | highlighted_at | string | A datetime representing when the highlight was taken in the ISO 8601 format; default timezone is UTC. Example: `"2020-07-14T20:11:24+00:00"` | no | | highlight_url | string | **Unique** url of the specific highlight (eg. a concrete tweet or a podcast snippet). Maximum length: 4095 characters. | no | The `highlights` array can be length 1+ and each highlight can be from the same or multiple books/articles. If you don't include a title, we'll put the highlight in a generic "Quotes" book, and if you don't include an author we'll keep it blank or just use the URL domain (if a `source_url` was provided). Finally, **we de-dupe highlights by title/author/text/source_url**. So if you send a highlight with those 4 things the same (including nulls) then it will do nothing rather than create a "duplicate". You can also use this endpoint to easily update a previously created highlight if a `highlight_url` was set. Pass the same url with a new text and the highlight's text will be updated. **Response:** - Status code: `200` - List of created/updated books/articles/podcasts: ```json [ { "id": 111, "title": "Moby Dick", "author": "Herman Melville", "category": "books", "source": "api_book", "num_highlights": 2, "last_highlight_at": null, "updated": "2020-10-08T12:00:22.447912Z", "cover_image_url": "https://readwise.io/static/images/default-book-icon-0.png", "highlights_url": "https://readwise.io/bookreview/111", "source_url": null, "modified_highlights": [ 1337 ] } ] ``` Note that under `modified_highlights` key you can obtain ids of the highlights that were created or updated directly by your request. **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/', type: 'POST', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ 'highlights': [ { // A highlight in a book 'text': 'Call me Ishmael', 'title': 'Moby Dick', 'author': 'Herman Melville', }, { // Another highlight, later in the same book 'text': "...but don't ever call me an octopus", 'title': 'Moby Dick', 'author': 'Herman Melville', }, ], }), success: function (result) {console.log(result)}, error: function (error) {console.log(error)}, }); ``` Another example of different use cases: ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/', type: 'POST', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ 'highlights': [ { // A highlight from an article, // with an attached note the user made. 'text': 'To be happy I think you have to be doing... ', 'title': 'How to Do What You Love', 'author': 'Paul Graham', 'source_url': 'http://www.paulgraham.com/love.html', 'source_type': 'my_app', 'category': 'articles', 'note': 'Love this quote', }, { // Minimal example: just a text highlight. // By default, this will be put into a generic "Quotes" book. 'text': 'My lovely passage', }, ], }), success: function (result) {console.log(result)}, error: function (error) {console.log(error)}, }); ``` **Python Example:** ```python import requests requests.post( url="https://readwise.io/api/v2/highlights/", headers={"Authorization": "Token XXX"}, json={ "highlights": [{ "text": "Call me Ishmael", "title": "Moby Dick", "author": "Herman Melville", "source_type": "my_reading_app", "category": "books", "location_type": "page", "location": 3, "highlighted_at": "2020-07-14T20:11:24+00:00", }] } ) ``` **Bash:** ```bash $ curl --request POST --url https://readwise.io/api/v2/highlights/ \ -H 'Authorization: Token XXX' -H 'Content-Type: application/json' \ --data '{"highlights":[{"text": "Call me Ishmael","title": "Moby Dick","author": "Herman Melville"}]}' < HTTP/1.1 200 OK [{"title":"Moby Dick","highlights_url":"https://readwise.io/bookreview/123"}] ``` --- ## Highlight EXPORT If you want to pull all of the highlights from a user's account into your service (eg notetaking apps, backups, etc) this endpoint is all you need! **Request**: `GET` to `https://readwise.io/api/v2/export/` **Parameters:** - `updatedAfter` – (Optional, Formatted as ISO 8601 date) Fetch only highlights updated after this date. - `ids` – (Optional) Comma-separated list of `user_book_id`s, returns all highlights for these books only. - `includeDeleted` – (Optional) If set to `true`, returns all highlights, including deleted. Use it to synchronize deletions to your app. - `pageCursor` – (Optional) A string returned by a previous request to this endpoint. Use it to get the next page of books/highlights if there are too many for one request. The recommended way to use this endpoint is to first sync all of a user's historical data by passing no parameters on the first request, then pageCursor until there are no pages left. Then later, if you want to pull newly updated highlights, just pass updatedAfter as the time you last pulled data. This is shown in the examples below. All dates used/returned are in UTC. The `external_id` field serves as a reference to the User Book in the source system it was imported from. This field is currently available only when `source` is `reader`. **Response:** - Status code: `200` ```json { "count": 2, "nextPageCursor": null, "results": [ { "user_book_id": 123, "is_deleted": false, "title": "Some title", "author": "Some author", "readable_title": "Some title", "source": "raindrop", "cover_image_url": "https://cover.com/image.png", "unique_url": "", "book_tags": [], "category": "articles", "document_note": "", "summary": "", "readwise_url": "https://readwise.io/bookreview/123", "source_url": "", "external_id": "01arz3ndektsv4rrffq69g5fav", "asin": null, "highlights": [ { "id": 456, "is_deleted": false, "text": ""XPTO."", "location": 1, "location_type": "order", "note": null, "color": "yellow", "highlighted_at": "2022-09-13T16:41:53.186Z", "created_at": "2022-09-13T16:41:53.186Z", "updated_at": "2022-09-14T18:50:30.564Z", "external_id": "6320b2bd7fbcdd7b0c000b3e", "end_location": null, "url": null, "book_id": 123, "tags": [], "is_favorite": false, "is_discard": false, "readwise_url": "https://readwise.io/open/456" }, { "id": 890, "is_deleted": false, "text": "Foo Bar.", "location": 2, "location_type": "order", "note": null, "color": "yellow", "highlighted_at": "2022-09-13T16:41:53.186Z", "created_at": "2022-09-13T16:41:53.186Z", "updated_at": "2022-09-14T18:50:30.568Z", "external_id": "6320b2c77fbcdde217000b3f", "end_location": null, "url": null, "book_id": 123, "tags": [], "is_favorite": false, "is_discard": false, "readwise_url": "https://readwise.io/open/890" } ] } ] } ``` **JavaScript Example:** ```javascript const token = "XXX"; // use your access token here const fetchFromExportApi = async (updatedAfter=null) => { let fullData = []; let nextPageCursor = null; while (true) { const queryParams = new URLSearchParams(); if (nextPageCursor) { queryParams.append('pageCursor', nextPageCursor); } if (updatedAfter) { queryParams.append('updatedAfter', updatedAfter); } console.log('Making export api request with params ' + queryParams.toString()); const response = await fetch('https://readwise.io/api/v2/export/?' + queryParams.toString(), { method: 'GET', headers: { Authorization: `Token ${token}`, }, }); const responseJson = await response.json(); fullData.push(...responseJson['results']); nextPageCursor = responseJson['nextPageCursor']; if (!nextPageCursor) { break; } } return fullData; }; // Get all of a user's books/highlights from all time const allData = await fetchFromExportApi(); // Later, if you want to get new highlights updated since your last fetch of allData, do this. const lastFetchWasAt = new Date(Date.now() - 24 * 60 * 60 * 1000); // use your own stored date const newData = await fetchFromExportApi(lastFetchWasAt.toISOString()); ``` **Python Example:** ```python import datetime import requests # This may need to be installed from pip token = 'XXX' def fetch_from_export_api(updated_after=None): full_data = [] next_page_cursor = None while True: params = {} if next_page_cursor: params['pageCursor'] = next_page_cursor if updated_after: params['updatedAfter'] = updated_after print("Making export api request with params " + str(params) + "...") response = requests.get( url="https://readwise.io/api/v2/export/", params=params, headers={"Authorization": f"Token {token}"}, verify=False ) full_data.extend(response.json()['results']) next_page_cursor = response.json().get('nextPageCursor') if not next_page_cursor: break return full_data # Get all of a user's books/highlights from all time all_data = fetch_from_export_api() # Later, if you want to get new highlights updated since your last fetch of allData, do this. last_fetch_was_at = datetime.datetime.now() - datetime.timedelta(days=1) # use your own stored date new_data = fetch_from_export_api(last_fetch_was_at.isoformat()) ``` --- ## Daily Review LIST Returns your daily review highlights **Request**: `GET` to `https://readwise.io/api/v2/review/` **Response:** - Status code: `200` ```json { "review_id": 877266693, "review_url": "https://readwise.io/reviews/877266693", "review_completed": false, "highlights": [ { "text": "Few of the great creators have bland personalities. They are cantankerous egotists, the kind of men who are unwelcome in the modern corporation. Consider Winston Churchill. He drank like a fish. He was capricious and wilful. When opposed, he sulked. He was rude to fools. He was wildly extravagant. He wept on the slightest provocation. His conversation was Rabelaisian.\n\nHe was inconsiderate to his staff. Yet Lord Alanbrooke, his Chief of Staff, could write:\n\nI shall always look back on the years I worked with him as some of the most difficult and trying ones in my life. For all that I thank God that I was given the opportunity of working alongside of such a man, and of having my eyes opened to the fact that occasionally such supermen exist on this earth.", "title": "Confessions of an Advertising Man", "author": "David Ogilvy", "url": null, "source_url": null, "source_type": "book", "category": null, "location_type": "page", "location": 45, "note": "On great creators and Churchill", "highlighted_at": "2023-05-31T14:47:36.344000Z", "highlight_url": null, "image_url": "https://m.media-amazon.com/images/I/51iTic+feKL.jpg", "id": 539866941, "api_source": null } ] } ``` **JavaScript Example:** ```javascript const token = "XXX"; // use your access token here const fetchDailyReview = async () => { let fullData = []; let nextPageCursor = null; const response = await fetch('https://readwise.io/api/v2/review/', { method: 'GET', headers: { Authorization: `Token ${token}`, }, }); const responseJson = await response.json(); return responseJson; }; const dailyReviewHighlights = await fetchDailyReview(); ``` **Python Example:** ```python import requests # This may need to be installed from pip token = 'XXX' def fetch_daily_review(): response = requests.get( url="https://readwise.io/api/v2/review/", headers={"Authorization": f"Token {token}"}, verify=False ) return response.json() daily_review_highlights = fetch_daily_review() ``` --- # Advanced API The Highlight CREATE and EXPORT endpoints above should be sufficient for almost all usecases that either want to create or export books/highlights. The below endpoints can be used for more complex integrations, that might want to carefully read, query, update, or delete a user's highlights. ## Highlights LIST **Request**: `GET` to `https://readwise.io/api/v2/highlights/` **Parameters:** Usual query params: - `page_size` – specify number of results per page (default is 100, max is 1000) - `page` – specify the pagination counter - `book_id` – return highlights of a specifed book (for obtaining book ids, see section below) - `updated__lt` – filter by last updated datetime (less than) - `updated__gt` – filter by last updated datetime (greater than) - `highlighted_at__lt` – filter by the time when highlight was taken (NOTE that some highlights may not have value set) - `highlighted_at__gt` – filter by the time when highlight was taken (NOTE that some highlights may not have value set) **Response:** - Status code: `200` - A list of highlights with a pagination metadata: ```json { "count": 1163, "next": "https://readwise.io/api/v2/highlights?page=2", "previous": null, "results": [ { "id": 59758950, "text": "The fundamental belief of metaphysicians is THE BELIEF IN ANTITHESES OF VALUES.", "note": "", "location": 9, "location_type": "order", "highlighted_at": null, "url": null, "color": "", "updated": "2020-10-01T12:58:44.716235Z", "book_id": 2608248, "tags": [ { "id": 123456, "name": "philosophy" } ] } ] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: {"page_size": 10}, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests # getting highlights from a particular book # made after February 1st, 2020, 21:35:53 UTC querystring = { "book_id": 1337, "highlighted_at__gt": "2020-02-01T21:35:53Z", } response = requests.get( url="https://readwise.io/api/v2/highlights/", headers={"Authorization": "Token XXX"}, params=querystring ) data = response.json() ``` ## Highlight DETAIL **Request**: `GET` to `https://readwise.io/api/v2/highlights//` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `200` - Representation of a specific highlight: ```json { "id": 13, "text": "To be alone for any length of time is to shed an outer skin. The...", "note": "", "location": 57, "location_type": "location", "highlighted_at": "2020-02-02T16:46:07Z", "url": null, "color": "yellow", "updated": "2020-04-06T12:30:52.318552Z", "book_id": 1337, "tags": [] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/13/', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.get( url="https://readwise.io/api/v2/highlights/13/", headers={"Authorization": "Token XXX"}, ) data = response.json() ``` ## Highlight UPDATE **Request**: `PATCH` to `https://readwise.io/api/v2/highlights//` **Parameters:** A JSON object with one or more of the following keys: | Key | Type | Description | Required | |-----|------|-------------|----------| | text | string | The highlight text, (technically the only field required in a highlight object) | no | | note | string | Annotation note attached to the specific highlight | no | | location | string | Highlight's location in the source text. Used to order the highlights. If not provided we will fill this based on the order of highlights in the list. If location_type is `time_offset`, we interpret the integer as number of seconds that elapsed from the start of the recording. | no | | url | string | Unique url of the specific highlight (eg. a concrete tweet or a podcast snippet) | no | | color | string | Highlight's color tag. One of: yellow, blue, pink, orange, green, purple. | no | **Response:** - Status code: `200` - The detail representation of patched highlight: ```json { "id": 13, "text": "To be alone for any length of time is to shed an outer skin. The...", "note": "", "location": 57, "location_type": "location", "highlighted_at": "2020-02-02T16:46:07Z", "url": null, "color": "orange", "updated": "2020-04-06T12:30:52.318552Z", "book_id": 1337, "tags": [] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/13/', type: 'PATCH', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "color": "green", "note": "This makes me think of what Marcus Aurelius wrote" }), success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests payload = { "color": "green", "note": "This makes me think of what Marcus Aurelius wrote", } response = requests.patch( url="https://readwise.io/api/v2/highlights/13/", headers={"Authorization": "Token XXX"}, data=payload ) data = response.json() ``` ## Highlight DELETE **Request**: `DELETE` to `https://readwise.io/api/v2/highlights//` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `204` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/13/', type: 'DELETE', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.delete( url="https://readwise.io/api/v2/highlights/13/", headers={"Authorization": "Token XXX"}, ) ``` ## Highlight Tags LIST **Request**: `GET` to `https://readwise.io/api/v2/highlights//tags` **Parameters:** Usual query params: - `page_size` – specify number of results per page (default is 100, max is 1000) - `page` – specify the pagination counter **Response:** - Status code: `200` - A list of highlight's tags with a pagination metadata: ```json { "count": 1, "next": null, "previous": null, "results": [ { "id": 11311390, "name": "philosophy" } ] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/59767830/tags', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.get( url="https://readwise.io/api/v2/highlights/59767830/tags", headers={"Authorization": "Token XXX"}, ) data = response.json() ``` ## Highlight Tag DETAIL **Request**: `GET` to `https://readwise.io/api/v2/highlights//tags/` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `200` - Highlight's tag: ```json { "id": 11311390, "name": "philosophy" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/59767830/tags/11311390', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.get( url="https://readwise.io/api/v2/highlights/59767830/tags/11311390", headers={"Authorization": "Token XXX"}, ) data = response.json() ``` ## Highlight Tag CREATE **Request**: `POST` to `https://readwise.io/api/v2/highlights//tags/` **Parameters:** A JSON object with the following key: | Key | Type | Description | Required | |-----|------|-------------|----------| | name | string | The tag's name. Maximum length: 127 characters. | yes | **Response:** - Status code: `200` - Highlight's tag: ```json { "id": 11311390, "name": "philosophy" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/59767830/tags', type: 'POST', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "name": "philosophy", }), success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests requests.post( url="https://readwise.io/api/v2/highlights/59767830/tags", headers={"Authorization": "Token XXX"}, json={"name": "philosophy"} ) data = response.json() ``` ## Highlight Tag UPDATE **Request**: `PATCH` to `https://readwise.io/api/v2/highlights//tags/` **Parameters:** A JSON object with the following key: | Key | Type | Description | Required | |-----|------|-------------|----------| | name | string | The tag's name. | yes | **Response:** - Status code: `200` - Updated highlight's tag: ```json { "id": 11311390, "name": "continental philosophy" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/59767830/tags/11311390', type: 'PATCH', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "name": "continental philosophy", }), success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests requests.patch( url="https://readwise.io/api/v2/highlights/59767830/tags/11311390", headers={"Authorization": "Token XXX"}, json={"name": "continental philosophy"} ) data = response.json() ``` ## Highlight Tag DELETE **Request**: `DELETE` to `https://readwise.io/api/v2/highlights//tags/` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `204` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/highlights/59767830/tags/11311390', type: 'DELETE', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.delete( url="https://readwise.io/api/v2/highlights/59767830/tags/11311390", headers={"Authorization": "Token XXX"}, ) ``` ## Books LIST **Request**: `GET` to `https://readwise.io/api/v2/books/` **Parameters:** Usual query params: - `page_size` – specify number of results per page (default is 100, max is 1000) - `page` – specify the pagination counter - `category` – return books within a specified category (`books`, `articles`, `tweets`, `supplementals` or `podcasts`) - `source` – return books from a specified source - `updated__lt` – filter by last updated datetime (less than) - `updated__gt` – filter by last updated datetime (greater than) - `last_highlight_at__lt` – filter by the time when highlight was taken (NOTE that some books may not have this value set) - `last_highlight_at__gt` – filter by the time when highlight was taken (NOTE that some books may not have this value set) **Response:** - Status code: `200` - A list of books with a pagination metadata: ```json { "count": 9, "next": "https://readwise.io/api/v2/books/?page=2", "previous": null, "results": [ { "id": 1776, "title": "Early Retirement Extreme", "author": "Jacob Lund Fisker", "category": "books", "source": "kindle", "num_highlights": 68, "last_highlight_at": "2019-03-19T03:49:23Z", "updated": "2020-10-01T17:47:31.234826Z", "cover_image_url": "https://readwise.io/static/images/default-book-icon-2.png", "highlights_url": "https://readwise.io/bookreview/1776", "source_url": null, "asin": "B0046LU7H0", "tags": [], "document_note": "" }, { "id": 1826, "title": "What Is the Point of Universal Basic Income?", "author": "David Perell", "category": "articles", "source": "api_article", "num_highlights": 3, "last_highlight_at": "2020-02-03T09:51:17Z", "updated": "2020-03-17T06:44:44.601570Z", "cover_image_url": "https://readwise.io/static/images/article4.png", "highlights_url": "https://readwise.io/bookreview/1826", "source_url": "https://perell.com/fellowship-essay/universal-basic-income", "asin": null, "tags": [], "document_note": "" } ] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: {"page_size": 500, "category": "articles"}, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import datetime import requests # getting books that were updated last week a_week_ago = datetime.datetime.now() - datetime.timedelta(days=7) querystring = { "category": "books", "updated__gt": a_week_ago.strftime("%Y-%m-%dT%H:%M:%SZ"), } response = requests.get( url="https://readwise.io/api/v2/books/", headers={"Authorization": "Token XXX"}, params=querystring ) data = response.json() ``` ## Book DETAIL **Request**: `GET` to `https://readwise.io/api/v2/books//` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `200` - A book representation: ```json { "id": 1776, "title": "Early Retirement Extreme", "author": "Jacob Lund Fisker", "category": "books", "source": "kindle", "num_highlights": 68, "last_highlight_at": "2019-03-19T03:49:23Z", "updated": "2020-10-01T17:47:31.234826Z", "cover_image_url": "https://readwise.io/static/images/default-book-icon-2.png", "highlights_url": "https://readwise.io/bookreview/1776", "source_url": null, "asin": "B0046LU7H0", "tags": [], "document_note": "" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/1776/', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.get( url="https://readwise.io/api/v2/books/1776/", headers={"Authorization": "Token XXX"}, ) data = response.json() ``` ## Book Tags LIST **Request**: `GET` to `https://readwise.io/api/v2/books//tags` **Parameters:** Usual query params: - `page_size` – specify number of results per page (default is 100, max is 1000) - `page` – specify the pagination counter **Response:** - Status code: `200` - A list of book's tags with a pagination metadata: ```json { "count": 1, "next": null, "previous": null, "results": [ { "id": 11311390, "name": "philosophy" } ] } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/59767830/tags', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.get( url="https://readwise.io/api/v2/books/59767830/tags", headers={"Authorization": "Token XXX"}, ) data = response.json() ``` ## Book Tag DETAIL **Request**: `GET` to `https://readwise.io/api/v2/books//tags/` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `200` - Highlight's tag: ```json { "id": 11311390, "name": "philosophy" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/59767830/tags/11311390', type: 'GET', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.get( url="https://readwise.io/api/v2/books/59767830/tags/11311390", headers={"Authorization": "Token XXX"}, ) data = response.json() ``` ## Book Tag CREATE **Request**: `POST` to `https://readwise.io/api/v2/books//tags/` **Parameters:** A JSON object with the following key: | Key | Type | Description | Required | |-----|------|-------------|----------| | name | string | The tag's name. Maximum length: 512 characters. | yes | **Response:** - Status code: `200` - Book's tag: ```json { "id": 11311390, "name": "philosophy" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/59767830/tags', type: 'POST', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "name": "philosophy", }), success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests requests.post( url="https://readwise.io/api/v2/books/59767830/tags", headers={"Authorization": "Token XXX"}, json={"name": "philosophy"} ) data = response.json() ``` ## Book Tag UPDATE **Request**: `PATCH` to `https://readwise.io/api/v2/books//tags/` **Parameters:** A JSON object with the following key: | Key | Type | Description | Required | |-----|------|-------------|----------| | name | string | The tag's name. | yes | **Response:** - Status code: `200` - Updated highlight's tag: ```json { "id": 11311390, "name": "continental philosophy" } ``` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/59767830/tags/11311390', type: 'PATCH', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, data: JSON.stringify({ "name": "continental philosophy", }), success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests requests.patch( url="https://readwise.io/api/v2/books/59767830/tags/11311390", headers={"Authorization": "Token XXX"}, json={"name": "continental philosophy"} ) data = response.json() ``` ## Book Tag DELETE **Request**: `DELETE` to `https://readwise.io/api/v2/books//tags/` **Parameters:** This endpoint doesn't take any parameters. **Response:** - Status code: `204` **JavaScript Example:** ```javascript $.ajax({ url: 'https://readwise.io/api/v2/books/59767830/tags/11311390', type: 'DELETE', contentType: 'application/json', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Token XXX'); }, success: function (result) { console.log(result) }, error: function (error) { console.log(error) }, }); ``` **Python Example:** ```python import requests response = requests.delete( url="https://readwise.io/api/v2/books/59767830/tags/11311390", headers={"Authorization": "Token XXX"}, ) ``` 📤 Exporting Highlights ## What types of exports does Readwise support? Readwise supports basic text exports in [Markdown and CSV format](/readwise/docs/exporting-highlights/markdown-csv/), as well as exports to a variety of popular note-taking apps like [Notion](/readwise/docs/exporting-highlights/notion/), [Evernote](/readwise/docs/exporting-highlights/evernote/), and [Obsidian](/readwise/docs/exporting-highlights/obsidian/). To see all the export options, visit the [export page](https://readwise.io/export) of your Readwise account. ## How can I update/refresh a document that's already been exported? If you add new highlights to a document that has already been exported to a note-taking app (such as Evernote, Notion, Roam, etc.), the new highlights will be appended to the end of the note in your respective app. If you edit highlights (or add notes/tags) in Readwise to highlights that have already been exported, those changes will **not** propagate to your note-taking app. This is to ensure that none of your notes are accidentally overwritten. To re-export the modified note, you'll need to use the refresh feature on the setup page for the export you're using. 1. Go to your note-taking app, and delete the existing page for the document you want to refresh. 2. Go to the Readwise Export Preferences for your note-taking app of choice. 3. Toggle on **Select Items to be Exported**. 4. Click the refresh icon to the right of the document you'd like to re-sync: ![Refresh your highlights](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/65d674b0e3adc6007de13d78/file-2zQ3LL78j5.png) 5. Finally, trigger a new export via the **Start** button at the top of the page (for apps like Notion or Evernote) or from within the target app (for apps like Obsidian or LogSeq). The latest version of all of your highlights/notes/tags for that book will then be synced fresh! How does the Readwise to Apple Notes export work? To begin exporting your Readwise highlights to Apple Notes, you first need to install the Apple Notes Mac tool on your Mac computer, which you can download from the [export setup page](https://readwise.io/apple_notes). Once you've installed the tool, locate it in your Applications folder and open it. Click the **Connect** button to connect your Readwise account. This will open your default web browser and take you to the Readwise website. If you're not already logged in, you'll be prompted to do so. Once you're logged in, you can switch back to the Mac tool. Before you can begin syncing your highlights, you'll need to give the tool permission to access your Apple Notes folder on your computer by clicking the **Open** button in the folder window that appears. You'll also be prompted to grant the tool permission to edit your Apple Notes. Click **Allow** to continue. ## Configuring the sync Once you've connected your Readwise account and granted the tool permission to access your Apple Notes folder, you'll be taken to the tool's configuration screen. 1. **Initiate Sync**: Click this button to begin syncing your highlights to Apple Notes. 2. **Customize formatting options**: This will take you to the Readwise website where you can customize the formatting options for your highlights. 3. **Customize base folder**: By default, the tool will export to a folder called "Readwise". You can change this to anything you'd like. 4. **Pick an account**: If you have multiple Apple Notes accounts, you can select which one you'd like to export to. 5. **Configure resync frequency**: This allows you to set how often the tool should check for new highlights and sync them to Apple Notes. By default, it's set to *Manual*, so it will never run automatically. 6. **Sync automatically on app open**: Turning this toggle on will cause the tool to sync your highlights to Apple Notes whenever you open the Mac tool. 7. **Disconnect**: This will disconnect your Readwise account from the tool. ## Customizing the formatting You can customize the formatting of your highlights in Apple Notes by clicking the **Customize formatting options** button in the tool's configuration screen. This will take you to the Readwise website where you can customize the formatting options for your highlights. You can also navigate directly to the [Apple Notes customization](https://readwise.io/apple_notes) page from the Export page in the Readwise web app. 1. **Include Highlight Locations**: Keep this on to include the location or page information of each highlight in the export. 2. **Include Book Cover Images**: This will include the book cover image at the top of each note, which will also display as a thumbnail in the document list. 3. **Select Items to be Exported**: Turning this option on will allow you to manually select which documents will be exported to Apple Notes. When this option is turned off, all documents in your account will sync when an export is triggered. ## FAQs ### Can I create subfolders for my highlights in Apple Notes? By default, the tool will export all of your highlights to a single folder in Apple Notes. You can create subfolders and manually move your Readwise documents into them, but this will break the sync and future highlights will not be added to the notes you've moved. ### What happens when I add new highlights? Any highlights you’ve made in existing documents since the last sync will be appended to the end of the existing note for that document in Apple Notes. ### If I make changes to a highlight in Readwise, will the document note update in Apple Notes? No, all Readwise exports are append-only to prevent the export from accidentally overwriting changes you might have made in the target note-taking app. If you want to update a document's highlights in Apple Notes, you can [manually refresh the document](/readwise/docs/exporting-highlights#how-can-i-update-refresh-a-document-thats-already-been-exported) from the Readwise website. ### Can I refresh all of my highlights in Apple Notes? Yes! To refresh all of the highlights in your Apple Notes, simply delete the Readwise folder in Apple Notes and then initiate a new sync from the Mac tool. This will create a new folder with all of your highlights. ### Can I export my Readwise highlights to Apple Notes using my iPhone or iPad? Apple's API only allows connections and exports to be initiated from a MacOS computer, so we're not currently able to create an exporter for iOS. However, if you don't have access to a Mac computer, Harley Stagner has created a few [iOS Shortcuts](https://www.harleystagner.com/posts/import-readwise-highlights-into-apple-notes/) that allow you to share your highlights to Apple Notes using your mobile device. How does the Readwise to Capacities export integration work? ## How to set up the integration To begin exporting your Readwise highlights to Capacities, go to your Capacities app (web or desktop) and open the **Settings** panel from the cog icon in the lower left corner. In the **Settings** panel, locate the **Readwise Integration** option in the left menu. Click the **Connect to Readwise** button to open the authorization page, then click the blue **Authorize** button to allow the connection. The Readwise integration is limited to Capacities Pro users. If you're not seeing the Readwise integration option in your **Settings** panel, you may need to [upgrade your account](https://capacities.io/pricing). ## How to export Readwise content to Capacities The Capacities integration does *not* automatically export every document from your Readwise library to Capacities. (If you're curious about the reasoning, you can [read their blog plost](https://capacities.io/blog/our-readwise-integration-approach) about why they opted for a more manual method.) There are two ways to move content from Readwise to Capacities: by adding a tag in Readwise, or by manually searching for the document in Capacities. ### Add a tag in Readwise You can add a tag to the document in Readwise that will cause it to sync to Capacities. Note that this method works with *document tags*, not *highlight tags*. Individually tagged highlights will not be synced unless their parent document is also synced. By default, the sync tag is `capacities`, but you can change that in the **Readwise Integration** settings in the Capacities app by clicking the "Edit" button that appears on hover. You can add a document tag from the [Readwise library page](https://readwise.io/library) by clicking into the dropdown settings a particular document. You can also do this from the top of the document page itself. If you're only syncing your Readwise content to one Capacities space, you can check the **Sync all new items** option. This will automatically sync any *newly added documents* from Readwise to Capacities, but it will *not* sync any documents that already existed in your Readwise library before authorizing the integration. ### Manually search and import from Capacities To sync a document from within Capacities, you can use the app's command palette (`cmd/ctrl + P`) and search for **Import from Readwise**. Selecting this will display a list of your Readwise documents, and then selecting a document from that list will sync the individual document into Capacities. Note that doing this will automatically add your selected syn tag (`capacities` by default) to the document in Readwise. ## Capacities integration FAQs ### Can I edit my highlights in Capacities? Yes! You can edit the text of a highlight as you wish and the Readwise integration will not overwrite any changes you've made in Capacities. Check out the Capacities help documentation for [more information and ideas about how you can work with your highlights](https://docs.capacities.io/reference/integrations/readwise#working-with-highlights). ### Can I use my Readwise document metadata to automatically populate the properties of my Capacities objects? Yes! In the **Readwise Integration** settings panel in Capacities, you can use the **Object mappings** section to configure which Readwise metadata is used to populate which properties in Capacities. See the Capacities help documentation for more information about [how to configure object mappings](https://docs.capacities.io/reference/integrations/readwise#object-mappings). ### What happens when I take new highlights? Will those automatically sync with Capacities? Yes. New highlights made in documents that are already synced with Capacities (either via the sync tag or manual selection) will be added to the page inside of Capacities. Since the sync is append-only, nothing in Capacities will ever be overwritten. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or Capacities. If you need to sync sooner, you should first force a manual resync in Readwise of the highlight source. ### How can I remove the Readwise integration? To remove the integration, navigate to the **Readwise Integration** settings panel in Capacities. Under the **Active connection** section, click the **Delete** button to remove the sync with Readwise. This integration was developed by the Capacities team using the Readwise API, so our ability to troubleshoot it will be limited. If you encounter any issues with the export, please [reach out to their team](https://capacities.io/contact) for help. How does the Readwise to Craft export integration work? ## How can I export my Readwise highlights to Craft? To get started with syncing your highlights to Craft, log into your Craft account and click the **Import** button in the lower left corner. Then select **From Readwise**. This will take you to the [setup page](https://docs.craft.do/readwise) for the integration. To continue, turn on the toggle to **Sync Readwise with Craft**. This will display the configuration settings. To set up the sync, you'll need your [Readwise Access Token](https://www.readwise.io/access\_token). On the linked page, click on **Get Access Token** and then **Copy to clipboard**. Paste the token into the appropriate field on the Craft configuration page (➊). Next, select the Craft Space (➋) where you would like your Readwise highlights to appear. To sync your highlights with the default settings, click **Confirm**. ## Can I customize how my Readwise highlights appear in Craft? By default, your highlights will display with Craft's rich text formatting and will include links to the original highlight location (if available). If you'd prefer to import your highlights as plain text, select the **Use Simple Formatting** toggle on the [configuration page](https://docs.craft.do/readwise). ## Can I select which documents I want to sync to Craft? Yes! To choose which documents get synced, turn on the **Select items to be exported** toggle on the [configuration page](https://docs.craft.do/readwise). You can manually select documents using the checkboxes to the left of the document titles, or you can select documents based on their recency from the dropdown in the top right. How does the Readwise to Evernote export integration work? ## Setting up your Evernote export You can connect your Evernote account from the [Readwise dashboard](https://readwise.io/dashboard) > [Export](https://readwise.io/export) > [Evernote preferences page](https://readwise.io/export/evernote/preferences). ![](https://lh3.googleusercontent.com/OeUv-zmzDjGUY1gPwCP5sHx71idhbFKP6biTMAI-3ZYXrywdvsRUUOun1RfCl9\_dCVPflyKKzDcumgoceK5xutjLRSW4L0WYgLHTVv5sMu2hmg\_oIii\_G1LDDcmVk\_EYBpfvR40qSVcqFzVQ6W8w0BQ) 1. Export Automatically: Keep this on if you would like Evernote to sync daily. You can turn it off if you would prefer to only update Evernote when you manually trigger an export from this page. 2. Include Highlight Locations: Keep this on to include the location or page information of each highlight in the export. 3. Use Compact Layout: This will display the location information inline with the highlight text and won’t add any dividers between highlights. 4. Select Items to be Exported: Turning this option on will allow you to manually select which documents will be exported to Evernote. When this option is turned off, all documents in your account will sync when an export is triggered. ## Where do my Readwise highlights go in Evernote? The integration will create a “Readwise” notebook in your Evernote account and each document (e.g. book, article, etc.) will be imported as a note under that notebook. Each document’s note will contain all of its highlights and notes. ## Can I change the notebook destination of my Readwise highlights? Unfortunately, there isn’t currently a way to change the destination of the Readwise export. However, once the integration has created the Readwise notebook, you can move that notebook into a notebook stack and the sync will still work as expected. Note that you can rename the Readwise notebook and everything will still work. You can also move individual document notes into a different notebook, and new highlights made to the document will still sync to them when the integration is triggered. ## What happens when I add new highlights? Any highlights you’ve made in existing documents since the last sync will be appended to the end of the existing note for that document in Evernote. ## How do notes work with the Evernote integration? Any notes and tags attached to a highlight will export to Evernote with the highlight. However, if you edit the notes or tags of a highlight after it has already been exported to Evernote, you’ll need to re-export the documents to see those updates in your Evernote account. ## How can I refresh a document in Evernote? If you’ve edited a document or highlight in Readwise and would like to re-export it to Evernote with the changes, you can do so via the following steps: 1. Go to the [Evernote export preferences page](https://readwise.io/export/evernote/preferences). 2. Toggle ON Select Items to be Exported (1). 3. Ensure that the document is selected to be exported (2), then click the refresh button to the far right (3). 4. Click Start export to Evernote at the top of the page. This will create a duplicate note in Evernote with the updated content. You can delete the old version and any new exports will sync to the new note. ## How do I completely refresh my Readwise Evernote notebook of exported highlights? If you would like to completely refresh all the Readwise content in your Evernote account, you can do so using these steps: 1. Delete the Readwise notebook in Evernote. 2. Empty the trash in your Evernote account. 3. On the Evernote export page in Readwise, click Start Export to Evernote. All of your Readwise content should re-export to Evernote again in a new Readwise notebook. How does the Readwise to Logseq export integration work? To begin exporting your Readwise highlights to Logseq, you first need to install the Readwise Official plugin from within your Logseq application: 1. Click into the "..." menu within Logseq (typically in the top right corner) 2. Select Plugins 3. Click Marketplace and search for "Readwise Official" (note that there are a few other Readwise plugins, so be sure to choose the official version) 4. Click Install 5. Back out of the plugins screen to return to Logseq 6. In the top right you should now see a Readwise logo 7. Click the logo and finish the configuration from there We recommend testing the export in a sandboxed graph until you get the settings dialed into your preferences. Then you can export into your main graph. ## What happens when I take new highlights? Will those automatically sync with Logseq? Yes! You can configure the Readwise Logseq plugin to automatically sync any new highlights that come into Readwise. If the highlight is from a _new_ book, article, or Twitter account, a new page in the Logseq graph will be made. If the highlight is from an _existing_ book, article, or Twitter account, the highlight will be _appended_ to the bottom of the existing page. Because the Readwise plugin is append-only, nothing in Logseq will ever be overwritten. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or Logseq. If you need to sync sooner, you should first force a manual resync in Readwise of the highlight source and then initiate a sync in Logseq from either the Readwise plugin screen. ## How do I trigger a new sync from within Logseq? You can set the Readwise plugin to automatically sync whenever you open the Logseq app. If syncing is set to manual, you can trigger a new sync by opening the plugin menu and clicking "Initiate Sync." ## What happens when I update highlights in Readwise? Will those changes automatically sync with Logseq? (Or vice versa?) At the moment, no. ## Can I rename the file of a book, article, or Twitter page in Logseq? If you rename a file that was generated by the Readwise plugin, the plugin will create a new file with that name on the next export. This means it's fine to rename files for books and articles where you do not expect to take any more highlights, but if you're continuing to take highlights in the document, you will end up with two files. ## Can I move either the Readwise folder or individual pages to another location in my Logseq graph? Similar to the answer above, if you move a file that was generated by the Readwise plugin, the plugin will create a new file in the original location if you took new highlights. This means it's fine to move files for books and articles where you do not expect to take any more highlights, but if you're continuing to take highlights in the document, you will end up with two files. ## Can I edit the text of a book, article, or Twitter page in Logseq? Yes! You can edit the text of a page as you wish and the Readwise integration will not overwrite any changes you make. New highlights will be appended to the bottom of the page. ## How do I reset the export of my whole library or an individual document to start fresh? You can easily reset the Readwise export to start fresh by opening the Readwise plugin menu and clicking the red Reset button at the very bottom. This will delete all the pages previously created by the plugin, so only use this option if you are certain you do not need any notes you may have taken. ## Where does the Location link after each Kindle highlight take me? If you have the Kindle app installed on your desktop, clicking the Location link will launch the Kindle app and jump you to the highlight in the book. More on those links here: [Can I jump to a highlight directly in the Kindle app?](/readwise/docs/importing-highlights/kindle#can-i-jump-to-a-highlight-directly-in-the-kindle-app) *** ## How can I customize the Readwise to Logseq Export? One of the most powerful features of the Readwise to Logseq plugin is the ability to [customize the formatting of how your highlight data is imported into Logseq](https://readwise.io/export/logseq/preferences). You can customize a variety of elements including: * Page title * Metadata (such as author, URL, category, title, cover image) * Highlight header (inserted whenever new highlights are added) * Highlights themselves (e.g. inclusion of links to original, tags, notes, etc.) * Sync notifications (a new entry in Logseq each time the Readwise plugin runs) To begin customizing your export, head to the [Logseq Export](https://readwise.io/export/logseq/preferences) page from your Readwise Dashboard. Each component of the export has a "template" using the [Jinja2 templating language](https://jinja.palletsprojects.com/en/2.11.x/). The explanations below should illustrate how customization works and give some useful examples. ### Page Title By default, Readwise will insert the title of each document as an H1 (# in Markdown) in the default template: ``` # ``` Notice the `` variable. As your highlights are exported to Logseq, Readwise will replace the `` variable with the document's actual title. Let's say you wanted the first line of your export to be the document's title _plus_ the word "Highlights" in parentheses. All you would have to do is append the text " (Highlights)" to the template as follows: ``` # (Highlights) ``` You can customize this much more using [inline-if statements](https://stackoverflow.com/a/14215034/1522443), [Jinja2 filters](https://jinja.palletsprojects.com/en/2.11.x/templates/#filters), and [much more](https://jinja.palletsprojects.com/en/2.11.x/templates/). The templating language is quite powerful! ### Metadata One of the nicest aspects of the Readwise plugin is that each document can be enhanced with additional metadata such as author name, document URL, document tags, category, full title, cover image, and more. In the special metadata first block of Logseq, the default template below will insert the author name with double brackets, full title with double brackets, document category (e.g. Book, Article, or Tweet) with a hashtag, URL (if there is one), and document tags in Readwise (if any) with double brackets. In the second block, the template will insert the cover image, if there is one. ``` author:: [[]]\ full-title:: \ category:: #\ url:: \ tags:: #[[]] ![]() ``` Below is an example of how you'd modify the category line if you wanted to append an emoji to each category tag: ``` Category: # ``` Again, this templating language is quite powerful! You go much deeper with the customization using inline-if statements, Jinja2 filters, and more. ### Highlight Header Another component of the template is the header text that appears above each set of synced highlights. The first time a document is exported to Logseq, the Highlight section will be delineated by a header reading "Highlights first synced by \[\[Readwise]] \[\[date]]". Any new highlights taken in this document will be appended beneath with a new header. ``` Highlights first synced by [[Readwise]] [[]] New highlights added [[]] at ``` A common use case in tools for thought such as Roam Research and Obsidian is to backlink the date in this header to your Daily Notes page. To make this work for yourself, you'll need to format the `` variable to match your Daily Notes formatting. For example, if your Daily Note uses the format of YYYY-MM-DD, you could match that format by adding a date filter to the variable like so: `` ### Highlights Of course, you can also format the export of the highlights themselves. By default, each highlight is inserted as a bullet (using a dash), followed by a hyperlink to the original highlight and then sub-bullets for any tags and notes attached to the highlight. ``` ([]()) ()         **Tags**: #[[]]     **Note**:     ``` As mentioned above, there is much more you can do using [inline-if statements](https://stackoverflow.com/a/14215034/1522443), [Jinja2 filters](https://jinja.palletsprojects.com/en/2.11.x/templates/#filters), and so on. ### Sync Notifications Finally, you can configure the Readwise plugin to append an entry to your Daily Note each time the sync runs. This notification is particularly useful in tools such as Roam Research where the backlink appears more front and center in the Daily Note. How do I export my highlights to CSV or Markdown? ## Export all documents To export all the highlights from all your documents as CSV or Markdown, go to the [Export page](https://readwise.io/export) and select the desired format at the bottom of the page: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/65d533a3e3adc6007de13c12/file-CQwQgoD2Ja.png) The CSV option will immediately generate a download containing all of your highlights. Selecting the Markdown option will take you to a [customization page](https://readwise.io/export/markdown/preferences) where you can edit the formatting. ## Export per document You can export highlights from a single document to Markdown from your [Library](http://readwise.io/library). First, click the down arrow on the right side of the document. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/65d534996d2feb00a37ec56c/file-NVVnqoyX2z.png) Then click **Export Highlights**. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/65d5345dffd8f112ebce5638/file-RNRlB17w8s.png) This will start a download of a Markdown file containing the highlights and notes from the selected document. ## How can I customize the bulk Markdown Export? One of the most powerful features of the Readwise to Markdown integration is the ability to [customize the formatting of exactly how you'd like your highlights/notes formatted individually](https://readwise.io/export/markdown/preferences). You can customize the formatting of your notes with the below options: * Page Title * Metadata (such as author, URL, category, title, image) * Highlights header (text displayed above each new set of exported highlights) * Sync notification (file that summarizes which files were added/updated on every export). You can customize your export by going to the [Markdown Export Preferences](https://readwise.io/export/markdown/preferences) page and turning on **Use Custom Formatting**. Each section of the export has a "template." You can customize each template string to format exactly how you like using the [Jinja2 templating language](https://jinja.palletsprojects.com/en/2.11.x/). ![Markdown export customization page](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/60873d653149d33a19c70bd6/file-13IPFLCcim.png) The explanations below illustrate how customization works and give some useful examples. ### Page Title By default, Readwise will append "(highlights)" to each page so you can differentiate a Readwise created page from your own. Here's the default template: ``` (Updated ) ``` Notice the `` variable. When a note is exported, that `` will be replaced with the book/article/tweet's actual title and `` with the current date. You also have some other variables available to you. For example, here's how you can prepend each title with the category (i.e. is this a book, article, or tweet?) ``` / ``` This would result in something like Book/Atomic Habits. If you want all of your Readwise highlights to just show up in one page (though we don't recommend this), you could set the template to a non-variable string such as this: ``` ``` Of course, you can customize the title significantly further, using inline-if statements, Jinja2 filters, and much more. The templating language is quite powerful! ### Page metadata From the Markdown Export Preferences page, you can also edit your page metadata, including the author, URL, category, title, image, and anything else you want to show up when each new document is imported. Here's the default template: ``` ![]() ## Metadata - Author: - Full Title: - Category: # - URL: ``` ### Highlights Header You can customize how the Header text above each set of synced highlights is formatted. By default, each time your highlights are synced they will be sub-bullets of this default header: ``` Highlights first synced by #Readwise [[]] New highlights added [[]] at
Highlights New highlights added at
``` Note the if statement used above. By default, the header is formatted differently when the highlights are for a newly synced page versus new highlights on a previously synced page. A common use case may be that you don't want the highlights backlinked to the date (the day they are synced). If that's the case, you can simply remove the [[]] wrapping the date, e.g: ``` Highlights synced by #Readwise: at ``` ### Sync Notification Finally, every time you export your Markdown highlights, we can optionally generate a special markdown file which summarizes which files were added/updated. This setting is off by default, but it can be especially useful in note-taking apps that create a page for the date the highlights were exported and can be linked to that. How does the Readwise to NotebookLM integration work? ## Export your Readwise highlights to NotebookLM The Readwise integration with NotebookLM is powered by Google Docs, so the export will create a new document or documents in your Google Drive that contain your highlights and notes. To get started with the sync, select the NotebookLM Export link from your [Readwise export page](https://readwise.io/export). This will prompt you to log in with your Google account. Once you've logged in, use the "Select all" button (1) to grant Readwise full access, then click "Continue" (2). On the [export configuration page](https://readwise.io/export/google-docs/preferences), you'll find a few options: 1. **Export Automatically**: Keep this on if you would like NotebookLM to sync daily. You can turn it off if you would prefer to only update your Google Docs when you manually trigger an export from this page. 2. **Include Highlight Locations**: Turn this on to include the location or page information of each highlight in the export. 3. **Send a single document to your drive**: Turn this on to send all highlights in a single document. Turn it off to create a Google Doc for each Readwise document. *Note that creating a single Google Doc will make it much easier to add all of your highlights to a single notebook and allow you to chat and interact with your highlights and notes.* 4. **Select Items to be Exported**: Turning this option on will allow you to manually select which documents will be exported to Google Docs. When this option is turned off, all documents in your account will sync when an export is triggered. ## Use your notes as a source for NotebookLM AI 1. In your [NotebookLM account](https://notebooklm.google.com/), click **New notebook**. 2. Use the **Google Docs** link to select your Readwise highlights as the notebook's source. ### Create an AI podcast from your highlights in NotebookLM In the **Notebook guide** panel (1), click the **Generate** button under **Audio Overview** (2). ### Generate structured docs from your highlights In the **Notebook guide** panel (1), click one of the options under **Help me create** (2). This will generate a structured document—an FAQ, a table of contents, a briefing, etc.—using your highlights as a source. ### Chat with your highlights Using the text field at the bottom of the page, you can ask questions, search for information and quotes, and explore your library of notes and highlights. How does the Readwise to Notion export integration work? To get started with the Notion sync, select the Notion option on your [Readwise Export page](https://readwise.io/export). Readwise will ask for authorization to connect with your Notion account. (If you're not already logged into Notion, you'll be prompted to do so.) On the first authorization screen, click **Next**. On the second, select the first option ("Use a template provided by the developer"), then click **Allow access**. Once you configure the Readwise to Notion integration, Readwise will automatically synchronize all your highlighted documents to a database in Notion. The first time Readwise syncs with Notion, a new table called "Readwise" will be created in a private page of your selected Notion workspace. The process may take several minutes depending on how many books, articles, tweets, and highlights you have in your library. Feel free to close the export browser and move on to something else—the export will continue in the background. Also, once you're initially caught up, new highlights will automatically be synced to Notion periodically throughout the day. By default, the Readwise table in Notion is separated into filtered views of Book, Article, Tweet, and Podcast pages, each of which contains all your highlights for that category of document. You can filter, sort, and search this table using all the power of Notion databases. ## How can I configure the Readwise to Notion integration? There are a few options you can change on the [Notion integration settings page](https://readwise.io/export/notion/preferences). Here's a breakdown of what each setting does. 1. **Start Export:** Use this button to manually trigger an immediate export to Notion. 2. **Export Automatically:** Keep this on if you would like Notion to sync daily. You can turn it off if you would prefer to only update Notion when you manually trigger an export from this page. 3. **Include Highlight Locations:** Keep this on to include the location or page information of each highlight in the export. 4. **Use Compact Layout:** This will display the location information inline with the highlight text and won’t add any dividers between highlights. Toggling it off will separate the location information to a different line and will add dividers to the page between each highlight. 5. **Select Items to be Exported:** Turning this option on will allow you to manually select which documents will be exported to Notion. When this option is turned off, all documents in your account will sync when an export is triggered. 6. **Documents to be exported:** If the *Select Items to be Exported* option (4) is toggled on, you'll see a list of all your documents. To select which ones are included in the export, use the checkboxes on the left side of the title. ## What happens when I take new highlights? Will those automatically sync with Notion? Yes! Whenever you import a new highlight into Readwise, it will be automatically exported to Notion without you needing to do anything. If the highlight is from a new document, a new page in the Notion table will be made. If the highlight is from an existing document, the highlight will be appended to the bottom of the existing page. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, new highlights may not immediately appear in either Readwise or Notion. If you need to sync sooner, you can force a manual resync from the [Import Highlights page](https://readwise.io/welcome/sync). ## Can I add new properties to the Readwise table in Notion? Yes! You can add as many additional properties to the Notion table as you wish and those will not be overwritten by Readwise in subsequent syncs. You can even change the names of the default properties if you'd like. However, be careful not to delete or change the [property type](https://www.notion.so/help/database-properties) for any of the default properties, or the sync will break. ## Can I move either the Readwise table or individual pages to another location in my Notion workspace? Yes! You can move either the whole Readwise table or individual document pages within your Notion workspace and the Readwise integration will still find and properly update those. If you'd like to move an individual page to another location and maintain the sync, you'll want to first make sure that the Readwise integration has access to the new location you're moving it to. You can do this by clicking into the "..." menu in the top right while viewing the intended destination page, going down to the Connections section and opening the "Connect to" menu, then searching for Readwise: ## Can I rename the title of a document page in Notion? Yes! You can rename either the whole table or individual document pages and the Readwise integration will still find and properly update those. ## Can I edit the text of a document page in Notion? Yes! You can edit the text of a page as you wish and the Readwise integration will not overwrite any changes you make. New highlights will be appended to the bottom of the page. ## Can I make adjustments to the filters and views of the database? Yes! By default, the Readwise table in Notion is separated into filtered views based on document type (e.g. Book, Article, Tweet), each of which contains all your highlights for that entry. You can filter, sort, and search this table using all the powerful features Notion offers. ## Where does the Location link above each Kindle highlight take me? If you have the Kindle app installed on your computer, clicking the Location link will launch the Kindle app and jump you to the highlight in the book. More on those links here: [Can I jump to a highlight directly in the Kindle app?](/readwise/docs/importing-highlights/kindle#can-i-jump-to-a-highlight-directly-in-the-kindle-app) ## If I edit or format an existing highlight in Readwise, or make a new note or tag to an existing highlight, will that change be updated in Notion? No. All of our export integrations with note-taking apps are append-only. This means that Readwise won't overwrite anything that's already in your Notion account so that we don't accidentally erase anything you may have edited or added directly in Notion. That said, you can [re-export your highlights to Notion](/readwise/docs/exporting-highlights) for any documents you'd like to update. ## How do I delete my Readwise table and start over? 1. Delete the Readwise page in Notion 2. Click the Trash section in Notion and permanently delete the Readwise page 3. Initiate the sync from the [Notion preferences page](https://readwise.io/export/notion/preferences) in Readwise ## How do I change the Notion workspace to export to? To change which Notion workspace or account your Readwise highlights export to, go to the [Readwise Export page](https://readwise.io/export) and find the Notion card in the **Connected** section. Click the `...` icon in the top right, then select **Change account**. This will display a popup warning that you will be disconnecting from your current workspace, which you'll need to confirm in order to continue. Once you've done that, you can follow the instructions at the top of this page to reconnect to a new Notion workspace or account. ## How do I disconnect my Notion account from Readwise? You can disconnect your account from the [Export page](https://readwise.io/export) by clicking the `...` in the top right of the Notion card and selecting **Remove connection**. How does the Readwise to Obsidian export integration work? To begin exporting your Readwise highlights to Obsidian, you first need to install the Readwise Official plugin from within your Obsidian Vault: 1. Click **Settings** within Obsidian (typically in the bottom left corner) 2. Select **Community plugins** (if Safe mode is on, you'll need to turn it off to install Community plugins) 3. Click **Browse** and search for **Readwise Official** (note that there are a few other Readwise plugins, so be sure to choose the official version) 4. Click **Install** 5. Click **Enable** 6. Back out of the installation screen to return to the Settings screen 7. Scroll in the left sidebar until you see Readwise Official 8. Finish the configuration from there The Readwise Obsidian plugin offers numerous customization options (described in the [customization section below](#how-can-i-customize-the-readwise-to-obsidian-export)), but below is an example of what the export looks like by default using our cofounder Dan's Readwise library: Similar to the Evernote, Notion, and Roam integrations, the Readwise plugin can be set to automatically sync new highlights to Obsidian whenever they're made. ## What happens when I take new highlights? Will those automatically sync with Obsidian? Yes! You can configure the Readwise Obsidian plugin to automatically sync any new highlights that come into Readwise. If the highlight is from a _new_ book, article, or Twitter account, a new page in the Obsidian vault will be made. If the highlight is from an _existing_ book, article, or Twitter account, the highlight will be _appended_ to the bottom of the existing page. Because the Readwise plugin is append-only, nothing in Obsidian will ever be overwritten. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or Obsidian. If you need to sync sooner, you should first force a manual resync in Readwise (from the [Add Highlights](http://readwise.io/sync) section of the [Readwise Dashboard](http://readwise.io/dashboard)) and then initiate a sync in Obsidian from either the plugin menu or the command panel. ## How do I trigger a new sync from within Obsidian? By default, the Readwise plugin will be set to automatically sync when you open the Obsidian app and to manually sync otherwise. If syncing is set to manual, you can trigger a new sync by either visiting the plugin page and clicking "Initiate Sync" or using the command palette and searching for "Readwise Official: Sync your data now." Alternatively, you can set the plugin to automatically check Readwise for new highlights every 1, 12, or 24 hours. ## What happens when I update highlights in Readwise? Will those changes automatically sync with Obsidian? (Or vice versa?) At the moment, no. Because Obsidian uses a page as its atomic unit, it would be quite technically challenging to programmatically search through an existing page for the right highlight and update that text without accidentally overwriting edits by the user. ## Can I rename the file of a book, article, or Twitter page in Obsidian? As of this current release, if you rename a file that was generated by the Readwise plugin, the plugin will create a new file with that name on the next export. This means it's fine to rename files for books and articles where you do not expect to take any more highlights, but if you're continuing to take highlights in a document, you will end up with two files. ## Can I move either the Readwise folder or individual pages to another location in my Obsidian vault? Similar to the answer above, if you move a file that was generated by the Readwise plugin, the plugin will create a new file in the original location _if you took new highlights_. This means it's fine to move files for books and articles where you do not expect to take any more highlights, but if you're continuing to take highlights in a document, you will end up with two files. ## Can I edit the text of a book, article, or Twitter page in Obsidian? Yes! You can edit the text of a page as you wish and the Readwise integration will not overwrite any changes you make. New highlights will be appended to the bottom of the page. ## How do I reset the export of my whole library or an individual document to start fresh? Obsidian makes it easy to reset the Readwise export: simply delete either an individual page that you want to refresh or the whole folder and then initiate a fresh Readwise sync. Note that you'll need to have "Resync deleted files" checked ON within the Readwise Official plugin page in Obsidian. ## Where does the Location link after each Kindle highlight take me? If you have the Kindle app installed on your computer, clicking the Location link will launch the Kindle app and jump you to the highlight in the book. More on those links here: [Can I jump to a highlight directly in the Kindle app?](/readwise/docs/importing-highlights/kindle#can-i-jump-to-a-highlight-directly-in-the-kindle-app) ## Can I change the default directory to which Readwise exports my highlights? Absolutely. You can do this from the "Customize base folder" setting within the Readwise Official plugin page. ## Can I use a flat folder structure instead of grouping files into Books, Articles, and Tweets? Absolutely. You can achieve this by toggling the "Group Files in Category Folders" settings to OFF from the [Obsidian Export](https://readwise.io/export/obsidian/preferences) page on Readwise. ## Can I export the full text of my documents to Obsidian? Yes! You can do this by toggling the "Export All Reader Documents" setting to on from the [Obsidian Export](https://readwise.io/export/obsidian/preferences) page on Readwise. This will export a second file for each of your Reader documents with the full text of the document. To keep things organized, this new document will be linked from the original file with your highlights. *** ## How can I customize the Readwise to Obsidian Export? One of the most powerful features of the Readwise to Obsidian plugin is the ability to customize the formatting of how your highlight data is imported into Obsidian. You can customize a variety of elements including: - Properties (previously known as YAML front matter) - Page title - Metadata (such as author, URL, category, title, cover image) - Highlight header (inserted whenever new highlights are added) - Highlights themselves (e.g. inclusion of links to original, tags, notes, etc.) - Sync notifications (a new entry in Obsidian each time the Readwise plugin runs) To begin customizing your export, head to the Obsidian Export page from your Readwise Dashboard. Each component of the export has a "template" using the Jinja2 templating language. The explanations below should illustrate how customization works, and give some useful examples. ### Page Title By default, Readwise will insert the title of each document as an H1 (# in Markdown) in the default template: ``` # ``` Notice the `` variable. As your highlights are exported to Obsidian, Readwise will replace the `` variable with the document's actual title. Let's say you wanted the first line of your export to be the document's title, plus the word "Highlights" in parentheses. All you would have to do is append the text " (Highlights)" to the template as follows: ``` # (Highlights) ``` You can customize this much more using inline-if statements, Jinja2 filters, and much more. The templating language is quite powerful! ### Metadata One of the nicest aspects of the Readwise plugin is that each document can be enhanced with additional metadata such as author name, document URL, document tags, category, full title, cover image, and more. The default template below will insert the cover image, if there is one, followed by H2 Metadata, followed by the author's name with double brackets, full title, document category (i.e. Book, Article, or Tweet) with a hashtag, followed by document tags in Readwise, if any. ``` ![rw-book-cover]()
## Metadata - Author: [[]] - Full Title: - Category: # - Document Tags: [[]] - URL: ``` Below is an example of how you'd modify the category line if you wanted to append an emoji to each category tag: ``` Category: # ``` Again, this templating language is quite powerful! You go much deeper with the customization using inline-if statements, Jinja2 filters, and more. ### Highlight Header Another component of the template is the Header text that appears above each set of synced highlights. The first time a document is exported to Obsidian, the Highlight section will be delineated by an H2 Header. Any new highlights taken in this document will be appended beneath a new H2 header including date and time stamp. ``` ## Highlights ## New highlights added at ``` A common use case in tools for thought such as Roam Research and Obsidian is to backlink the date in this header to your Daily Notes page. To make this work for yourself, you'll need to format the `` variable to match your Daily Notes formatting. For example, if your Daily Note uses the format of `YYYY-MM-DD`, you could match that format by modifying the filter on the date variable like so: `` ### Highlights Of course, you can also format the export of the highlights themselves. By default, each highlight is inserted as a bullet (using a dash), followed by a hyperlink to the original highlight and then sub-bullets for any tags and notes attached to the highlight. ``` - ([]()) () - Tags: [[]] - Note: ``` As mentioned above, there is much more you can do using inline-if statements, Jinja2 filters, and so on. ### Summary The `` variable can be used in the Page Metadata or Properties (YAML Front Matter) sections of the export template. You can use this variable to add the summary of documents highlighted in Reader, which can be entered into a document's data manually or generated by Ghostreader, Reader's AI reading copilot. ### Properties (a.k.a. YAML Front Matter) Many power users of Obsidian use the Dataview plugin to accomplish database-like queries from within Obsidian. This requires a special header at the beginning of the Markdown using YAML. By default, this section of the template is off, but if you're a power user of Dataview/YAML, you can insert the front matter as desired. ### Sync Notifications Finally, you can configure the Readwise plugin to append an entry to a special file each time the sync runs. This notification is particularly useful in tools such as Roam Research where the backlink appears more front and center in the Daily Note, but is off by default in Obsidian. ### File and Folder Names To edit the format of the exported file names, toggle the "Use Custom File Name" setting to ON from the Obsidian export page. This can be useful if you have a specific way you'd like to organize your files in your Obsidian vault. For example, to prepend the file name with the last name of the document's author, you could use this template: ``` -- ``` If "Group Files in Category Folders" is toggled ON, you can customize folder names for each category of document (i.e. Books, Articles, Tweets, and Podcasts). How does the Readwise to OneNote export integration work? ## Setting up your OneNote export To get started with the OneNote sync, select the OneNote option on your [Readwise Export page](https://readwise.io/export). Clicking the **Connect** button will prompt you to log in to your Microsoft account. Once you've done so, you'll be asked to grant Readwise permission to access your notes. Click **Accept** to proceed with the sync. Once you've given Readwise access, you can configure the export from the [export preferences page](https://readwise.io/export/onenote/preferences). 1. **Start Export:** Use this button to manually trigger an immediate export to OneNote. 2. **Export Automatically:** Keep this on if you would like OneNote to sync daily. You can turn it off if you would prefer to only update OneNote when you manually trigger an export from this page. 3. **Include Highlight Locations:** Keep this on to include the location or page information of each highlight in the export. 4. **Select Items to be Exported:** Turning this option on will allow you to manually select which documents will be exported to OneNote. When this option is turned off, all documents in your account will sync when an export is triggered. 5. **Documents to be exported:** If the *Select Items to be Exported* option (4) is toggled on, you'll see a list of all your documents. To select which ones are included in the export, use the checkboxes on the left side of the title. ## OneNote Export FAQs ### Where do my Readwise highlights go in OneNote? The integration will create a “Readwise” notebook in your OneNote account with subsections for Articles, Books, Tweets, etc. Each document will be imported as a note under its respective notebook section and will contain all of the document's highlights and notes. When you first import your Readwise documents into OneNote, you may see that some of them don't have their proper title in the list of notes and just say "Untitled." As far as we can tell, this is a loading issue on Microsoft's end, but it doesn't mean the import is broken! To fix the issue, just click into the document. After the initial load, the title will appear and should stick around. ### What happens when I add new highlights? Any highlights you’ve made in existing documents since the last sync will be appended to the end of the existing note for that document in OneNote. ### How do highlight notes work with the OneNote integration? Any notes and tags attached to a highlight will export to OneNote with the highlight. However, if you edit the notes or tags of a highlight after it has already been exported to OneNote, you’ll need to re-export the documents to see those updates in your OneNote account. ### How can I refresh a document in OneNote? If you’ve edited a document or highlight in Readwise and would like to re-export it to OneNote with the changes, you can do so via the following steps: 1. Go to the [OneNote export preferences page](https://readwise.io/export/onenote/preferences). 2. Toggle ON **Select Items to be Exported** (1). 3. Ensure that the document is selected to be exported (2), then click the refresh button to the far right (3). 4. Click **Start Export** at the top of the page. This will create a duplicate note in OneNote with the updated content. You can delete the old version and any new exports will sync to the new note. ### How do I completely refresh all of the exported highlights in my OneNote account? If you would like to completely refresh all the Readwise content in your OneNote account, you can do so using these steps: 1. On the [Readwise export page](https://readwise.io/export), click the `...` in the top right corner of the OneNote export card and select **Remove connection**. A warning dialogue will appear; click **Confirm** to continue. 2. To avoid duplicates, delete the Readwise notebook in your OneNote account. 3. From the [Readwise export page](https://readwise.io/export), click the OneNote card to reconnect your accounts. Follow the instructions at the top of this page to configure the fresh export. How does the Readwise to RemNote export integration work? To get started with syncing your highlights to RemNote, click on "Connect" on the RemNote option from Export Highlights on your [Readwise Dashboard](https://readwise.io/dashboard). You will be redirected to Remnote's "Plugins and Themes" page. Click on "Install" and then "Authorize plugin." In a separate tab, find your [Readwise Access Token](https://www.readwise.io/access\_token). Click on “Get Access Token” and then “Copy to clipboard.” Return to RemNote's Settings page and select "Plugin Settings" tab. Paste the copied access token in the “Readwise API Key” field. To perform the initial sync, enter the command “Readwise Sync All” in Remnote's Omnibar. It will take a few minutes to sync, and a pop-up message confirming “Import done!” will appear. From that point onwards, imports will happen automatically in the background roughly every 30 minutes without needing to run any further commands. ## What happens when I take new highlights? Will those automatically sync with RemNote? Yes! Whenever you import a new highlight into Readwise, it will be automatically synced with RemNote by default without you needing to do anything. If the highlight is from a _new_ book, article, or Twitter account, a new page in the "Readwise Books" folder in RemNote will be made. If the highlight is from an _existing_ book, article, or Twitter account, the highlight will be _appended_ to the existing page. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or RemNote. If you need to sync sooner, you should first force a manual resync in Readwise (from the [Add Highlights](http://readwise.io/sync) section of the [Readwise Dashboard](http://readwise.io/dashboard)) and then initiate a sync in RemNote. ## What happens when I update highlights in Readwise? Will those changes automatically sync with RemNote? (Or vice versa?) When you modify highlights in Readwise, the changes automatically synchronize with RemNote. However, the current Readwise to RemNote export integration is not bidirectional, so any updates made to highlights in RemNote will not be reflected in Readwise. We aim to enable bidirectional syncing for all note-taking apps in the future! ## Can I rename the file of a book, article, or Twitter page in RemNote? You can modify the title of a page created by Readwise in RemNote, but keep in mind that the next time your data syncs, the original Readwise title will return. Rest assured, the content inside the page won't be overwritten in this process. ## Can I edit the text of a book, article, or Twitter page in RemNote? Feel free to edit the content on any page generated by Readwise in RemNote. However, be aware that if you make changes to the highlights in Readwise later on, your previous edits in RemNote will be replaced. Don't worry though, any sub-bullets you've added under highlights will remain untouched. ## How do I reset the export of my whole library or an individual document to start fresh? RemNote makes it easy to reset the Readwise export: simply delete either an individual page that you want to refresh or the whole folder and then initiate a fresh Readwise sync. ## Can I customize the default note format of my highlights in RemNote? Currently, default customization is not an option. The new Readwise to RemNote export integration does not permit you to alter the formatting of your imported highlight data in RemNote. ## Where does the Location link after each Kindle highlight take me? Currently, you cannot jump directly from RemNote to the Kindle app. Instead, you will be directed to your Readwise highlights. If you have the Kindle app installed on your desktop, clicking the Location link will launch the app and take you to the specific highlight in the book. Learn more about these links here: [Can I jump to a highlight directly in the Kindle app?](/readwise/docs/importing-highlights/kindle#can-i-jump-to-a-highlight-directly-in-the-kindle-app) How does the Readwise to Roam export integration work? To get started with syncing your highlights to Roam Research, select the Roam option from Export Highlights on your [Readwise Dashboard](https://readwise.io/dashboard). When you first sync to Roam, Readwise will limit the export to your most recent 10 items (books, articles, and tweets), to give you a feel for how the integration works. The Roam integration has numerous customization options, described below. Once you've confirmed everything is working to your liking, you can then go back and select all of your items for syncing. Here's what the Readwise to Roam integration looks like by default (using Azlen's CSS theme Zenith): After the initial setup, Readwise will sync new highlights to Roam automatically, enabling some powerful use cases. For example, each new highlight includes a backlink to your Daily Note of the day they were synced (see above on the left). ## How do I reset the integration so I can start over fresh? If you ever want to "reset" the Readwise integration to Roam and perform a fresh resync, then all you need to do is delete any reference to #Readwise from your database. The easiest way to do this is to: * Go to the All Pages view in Roam (from your side bar) * Search for #Readwise * Select All * Double check that only pages you want to reset and resync are selected * Delete On the next sync attempt, Readwise will detect that the notes were deleted within Roam and run a fresh sync of all of your selected books/articles! ## What happens when I take new highlights? Will those automatically sync with Roam? Yes! Whenever you import a new highlight into Readwise, it will be automatically synced with Roam without you needing to do anything. If the highlight is from a new book, article, or Twitter account, a new page in the Roam database will be made. If the highlight is from an existing book, article, or Twitter account, the highlight will be _appended_ to the bottom of the existing page. Because the Readwise integration is append-only, nothing in Roam will ever be overwritten. Certain services—such as Amazon Kindle, Instapaper, and Pocket—only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or Roam. If you need to sync sooner, you can force a manual resync from the [Add Highlights](http://readwise.io/sync) section of the [Readwise Dashboard](http://readwise.io/dashboard). ## Can I customize the default how my notes are formatted in Roam? Absolutely! See [customization section below](#how-can-i-customize-the-readwise-to-roam-export) for how to customize the note's title, metadata, headers, and sync notifications. ## Where does the Location link after each Kindle highlight take me? If you have the Kindle app installed on your desktop, clicking the Location link will launch the Kindle app and jump you to the highlight in the book. More on those links here: [Can I jump to a highlight directly in the Kindle app?](/readwise/docs/importing-highlights/kindle#can-i-jump-to-a-highlight-directly-in-the-kindle-app) ## Can I rename the title of a book, article, or Twitter page in Roam? Currently, you _can_ rename a page generated by Readwise, but if you do and then add new highlights to that book/article, the Readwise integration will create a second page using the original title for new highlights. So we recommend not changing the title for now, or only doing so after you're done reading a piece! ## How do I change the Roam graph I'm exporting to? 1. Remove the Roam connection from the [Readwise export page](https://readwise.io/export). 2. [Re-connect the Readwise integration](https://readwise.io/export/roam-api/preferences). ## How can I customize the Readwise to Roam Export? One of the most powerful features of the Readwise to Roam integration is the ability to [customize the formatting of exactly how you'd like your data imported into Roam](https://readwise.io/magicaltrashpanda). You can customize the formatting of your notes: * Page title * Metadata (such as author, URL, category, title, cover image) * Highlight header (parent of any new highlights added) * Highlights themselves (links to original, tags, notes, etc.) * Sync notification (shows up in the #Readwise page, letting you know of new highlights from your daily) You can customize your export by going to the [Roam Export Preferences](http://readwise.io/export/roam/preferences) page and toggling on "Use custom formatting." At a high level, each component of the export customization has a "template" that uses the [Jinja2 templating language](https://jinja.palletsprojects.com/en/2.11.x/). You can customize each of these templates to achieve your desired formats in Roam. As you tweak the templates in Readwise, you'll be able to see a live preview of what your notes will look like in Roam. The explanations below should illustrate how customization works, and give some useful examples. And if you're looking for more metadata examples and explanations, [check out this great guide :)](https://roamstack.com/feed-roam-using-readwise/) *** ### Page Title By default, Readwise will append "(highlights)" to each page so you can differentiate a Readwise created page from your own. Here's the default template: ```django (highlights) ``` Notice the `` variable. When a note comes into Roam, that `` will be replaced with the book/article/tweet's actual title. You also have some other variables available to you. For example, here's how you can prepend each title with the category (i.e. is this a book, article, or tweet?) ```django / ``` This would result in something like Book/Atomic Habits. If you want all of your Readwise highlights to just show up in one page (though we don't recommend this), you could set the template to a non-variable string such as this: ```django ``` Of course, you can customize the title significantly further, using [inline-if statements](https://stackoverflow.com/a/14215034/1522443), [Jinja2 filters](https://jinja.palletsprojects.com/en/2.11.x/templates/#filters), and [much more](https://jinja.palletsprojects.com/en/2.11.x/templates/). The templating language is quite powerful! ### Page Metadata From the [Roam Preferences](http://readwise.io/magicaltrashpanda) page, you can also edit your Roam page metadata, including the author, URL, category, title, image, and anything else you want to show up when each new book/article/tweet is imported. Here's the default template: ```django Author:: [[]] Full Title:: Category:: # Document Tags:: # URL:: ![]() ``` Here's an example of some modifications you can make to, e.g. create a TODO for each new highlight, add custom backlinks, and customize formatting based on the category of book/article/tweet. ```django #twitter 🐦 [[TODO]]"}} #toprocess process & summarize the highlights from this book This is a podcast/article Author:: [[]] Full Title:: Category:: # Document Tags:: # URL:: ![]() ``` ### Highlight Header You can customize how the Header text above each set of synced highlights is formatted. By default, each time your highlights are synced they will be sub-bullets of this default header: ```django Highlights first synced by #Readwise [[]] New highlights added [[]] at ``` Note the `if` statement used above. By default, the header is formatted differently when the highlights are for a newly synced page versus new highlights on a previously synced page. A common use case may be that you don't want the highlights backlinked to the date (the day they are synced). If that's the case, you can simply remove the \[\[]] wrapping the date, e.g: ```django Highlights synced by #Readwise: at ``` ### Highlight Content Customizing the highlight itself is a little more complex, but can support some insane workflows. Here's the default template: ```django ([]()) () **Tags**: #[[]] **Note**: ``` Note the indentation above. The highlight text is shown at the top level, with the location information (e.g. page number, link back to article/tweet, etc.) inline with it. Nested under the highlight text are any notes and tags attached to that highlight, if they exist. Why might you want to customize the highlight text? For one, maybe you'd just like to tweak the default formatting, e.g. putting notes inline or at the parent level. Here's an example of how you can embed saved tweets directly into Roam, rather than having just their text sync: ``` ([]()) () **Tags**: #[[]] **Note**: ``` You might also want to enable a more complex workflow, like having all of your highlights synced to the same page, regardless of books. Here's how you might do that: ``` ([]()) () Category: [[]] Title: [[]] Author: [[]] **Tags**: #[[]] **Note**: ``` In this case, you would also change the Page Title template to something like: ``` ``` (Note that because this example uses no variables, all highlights will have the same page title and thus write to the same page.) There is, of course, much more you can do with this. ## Sync Notification Finally, every time Readwise syncs new highlights you've made into your Roam account, it appends a message into your #Readwise page in Roam to notify you of the updates. This links to your daily note as well, so you can see all the highlights you made in one day. Here's the default template: ``` On [[]] at Readwise synced highlight from book. ``` Note the use of the pluralize filter from Jinja2, which makes the note read more naturally. In the case that you **don't** want these notifications in your daily note, you can simply unlink the date reference like so: ``` On at Readwise synced highlight from book. ``` If you don't want these sync notifications _at all_, you can delete the entire template for sync notifications. How does the Readwise to Tana export integration work? Before you can export your Readwise highlights to Tana, you'll need to create an [API token](https://help.tana.inc/tana-input-api.html) for your Tana workspace: 1. In the Settings panel of Tana (represented by a gear icon), click API Tokens. 2. Select the Workspace you want your Readwise exports to appear in. 3. Click the + Create button. 4. Once the token is created, click Copy to save it to your clipboard. 5. In your Readwise account, go to the [Tana setup page](https://readwise.io/export/tana/token) and paste the token into the API field. 6. Click Save. You'll then be directed to the integration options page. The export has a variety of customization options (outlined in [the customization section below](#how-can-i-customize-the-readwise-to-tana-integration)), but the default format will create a node for each document and tag it with the Supertag #Readwise. The highlights from the document will be nested underneath the document node and tagged with #highlights. Note: If you plan to customize your formatting, we recommend doing a test export by enabling the "Select Items to Be Exported" option and choosing a few documents with a variety of metadata, to ensure that the export works as you expect. Once you've tweaked the options to your liking, you can re-export those few documents using the "refresh" icon on the far right of the document. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/64d2d74b9d8cf153a015db83/file-gdmHFmr3PN.png) This interactive tutorial will guide you through the process of generating your API key and configuring the Readwise integration: ## What happens when I take new highlights? Will those automatically sync with Tana? Yes! You can configure the Readwise Tana integration to automatically sync any new highlights that come into Readwise. If the highlight is from a _new_ book, article, or Twitter account, a new node will be created in your Tana account. If the highlight is from an _existing_ book, article, or Twitter account, the highlight will be _appended_ to below the existing node. Because the Readwise integration is append-only, nothing in Tana will ever be overwritten. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or Tana. If you need to sync sooner, you should first force a manual re-sync in Readwise (from the [Add Highlights](http://readwise.io/sync) section of the [Readwise Dashboard](http://readwise.io/dashboard)). ## How do I trigger a new sync to Tana? By default, the Tana integration will export any new highlights as soon as they appear in Readwise. (Note that it may still take a few minutes for them to appear in your Tana account.) If you've disabled that option or simply want to force a fresh sync, you can click the "Start export to Tana" button on the [Tana Export settings page](https://readwise.io/export/tana/preferences). ## Can I edit the text of a book, article, or Twitter page in Tana? Yes! You can edit the text of a highlight as you wish and the Readwise integration will not overwrite any changes you make. New highlights will be appended as a new node. ## What happens when I update highlights in Readwise? Will those changes automatically sync with Tana? (Or vice versa?) Currently, no. New updates to existing highlights will not be reflected in already synced highlights. We want to make sure we don't overwrite any manual edits you might have made in your Tana workspace. ## Where does the Location link after each Kindle highlight take me? If you have the Kindle app installed on your desktop, clicking the Location link will launch the Kindle app and jump you to the highlight in the book. More on those links here: [Can I jump to a highlight directly in the Kindle app?](/readwise/docs/importing-highlights/kindle#can-i-jump-to-a-highlight-directly-in-the-kindle-app) ## Can I customize how my notes appear in Tana? Absolutely! See [the customization section below](#how-can-i-customize-the-readwise-to-tana-integration) for more information on how you can customize the title, metadata, and more. ## Can I add new properties to my tags in Tana? Yes! You can add as many new properties to the tags within Tana as you'd like and Readwise won't overwrite them in any subsequent syncs. Do note that if you make any changes to the properties that Readwise creates (e.g. author, title, etc.), Readwise may not recognize it as the same schema on the next sync and may create a duplicate. If that happens, you can [merge the tags](https://help.tana.inc/how-do-i-merge-nodes-fields-or-tags.html) as needed. ## How do I reset the integration so I can start over fresh? You can reset the integration by creating a new API token in your Tana workspace and replacing the previous one in your Readwise account. (You can access the token setup page from the link at the bottom of the [export options page](https://readwise.io/export/tana/preferences).) This will prompt a fresh export the next time you sync, ignoring any previously exported content. This is also useful if you want to sync your Readwise account to a different Tana workspace. ## How can I customize the Readwise to Tana integration? One of the most powerful features of the Readwise to Tana integration is the ability to customize exactly how you would like the formatting of your notes to appear in Tana. The customizable elements include: * Note title * Highlight formatting (links to original, tags, notes, etc) * Metadata (such as author, URL, category) You can customize your export by going to the [Tana export preferences page](https://readwise.io/export/tana/preferences) and turning on the "Use Custom Formatting" toggle. Each component of the export customization has a "template" using the [Jinja2 templating language](https://jinja.palletsprojects.com/en/2.11.x/). You can customize each of these templates to achieve your desired format in Tana. ### Title By default, Readwise will append "(highlights)" to each node so you can differentiate a Readwise created node from your own. Here's the default template: ``` (highlights) # ``` Notice the `` variable. When a note comes into Tana, that `` will be replaced with the document's actual title. The `#` variable is also included here so that Tana will recognize the document categories (books, articles, etc.) as tags. This will allow you to view your notes by category and to add or edit the Supertag properties for them. Note: All documents exported from Readwise will also be appended with the #Readwise tag. This is not a customizable part of the template because it is part of the integration's core functionality and shouldn't be removed. You also have some other variables available to you. For example, here's how you can prepend each title with the name of the author: ``` - # ``` Of course, you can customize the title significantly further, using [inline-if statements](https://stackoverflow.com/a/14215034/1522443), [Jinja2 filters](https://jinja.palletsprojects.com/en/2.11.x/templates/#filters), and [much more](https://jinja.palletsprojects.com/en/2.11.x/templates/). The templating language is quite powerful! ### Highlight This section is a little more complex, but can support some powerful workflows. Here's the default template: ``` #highlight Readwise Location:: Topics:: Notes:: ``` Note the indentation above. The highlight text is shown at the top level, with the default #highlight tag inline with it. Nested under the highlight text are the location information (e.g. page number, link back to article/tweet, etc.) and any notes or tags attached to that highlight, if they exist. Why might you want to customize the highlight text? For one, if you'd just prefer to change the default formatting, for example by putting notes inline or at the parent level. Here's an example of how you might add the highlight date as a new field: ``` #highlight Readwise Location:: Topics:: Notes:: Date Highlighted:: ``` There is, of course, much more you can do with this by using the [Jinja2 templating language](https://jinja.palletsprojects.com/en/2.11.x/). ### Metadata Below the highlights template, you'll find a series of toggles that allow you to enable/disable and rename the fields that Readwise will create for each document node. (Note that these are the _document_-level properties, not the _highlight_-level properties.) The default settings look like this: ![image](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/64d40d00dd84587802e5d71d/file-W5Yf1wcgQI.png) You can enable or disable any of these fields simply by clicking the corresponding toggle on or off. In the fields to the right, you can customize what the titles of the fields will be when exported to Tana. For example, if you already have a field called "Title" that you use as a different part of your Tana workflow, you could change "Title" here to be "Document Title" instead. How does the Readwise to Workflowy export integration work? ## Setting up the Workflowy integration To get started with syncing your highlights to Workflowy, click **Connect** on the Workflowy option from the [Readwise export page](https://readwise.io/export). If you're not already signed in to Workflowy, this will prompt you to log in to your account. You'll then be directed to the [Readwise integration settings inside of Workflowy](https://workflowy.com/integrations/readwise/). Follow the provided link to copy your [Readwise access token](https://readwise.io/access_token), then paste it into the field in the Workflowy settings. Click **Connect to Readwise**. Your Readwise highlights will now begin syncing to your Workflowy account, and will continue to do so automatically once per hour. If you'd like to prompt an immediate sync, click **Sync now**. Once the sync is complete, you'll find your Readwise highlights under a "Readwise" bullet on your Workflowy Home page. Each document will be listed below that bullet, with nested bullets for each individual highlight. Documents will be tagged with their respective types (e.g. article, book, etc), allowing you to filter and organize your highlights. ## Workflowy integration FAQs ### What happens when I take new highlights? Will those automatically sync with Workflowy? Yes! If the highlight is from a _new_ document, a new bullet will be made under the Readwise bullet in Workflowy. If the highlight is from an _existing_ document, the highlight will be added as a new nested bullet under the existing document. Certain services such as Amazon Kindle, Instapaper, and Pocket only synchronize with Readwise a few times a day. For this reason, the highlight may not immediately appear in either Readwise or Workflowy. If you need to sync sooner, you should first force a manual resync in Readwise of the highlight source and then initiate a sync in Workflowy. ### How do I trigger a new sync to Workflowy? You can trigger a manual sync at any time by clicking **Sync now** on the [Readwise integration settings page in Workflowy](https://workflowy.com/integrations/readwise/). ### Can I edit the name of a document in Workflowy? Yes! You can edit a document's title in Workflowy and the sync will still be connected to the document in Readwise. If you make any new highlights in the document, they'll still be synced to the re-named document in Workflowy. ### Can I edit the text of a highlight in Workflowy? Yes! You can edit the text of a highlight as you wish and the Readwise integration will not overwrite any changes you've made in Workflowy. ### How do I reset the integration so I can start over fresh? If you ever want to "reset" the Readwise integration to Workflowy and start from scratch, you can do so by deleting the Readwise bullet in Workflowy. Then trigger a new sync to Workflowy by clicking **Sync now** on the [Readwise integration settings page in Workflowy](https://workflowy.com/integrations/readwise/). All of your content will be freshly synced to a brand new Readwise bullet on your Workflowy Home page. This integration was developed by the Workflowy team using the Readwise API, so our ability to troubleshoot it will be limited. If you encounter any issues with the export, please reach out to [support@workflowy.com](mailto:support@workflowy.com) for help. General ## How do I use Readwise if I don't have that many highlights yet? While you're building up your own collection of digital highlights, you can "supplement" your Daily Review with popular highlights from books you've read using [Supplemental Highlights](https://readwise.io/supp\_library). (This is also great for integrating audiobooks or physical books into your Daily Review!) Supplemental highlights are generated automatically from the most popular sections of books in Readwise. Although these supplemental highlights are obviously not quite the same as your own personal highlights, reviewing them can be surprisingly effective nonetheless! ## Why are my highlights out of order? Certain reading platforms such as Pocket do not have a "location" identifier. Accordingly, those highlights are sorted in Readwise by the date and time that the highlights were created. If having the highlights in the right order is important to you, be mindful to highlight in the order of top to bottom (i.e. no jumping back to highlight earlier in the article). ## How do I add a new allowed email address to send documents to my Readwise account? You can import certain documents (such as My Clippings.txt, Apple Books HTML exports, PDFs, and more) to your Readwise account by sending an email to [add@readwise.io](mailto:add@readwise.io) with the document attached. This will import the highlights from the documents. The emails must be coming from addresses that are allowed in your account. This ensures that the documents and highlights you send are connected to your Readwise account and can be uploaded properly. When you create your Readwise account, the email address you use to sign up will automatically be added as an allowed email. To add additional emails, go to [https://readwise.io/import/email](https://readwise.io/import/email) and scroll down to the **Associated Email Addresses** section. 1. **Add another email address:** To add a new email, enter it into this field and click the “Add” button. 2. **Make primary:** This will be listed next to any email that is not currently the primary email, i.e. the email you use to log in and receive Daily Digests. 3. **Remove:** Removes the email from your allowed addresses. Once you have added an email to this list, you’ll be able to send and forward documents to your Readwise account using the associated email account. ## Does Readwise have an API? Yes! You can find our documentation on writing highlights to Readwise for a user using the following link: [http://readwise.io/api\_deets](http://readwise.io/api\_deets). If you have any questions about the API or its documentation, please don't hesitate to shoot them over to [hello@readwise.io](mailto:hello@readwise.io)! Readwise Discord Bot ## How can I set up the Readwise Discord bot for my server? The [Readwise Discord bot](https://readwise.gg/) enables server members to easily save messages—including links, images, and even threaded conversations—to their Readwise Library to review later. Additionally, this bot will generate a sleek, auto-updating RSS feed of links shared in the server, allowing members to stay up-to-date on the biggest convos of the week and easily jump back into the server to discuss. **This bot is 100% free and requires no Readwise subscription to enjoy.** ## What server permissions does the bot need to be enabled? In order to properly function, the Readwise Discord Bot requires _all_ the following permissions: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646ba72024137d3ed8ea6fa7/file-cZgfs2EFcQ.png) ### Installing the Bot in Your Server Head to [readwise.gg](https://readwise.gg/) to install the Readwise bot on your server. Follow the setup instructions via Discord DMs to get started. ### Setting Up Your Server's RSS Feed By default, the Readwise bot will index the past 50 links per _public_ channel and add them to your RSS feed. If you want links shared in private channels to be indexed in your RSS feed, you can add the bot to those channels either by assigning the bot an additional server role with access to those private channels OR right-clicking on the private channel, clicking Edit Channel, navigating to Permissions, and adding the bot as a member. ### Rejecting Links The Readwise bot will automatically create two new channels in your server called #accepted-links and #rejected-links. If you spot a link in your server that you don't want indexed in your RSS feed, simply navigate to #accepted-links, locate the link, and react ❌ to reject it one time from the feed. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646bb5a124137d3ed8ea6fbd/file-S6wUzdAwKl.gif) ### Excluding Certain Domains From Your RSS Feed If you want to exclude links from a specific domain entirely, follow the rejection steps above, and then react ⛔️ under the confirmation message to automatically reject links from that domain going forward. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646bb76155262c1c47d094ab/file-g20qbSjNkW.png) If you ever want to make an exception to this rule, you can locate the link in #rejected-links and react with ✅ to include it in your feed. The best way to contact us is by emailing [hello@readwise.io](mailto:hello@readwise.io). Our Twitter account is very noisy so we’re likely to miss you if you tweet at us. ## How can members of my server use the Discord bot? The [Readwise Discord bot](http://readwise.gg/) enables server members to easily save messages—including links, images, and even threaded conversations—to their Readwise Library for later. This bot also creates a sleek, auto-updating RSS feed of links shared in the server, allowing you to stay up-to-date on interesting links shared in your communities and easily jump back in to discuss. **This bot is 100% free and requires no Readwise subscription to enjoy.** ### Save messages inside Discord To save a message to your private DMs for easy future reference, simply react with a bookmark emoji 🔖 in a server where the Readwise bot is installed. It will automatically DM you a copy of the message for safekeeping. This is completely free. ### Save messages to Readwise You can also optionally save any message to your Readwise account by using the floppy disk emoji 💾 instead of the bookmark. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646cf7474089fa4863e22b63/file-EHhtbaxc3L.gif) ### Add tags to saved messages If you want to add a tag (in Readwise) to a saved message, you can reply to that message with a word beginning with a period `.` (the same as an [inline tag](https://blog.readwise.io/tag-your-highlights-while-you-read/) with any service that Readwise supports). For example, `.ai` will be turned into an AI tag. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646cf53624137d3ed8ea70bf/file-GlH9qBQJzE.png) ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646cf53dc13b725657191547/file-nTo2lplkmU.png) ### Add notes to saved messages If you want to add a note in Readwise to a saved message, you can reply to that message via DM with your note. ### Take notes with Quick Passages If you want to jot down a quick passage in your Readwise account that will be resurfaced like any other highlight, you can send a DM to the Readwise bot. The message will be added to your default Quick Passages “book” in Readwise. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646cf69c24137d3ed8ea70c3/file-Ia3hIGVjqR.png) ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/646cf6b124137d3ed8ea70c4/file-OPwPMVLuNW.png) ### Where to find saved messages in Readwise Once you’ve connected your Readwise account, you can find your saved Discord messages in the [Tweets](https://readwise.io/tweets) section of your [Readwise Dashboard](https://readwise.io/dashboard). ### Find your server’s custom feed aggregator Use the slash command `/url` in any server where the Readwise bot is installed to find the link to that server's Hacker News link aggregator. ### Find your server’s RSS feed link Use the slash command `/rss` in any server where the Readwise bot is installed to find the link to that server's RSS feed. When opened in a browser, this won't look like much, but if you add that RSS link to your favorite feed aggregator, you'll see your favorite Discord links come through. **Pro tip:** If you're a [Reader user](https://readwise.io/read), you can add this URL to your Feed so you can get important Discord conversations piped directly into your favorite reading app 😉 ### Use the Readwise Bot in other servers You can click the bot's name in a server where it's installed and select `Add to Server`, or you can install the Readwise Bot via [https://readwise.gg/](https://readwise.gg/). ## How can I get help, send feedback, or report bugs? The best way to contact us is by emailing [hello@readwise.io](mailto:hello@readwise.io). Our Twitter account is very noisy so we’re likely to miss you if you tweet at us. Finding Your Highlights One of the greatest powers that comes with using Readwise is the ability to think, "Hey, I'm pretty sure I read something about that once," and be able to find the exact quote within minutes. Whether you're writing a thesis or just trying to win an argument with a family member, citing your sources can make a big difference. ## Browse by source Maybe you can't remember any of the words in the quote, but you know it was in the book you finished last week. Maybe you don't even have a specific quote in mind, you just know that an article you read the other day had some really good ideas about a certain topic. To find a specific source on web, click into the **Browse** tab and select the appropriate category. (Or choose "Everything" to see all of your source documents in one place.) On mobile, go to the **Search** tab and select the appropriate category under the *Browse your content* section. ## Search by keyword If you've got a word or two that you know are in the passage you're looking for, a keyword search can get you to the quote even faster. On web, click the magnifying glass icon in the top right to open the search field. Type your keywords and hit `enter` to access the search results page. Much like Google, Readwise's search results can be accessed using a **URL parameter** to query the page: `readwise.io/search?q={query}` For example: [readwise.io/search?q=never+gonna+give+you+up](https://readwise.io/search?q=never+gonna+give+you+up). (Your browser should convert any spaces to `+`, so you don't need to type those into your query.) You can use this knowledge to set up a site search shortcut in browsers like [Google Chrome](https://support.google.com/chrome/answer/95426) or [Arc](https://resources.arc.net/hc/en-us/articles/20855018192791-Site-Search-Directly-Search-any-Website), a [Quick Link in Raycast](https://www.raycast.com/core-features/quicklinks), and more! On mobile, go to the **Search** tab and use the text field at the top of the page to enter your keywords. Highlight text and document metadata are both queried for search keywords, and results with matches in both places will be ranked above results that only match one. An example: `taleb harvard` will return highlights that have "Taleb" in the author field and include the word “Harvard” in the highlight text before highlights that just mention one of those terms. ## Chat with your highlights If your memory of the passage you're looking for is just too vague to search, [try the **Chat** feature instead](/readwise/guides/chat-with-highlights)! You might be surprised how quickly you can surface a specific piece of text from a psychology book with an obscure question like, "Have I ever taken a highlight about how the brain works?" Mobile Apps ## Does Readwise have an iOS mobile app? Yes! Readwise has an iOS app [available in the App Store](https://readwise.app.link/6VY4GcGnIgb). ## Does Readwise have an Android App? Yes! Readwise has an Android app [available in the Google Play Store](https://readwise.app.link/jRPHsdEnIgb). ## Can I turn off Daily Review emails and still get iOS notifications? Yes! You can set your Email Frequency to "Never" on your [email preferences page](https://readwise.io/configure), and you'll still get your Daily Reviews in the app. You'll also continue to receive notifications as long as you've enabled push notifications for the Readwise app in your device settings. The notification should arrive within an hour after the "email send time" set in your email preferences. So, for example, if you want the iOS notification at 10 AM, you can set the email time to 9 AM in your preferences. ## How can I add the Readwise widget to my iPhone home screen? To get started, you'll need to download the [Readwise iOS app](https://readwise.app.link/6VY4GcGnIgb). If you already have the Readwise app downloaded, you just need to make sure that it's updated beyond version 2.7.2. ### How do I add the widget to my home screen? Long press anywhere on your unlocked iPhone screen, tap the `+` symbol in the upper right-hand corner, select Readwise, and tap Add Widget on the widget of your choosing. ### How does the widget work? If you've already completed your Daily Review, the widget displays a random highlight that rotates every 5 minutes throughout the day. If you haven't yet finished your Daily Review, it shows the first review highlight alongside a helpful prompt. ### What do I do if the widget is blank or doesn't appear at all? Make sure that your iOS is updated beyond version 14.5.1. Shutting down the phone for 10 seconds and then turning it back on can also help. ## Why did push notifications stop in the iOS Readwise app? Some users have reported that after getting a new iPhone or iPad and restoring a backup, they stop receiving push notifications from the iOS Readwise app. We're investigating the issue, but in the meantime, there is a fix: * Rather than deleting the app from your Home Screen and then reinstalling, go to Settings → General → iPhone Storage → Readwise * Once there, tap "Delete App" (as shown below) * Once deleted, reinstall the Readwise app from the App Store * After reinstalling, re-enable notifications You should receive push notifications from the Readwise app within one hour after the [send time of your Daily Review email](https://readwise.io/configure). Reviewing Your Highlights ## Can I customize how often documents appear in my Daily Review? Yes! This is called Frequency Tuning, and there are a few ways you can adjust it. ### From your account settings You can customize how often any document (or document type) appears in your Daily Review by editing your [Frequency Tuning](https://readwise.io/configure/tune/books) (Account > Configure Reviews > Frequency Tuning). 1. Select a source type to adjust, e.g. books, articles, podcasts, supplemental books, etc. 2. Edit the frequency of all documents from that source type. 3. Edit the frequency of individual documents. ### From your Library You can adjust the frequency of any individual document from your [Library](https://readwise.io/library) by clicking the down arrow to the far right of the item in the list. ### From your Daily Review You can adjust the frequency of a document when it appears in your Daily Review by clicking into the down arrow menu in the top right of the card. If you have 500 total highlights in your account and a single document contains 100 highlights, there's a 20% chance your Daily Review will contain a highlight from that book. Meanwhile, a document with only 5 highlights would have a 1% chance of appearing. For this reason, you may want to tune _down_ a document with many highlights and/or tune _up_ a document with only a few. It’s not uncommon for users to need to tweak their settings a few times before getting it to suit their preference. Each time a highlight is shown, its probability of resurfacing is significantly decreased. So, while it's possible that you might see the same highlight twice in rapid succession before having seen all your highlights at least once, it would be fairly unlikely! ## I want to review my highlights while I'm doing something else. Can I listen to my Daily Review? Yes! To start audio playback of your Daily Review, open the review and then tap or click the play icon in the top right. You can change the speed of playback, jump forward or backward 15 seconds, or pause the audio from the playback navigation bar at the bottom of the screen. To stop playback on web or desktop, click the **X** at the far right of the playback bar. To stop playback on mobile, tap the square icon in the top right. Use this feature in conjunction with [Themed Reviews](/readwise/guides/themed-reviews) to create your own highlight-based podcast about a particular topic. ## How do I return to the original article where I took a highlight? You can return to the original source of any highlight by clicking or tapping the down-arrow in the upper right corner of any highlight and selecting `View in [Source]`. ## Can I find related highlights from my Daily Review? Yes! You can find other highlights that are similar to a highlight in your Daily Review by clicking the overlapping speech bubble icon in the top right of your Daily Review. This will open a new conversation in the [Chat With Highlights](/readwise/guides/chat-with-highlights) feature and autofill a prompt that will search for highlights that are similar to the selected highlight. ## What's the difference between Scroll Mode and Review Mode? When using Readwise on web, there are two ways to view any collection of highlights: **Review Mode** or **Scroll Mode**. ### Review Mode Review Mode displays the highlights one at a time, so you can review them individually before clicking through to the next. This is the default for your Daily Review, or for any Themed Reviews, but you can switch to this view while viewing a single document's highlights by clicking the grid icon in the top right corner. Review Mode prioritizes highlights that haven't been processed, so if you've already used Review Mode to view some of the highlights or if they've appeared in your Daily Review, those will be skipped until you review the rest of the document's highlights. Note that using the arrow icons (or the left and right arrows on your keyboard) to navigate will count as "skipping" the highlight, so it won't be processed. To process the highlight, use either the **Discard** or **Keep** button. ### Scroll Mode Scroll Mode displays all of the collection's highlights on a single page. This is the default when viewing highlights from a single document (book, article, etc), but you can switch to this view during your Daily Review by clicking the list icon in the top right to see the full contents of your review on one page. When using this mode for your Daily Review or a Themed Review, each highlight will still allow you to perform all the usual actions: Discard, Master, Feedback, and Keep. ## Can I use keyboard shortcuts while reviewing highlights? Keyboard shortcuts are the best. Here's a list of shortcuts you can use in the Readwise web app: --- * `←` * Previous highlight --- * `→` * Next highlight --- * `ENTER` * Done (Mark highlight as read and move to next) --- * `t` * Tag --- * `m` * Master --- * `` ` `` * Feedback (spaced repetition) --- * `f` * Favorite --- * `d` * Discard --- * `e` * Edit --- * `n` * Note --- * `s` * Share --- * `cc` * Copy highlight to clipboard --- * `ll` * Switch to card view / switch to list view (individual document review) ## Will deleting a highlight in Readwise delete the original or vice versa? If you delete (or discard) a highlight in Readwise, the highlight in the original source will not be deleted. This includes Amazon Kindle, Apple Books, Instapaper, Pocket, and other integrations. Similarly, if you delete the highlight in the original source, the highlight will not be deleted in Readwise. The one exception is if you delete a highlight from Amazon Kindle and then force a full refresh. In that case, any previously imported but now deleted highlights in Kindle will also be deleted from your Readwise account. ## Can I add formatting to my highlights, like bold or italics? You can use markdown formatting to customize how your highlights look, and to add emphasis to certain parts of a passage. For example, perhaps a single line really struck you but it didn't make sense without its context, so you highlighted the entire paragraph. To call attention to the line you really wanted to keep, you can use markdown to add a **hyperhighlight** using two underscores on either side of the text, like so: `__Really awesome line of text.__` You can also use markdown to italicize or bold parts of the text. This can be helpful to fix highlights that imported from a source without the original formatting from the book, or when you're [manually entering passages from paper books](/readwise/docs/importing-highlights/ocr). Markdown formatting can be particularly nice when creating Q&A [Mastery flashcards](/readwise/guides/mastery). For example, you might want to **bold** a key term in the question, or highlight an example sentence in the answer. If you're using Reader, you can even automate the formatting of your flashcards by using the `.qa` action tag with a custom prompt in Ghostreader, like the [Vocab Flashcard example](/reader/guides/ghostreader/prompt-library#vocab-flashcard) in our Prompt Library! ### Markdown syntax reference * Markdown Syntax * Text Effect * Visual Example --- * `__text__` * Highlight the text * --- * `*text*` * Italicize the text * --- * `**text**` * Bold the text * ## Why can't I permanently delete highlights? The reason that Readwise only uses a soft _Discard_ rather than a hard _Delete_ might seem odd at first, but it's fairly intuitive once you understand the rationale: Readwise synchronizes your highlights from a variety of sources. For instance, if you hard-deleted a Kindle highlight in Readwise but not in the original Kindle source, then the next time Readwise is synced with Kindle, Readwise would see the deleted highlight as new. The previously deleted highlight would then be re-imported to Readwise, causing it to return from the dead like a frustrating zombie highlight. We could always just delete the highlight from the frontend in Readwise and save a copy in the backend to compare against future syncs, but that would be misleading and frustrate users who want to recover an accidentally deleted highlight. If permanently annihilating a highlight is important to you, then we advise you to do so in the original source. Then refresh those highlights within Readwise via the following steps: 1. Select the **down arrow** next to the book/article to open the document options 2. Select **Refresh Highlights** 3. Re-sync highlights from source here: [readwise.io/welcome/sync?refresh=true](http://readwise.io/welcome/sync?refresh=true) The above directions don't apply to manually entered highlights or to those taken with the Readwise web clipper. Your options are to delete the book/article and re-enter all your highlights while leaving out the ones you want to delete permanently, or to just discard the highlight. ## Why is my Daily Review empty? What is the Highlight Quality Filter? The **Highlight Quality Filter** is a feature that checks for "low quality" highlights, such as sentence fragments, and blocks them from being included in Daily Reviews. It's enabled by default, but there may be some instances where you might prefer to turn it off. For example, some users (especially those whose highlights are primarily in character-based writing systems such as Hanzi, Kanji, or Arabic) might see an error on their Daily Review page that says: "This review doesn't have any highlights anymore: perhaps you deleted or changed them since it was created?" This can happen because the quality filter is mistaking shorter sentences (containing a smaller number of characters than expected) as fragments and hiding them. This message can also appear if you don't have any highlights available to review. If you're low on highlights in your account, check out our many [import options](../importing-highlights) or try adding some [Supplemental Books](../general/how-do-i-use-readwise-if-i-dont-have-that-many-highlights-yet.md) to your account! To turn off the Highlight Quality Filter, go to the account menu, click **Configure Reviews**, then select the [Review Settings](https://readwise.io/configure/review) tab. The Highlight Quality Filter is the last option on the page. ## How can I create custom reviews of highlights (Themed Reviews)? While you can customize which documents are included in your Daily Review from the [Configure Frequency Tuning page](https://readwise.io/configure/tune/books), you can also create customized reviews for specific topics using our Themed Reviews feature. Using Themed Reviews, you can build sets of highlights based on any combination of books, articles, tweets, notes, and [tags](https://blog.readwise.io/tag-your-highlights-while-you-read/), separate from your Daily Review. You can also optimize when your Themed Review is delivered — whether that be on specific days of the week or even just once a month. You can access the feature by scrolling to the bottom of your Dashboard and selecting [Themed Reviews](https://readwise.io/themed\_reviews). Learn more about this feature in our [Themed Review feature guide](/readwise/guides/themed-reviews)! ## How does the Readwise spaced repetition algorithm work (Mastery)? The Readwise spaced repetition algorithm (Mastery) is admittedly a bit of a black box compared to powerful spaced repetition software (SRS) such as Anki or SuperMemo. This is because we're trying to create a spaced repetition alternative that is extremely user-friendly, compared to the existing offerings that have notoriously steep learning curves. That said, here are the details behind the Readwise spaced repetition algorithm: * We use a decaying algorithm based on a recall probability half-life rather than a date-based algorithm as found in Anki. * The initial half-life of a Mastery `soon` is 7 days. `Later` is 14 days. `Someday` is 28 days. * Once a highlight recall probability decays to 50% or lower, it becomes a candidate to be resurfaced in the latter half of your Daily Review. If you have a lot of Mastery flashcards that are candidates to be resurfaced (that is, their probability of recall is calculated to be less than 50%), then those with the lowest recall probability will be resurfaced in your Daily Review. You can see all your Mastery flashcards, their half-lives, and their recall probabilities here: [readwise.io/mastery](https://readwise.io/mastery). ## Can I turn off the email alerts for my Daily Review? Yes! You can set your Email Frequency to "Never" on your [email preferences page](https://readwise.io/configure). You'll still be able to access your Daily Reviews in the app or from [the web dashboard](https://readwise.io/dashboard). ## Why am I still getting highlight emails even though I turned them off? If you've created any [Themed Reviews](/readwise/guides/themed-reviews), the email frequency for those is edited separate from the Daily Review. You can turn off these emails from [the Themed Reviews page](https://readwise.io/themed_reviews) by clicking the review and then toggling **Send Emails** to OFF. You will still see your Themed Reviews appear on your Readwise dashboard at the specified frequency. Import Highlights to Readwise Readwise supports importing highlights from a variety of reading platforms, including: Once you've signed up for a Readwise account, just head to the [Import section](https://readwise.io/welcome/sync) of your Readwise account to import your highlights.  We're constantly adding more integrations! To learn more or request a new source, feel free to reach out to us at [hello@readwise.io](mailto:hello@readwise.io). ## How can I manually import my highlight collection to Readwise? Many users of Readwise have kept their own collections of highlights and notes in various formats, whether it be an Excel spreadsheet, a Word document, or an ever-growing Apple Note. There are a few ways to bring your manually-curated collection into Readwise. ### CSV Upload To import highlights in bulk, you can upload a CSV file. For instructions and information on how the file should be formatted, see the [import page](https://readwise.io/import_bulk). If your file is in another format—such as a TXT, Numbers file, etc.—you'll have to convert the file to CSV before uploading. ### Freeform Input You can add highlights individually using the [Freeform Input tool](https://readwise.io/import_freeform). This is great for collecting highlights that might be scattered across various sources, or even for capturing the witticisms of any particularly erudite friends. ### Scan via App (OCR) If you've highlighted physical sources—such as books, magazines, newspapers, etc.—you can use the mobile app to take a picture of the page and scan in the highlight. You can learn more about the feature here: [How do I import highlights from physical or paper books?](/readwise/docs/importing-highlights/ocr) Import from Apple Books ## How do I import highlights from Apple Books? It's much harder to import your highlights from Apple Books (iBooks) than it is from other e-reading platforms such as Amazon Kindle, but that's okay. There are still two ways to get your Apple Books highlights into Readwise. First, you can download and install the Readwise Mac tool on your computer by following the instructions here: [Readwise Mac Tool](https://readwise.io/ibooks). Second, you can email highlights to Readwise directly from the Books app on your iPhone or iPad by following the instructions below. ## How do I import Apple Books highlights from my iPhone/iPad? To import highlights from Apple Books on your iPhone or iPad: 1. Open your book in the Apple Books app 2. Tap into the actions menu in the bottom right 3. Select "Bookmarks & Highlights" 4. Switch to the "Highlights" tab 5. Tap Select in the top left 6. Select the highlights you'd like to send to Readwise 7. Tap the Share icon, then select your email app 8. Send to [add@readwise.io](mailto:add@readwise.io) These highlights will then be automatically imported into your Readwise account! ## Can I import highlights from PDFs read in Apple Books? Unfortunately, Apple Books doesn't create "real" highlights on PDFs (i.e. according to the PDF spec), so you'll need to use a different app to get these highlights into Readwise. You can check out our list of [previously vetted software](/readwise/docs/importing-highlights/pdf#what-pdf-reader-apps-work-with-readwise) that will allow you to import your PDF highlights into Readwise. Alternatively, you can [upload the PDF into the Reader app](/reader/docs/faqs/adding-new-content#how-do-i-upload-files-to-reader) to read and highlight. This will remove the step of needing to email the PDF to Readwise, since any highlights you make in Reader will automatically sync to your Readwise library. ## What do I do if the Mac tool isn't importing my Apple Book highlights? ### Persistent spinning wheel or error If this happens, there are a couple of possible ways to resolve the error. - **Resync the Mac tool** - *Log out* of the Mac tool. - Select *Resync* to log back in and to run the sync again. - **Open Apple Books on your computer** - If you've never opened the Apple Books app on your computer (e.g. you only read on your phone or tablet), the database may not be synced and thus the Mac tool won't be able to find any of your highlights. - Launch the Mac app at least once to force a sync, wait for your most recent data to appear, then try the Mac tool again. ### Mac tool caveats - The Mac tool only works for Big Sur and newer at this time. If you can't or don't want to upgrade the OS, then you can use the instructions above to import highlights from iPhone or iPad. - The Mac tool cannot import highlights made on PDFs as Apple Books doesn't follow the PDF spec to create "real" highlights. You can use the instructions above to import highlights from PDFs. Import from Email ## How do I import highlights by emailing them to Readwise? You can import highlights from various sources by emailing them as attachments to **add@readwise.io**. At the moment, we support the following sources: * [Kindle _My Clippings.txt_](/readwise/docs/importing-highlights/kindle#how-do-i-import-my-clippings-txt-to-readwise) (file stored on your Kindle device accessible via USB) * [Kindle HTML export](/readwise/docs/importing-highlights/kindle#kindle-apps-email) (for documents on Kindle iOS, Android, or Fire) * [Apple Books HTML export](/readwise/docs/importing-highlights/apple-books#how-do-i-import-apple-books-highlights-from-my-i-phone-i-pad) (as an alternative to the Readwise Mac tool) * [Scribd export](/readwise/docs/importing-highlights/everand) * [Highlighted PDFs](/readwise/docs/importing-highlights/pdf) Whenever you email a supported file above from [an email address associated with your Readwise account](https://readwise.io/import/email), it'll be automatically imported into your account. Import from Everand (Scribd) Scribd doesn't currently offer a native option to export highlights, but here's a workaround that allows you to export highlights from a single book at a time to import into Readwise. Note: This method requires the Google Chrome web browser and may result in some highlights being truncated. This is a limitation of how the Scribd reading interface is formatted. 1. Go to [Scribd](https://www.scribd.com/) or [Everand](https://www.everand.com/) and open the book that you'd like to get the highlights from. 2. Click the **kebab icon (3 vertical dots)** in the right-hand corner, then click into **Notes & Bookmarks**: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/617af0030332cb5b9e9b8bd7/file-wkqx0fMZ8G.png) 3. With the pop-up open, select **View** > **Developer** > **Developer Tools**: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/617af15f9ccf62287e5f0dcd/file-eL9uj8o4m1.png) 4. Select **Console** from the developer view and input the following script next to the `>` symbol, then press **Enter**. (You may need to type "allow paste" before it will allow you to paste the script in.) ```javascript var annotations = document.querySelector('.annotations'); var notesParagraphs = Array.from(annotations.querySelectorAll('p')); var notesText = notesParagraphs.map((paragraph) => `

${paragraph.innerHTML}

`).join('');var win = window.open("", "Title", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=200,top="+(screen.height-400)+",left="+(screen.width-840)); win.document.body.innerHTML = `
${notesText}
`; ``` ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/617af2710332cb5b9e9b8bf1/file-e1VKontNRJ.png) 5. A new window will open that contains all the highlights as plain text, and you can copy/paste the highlights to import them into Readwise with any of the following tools: * [CSV Import](https://readwise.io/import\_bulk) * [Freeform Input](https://readwise.io/import\_freeform) * [PDF Import](/readwise/docs/importing-highlights/) Import from Feedly ## How do I import highlights from Feedly? Here are directions on how to integrate your Feedly account with Readwise: 1. Go to your Readwise [dashboard](https://readwise.io/dashboard) > [Import](https://readwise.io/welcome/sync) > [Feedly](https://cloud.feedly.com/v3/auth/auth?client\_id=readwise\&redirect\_uri=https%3A%2F%2Freadwise.io%2Ffeedly%2Fcallback\&scope=https%3A%2F%2Fcloud.feedly.com%2Fsubscriptions\&response\_type=code\&state=). 2. Log into your Feedly account: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/60804db48af76a714bfd9773/file-KR7YXiXMw0.png) 3. Once successfully connected, your highlights will automatically be imported into Readwise! Connect Readwise with Goodreads If you're just getting started with Readwise and don't have many highlights of your own, [Supplemental Highlights](/readwise/docs/faqs#how-do-i-use-readwise-if-i-dont-have-that-many-highlights-yet) are a great way to fill your Library with the wisdom of books you've read in the past. But remembering what books you've read and manually entering them into your [Supplemental Books](https://readwise.io/supp\_library) can be a hassle. If you've ever used Goodreads to track your reading, you can make use of that data to fill out your Supplemental Books automatically by [connecting your Goodreads account](http://readwise.io/goodreads) to Readwise. ## How do I connect my Goodreads account to Readwise? To get started, go to the [import integrations page](https://readwise.io/welcome/sync), find the Goodreads option, and click **Connect**. If you're not currently logged in to your Goodreads account, this will prompt you to enter your login information. The integration will look at each book on your **Read** shelf and check to see if Readwise has any Supplemental Highlights for that book. Any books that do have Supplemental Highlights will be added to your Supplemental Books. Once you've set up the integration, you'll be able to see the books you've read in your Readwise Library and begin to see popular highlights from your Goodreads books in your Daily Review. ## Does the Goodreads integration automatically update with new books? Yes! Whenever you mark a new book as **Read** on Goodreads, Readwise will check for Supplemental Highlights and add the book to your Library. ## Why am I seeing duplicated books from my Goodreads account? Readwise treats Supplemental Books as separate entities from books you've added from other sources (or manually). If you made highlights while reading the book using another source connected to Readwise (e.g. Reader, Kindle, Kobo, etc.) and then marked the book as **Read** on Goodreads, you may see two versions of the book in your Readwise Library: one in [Books](https://readwise.io/books) with the highlights you took, and one in [Supplemental Books](https://readwise.io/supp\_library) with popular highlights. You can remove the Supplemental Books version by clicking into the book details and selecting **Delete book**. Import from Google play Books ## How do I import highlights from Google Play Books? It's a little tricky to get set up, but you can import your Google Play Books highlights into Readwise by following the steps below. 1. Make sure your Google Play Books account is configured to "Save notes, highlights, and bookmarks in Google Drive" (see the section entitled "Turn on notes saving" on Google's help page here: [Use & download bookmarks, notes, highlights, definitions, & translations](https://support.google.com/googleplay/answer/3165868?co=GENIE.Platform%3DAndroid\&hl=en\&oco=0)) 2. Once this is properly configured, Google Play Books will start generating a Google Doc for each book containing your highlights: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/5f92062dcff47e001a59148e/file-xsuZqIKOqX.png) 3. Once you've got this working, open the Google Doc for the book you wish to import into Readwise. 4. Select File > Email > Email as attachment: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/5f9206b84cedfd0017dd4999/file-kAMmBHBL3r.png) 5. In the To field, enter **add@readwise.io**: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/5f92072bcff47e001a591491/file-0V8H5vECF2.png) 6. In the format dropdown initially set to PDF by default, select HTML instead: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/5f92079746e0fb001798fcab/file-z44oK69a9m.png) 7. Click Send That's it! You should get a confirmation email linking to your newly synced highlights in Readwise 🙌 Please note that the Google Play Books import feature is still experimental, so please let us know if you encounter any bugs or difficulties! Import Highlights from Inoreader Here are directions on how to integrate your Inoreader account with Readwise: 1. Go to [https://www.inoreader.com/all\_articles](https://www.inoreader.com/all\_articles) 2. Go to your **Preferences menu** in the top right-hand corner > **Preferences** 3. Select **Share, Save & Login** 4. Hover over the question mark icon and click on [**readwise.io/access\_token**](http://readwise.io/access\_token) 5. Select **Get Access Token** > **Copy to clipboard** 6. Go back to the Inoreader integration page, paste the token and select **Connect** 7. Get to highlighting! After text is highlighted, you can select the **marker icon** next to the highlight to add a comment, which will also import into Readwise. You must be on the Inoreader Pro version to annotate/highlight and to sync with Readwise. Import Highlights from Instapaper To import your Instapaper highlights into Readwise, go to the [import integrations page](https://readwise.io/welcome/sync/) and click the Instapaper option. This will open a page where you can log in to your Instapaper accout and grant it permission to share your data with Readwise. Import from Amazon Kindle You can import your Kindle highlights to Readwise by choosing the Kindle option on the [Import Highlights](https://readwise.io/welcome/sync) page of your Readwise account. This will direct you to the page where you can install the [Readwise browser extension](#how-do-i-download-the-readwise-chrome-extension). Once you've installed the extension, you will be prompted to log in to your Amazon account. Upon logging in, the extension will navigate to your [Kindle notebook](https://read.amazon.com/notebook) and begin syncing your highlights. You'll see a progress indicator as it syncs, followed by a confirmation page once the syncing process is complete. If you read personal documents on your Kindle device or in a Kindle app, those highlights will not be automatically synced with Readwise. Amazon does not synchronize highlights of personal documents to the cloud the same way it does highlights of books purchased or borrowed through the Kindle store. You can use one of the [methods described below](#how-do-i-import-highlights-from-documents-i-sent-to-my-kindle). ## Does Readwise automatically sync new highlights I take on Kindle? Yes! So long as you (1) use the Chrome or Firefox browser on your computer and (2) keep the Readwise browser extension installed, then Readwise will continue to automatically sync your Kindle highlights. Occasionally, your browser will be logged out of the Kindle notebook page. If this happens, Readwise will display an orange dot on your Dashboard prompting you to log back in. If Readwise notices that new Kindle highlights haven't been synced in the past 45 days, you'll receive an email reminding you to resync. ## How do I download the Readwise Chrome extension? The Readwise Chrome extension is not publicly searchable in the Chrome Web Store because the authorization with Amazon doesn't work properly if you install the extension without first connecting your account to Readwise. You can find the extension download link on the [Import](https://readwise.io/welcome/sync) page by selecting the Kindle option. You’ll then be prompted to install the extension from the Chrome Store. ## Does Readwise have access to my Amazon password? No! In fact, Readwise couldn't access your Amazon password even if we wanted it to. * When you sign in using Amazon's authentication, Readwise only receives your email address. * When you sync your highlights with the Readwise browser extension, Readwise only has access to the subdomain read.amazon.com, which _never_ exposes your Amazon password — only your books and highlights. ## Some of my Kindle books and highlights aren't syncing. What do I do? Here are some troubleshooting steps to sync all your Amazon Kindle highlights with Readwise. ### Check that Amazon has all your highlights Confirm that all the books you've read and highlighted on Kindle appear on this website: [read.amazon.com/notebook](http://read.amazon.com/notebook). The highlights on this page are the highlights that will automatically sync with Readwise using the Readwise browser extension. If the books are not there, then it means they're not syncing with your Amazon account. This could happen for a few reasons: 1. You did not take any highlights in the book. 2. Your Kindle has been offline since you took the highlights. Make sure your device is connected to the internet so it can sync. 3. You might be highlighting books or documents you didn't purchase from Amazon. These highlights will not be synced with your Amazon account, and you need to import those to Readwise using a different method. See here: [How do I import highlights from documents I sent to my Kindle?](#how-do-i-import-highlights-from-documents-i-sent-to-my-kindle) ### Resync your account If the books are showing up on [read.amazon.com/notebook](http://read.amazon.com/notebook) but still not syncing with Readwise, try forcing a full resync with Readwise using this link: [Full Resync](http://readwise.io/welcome/sync?refresh=true). ### Disable ad blockers If the full resync doesn't work, try disabling any ad blockers for the Amazon and Readwise websites. If you try all these steps and are still encountering syncing issues, please reach out to us at [hello@readwise.io](mailto:hello@readwise.io) and we'll help you get them sorted ASAP! ## Why are my Kindle highlights truncated or showing ellipses? Publishers require Amazon to place a "copyright export limit" on the amount of highlighted text that can be exported from a particular book. This limit varies form book to book but is typically around 10% to 20% of the text. Once you exceed this threshold, highlights from the book will be truncated. You can see if this is happening to your highlights by visiting the [Kindle: Your Notes and Highlights](https://read.amazon.com/notebook) page and looking for the warning below: Separately, Readwise automatically appends an ellipsis to any highlight fragment not beginning or ending with punctuation. We do this for aesthetic reasons and to let you know there was more to the sentence. ## How do I import highlights from documents I sent to my Kindle? Your Kindle device or Kindle app only syncs highlights to the cloud from ebooks that you purchased directly from Amazon. You can see those highlights here: [Kindle: Your Notes and Highlights](http://read.amazon.com/notebook). These are the highlights that the Readwise extension can automatically synchronize for you. For highlights from books, articles, PDFs, and personal documents not purchased from Amazon, you can use a different technique to import your highlights to Readwise depending on whether you're reading on a Kindle device or a Kindle app. ### Kindle Device (My Clippings) Every highlight you take on a Kindle device is added to a file called My Clippings.txt saved on the Kindle device. You can extract this My Clippings file by plugging it into your computer using a USB cable. Then you can [email](mailto:add@readwise.io) or [upload](https://readwise.io/import_clippings) it to Readwise and all those highlights will be imported into your Readwise account. You can find more detailed instructions about this import in the section below: [How do I import My Clippings.txt to Readwise?](/readwise/docs/importing-highlights/kindle#how-do-i-import-my-clippings-txt-to-readwise) ### Kindle Apps (Email) You can import highlights from non-Amazon documents sent to your Kindle app by following the steps below: 1. Launch the Kindle app on your device. 2. Open the document you want to import your highlights from. 3. Select the **Notebook** icon in the top right. 4. Tap the **Share** icon. 5. Select the **Email** option. 6. Email the highlights to **add@readwise.io**. Readwise has advanced duplicate detection, so you don't need to worry about accidentally duplicating any previously imported highlights. ## How do I import My Clippings.txt to Readwise? While many of your Kindle highlights can be imported using the Readwise browser extension, there are some exceptions. Most notably, the extension won't be able to import any highlights taken on documents not purchased from Amazon (i.e. sideloaded/emailed files). To get those highlights into your Readwise account, you'll need to use the _My Clippings.txt_ file. There are two ways to import your _My Clippings.txt_ file, but before you can do either, you'll need to retrieve the file from your Kindle device. To do so, plug your Kindle in to your desktop or laptop computer and locate the My Clippings.txt file as shown below: Once you've retrieved the file, you can import it to Readwise in one of the following ways: - Email the file as an attachment to [add@readwise.io](mailto:add@readwise.io). The file will automatically be processed and imported into your account. - Upload the file via the [dashboard](https://readwise.io/dashboard) > [Import](https://readwise.io/welcome/sync) > [My Clippings.txt](https://readwise.io/import\_clippings). Readwise has advanced duplication detection, so don't worry about deleting previously imported highlights from the *My Clippings.txt* file. ## How do I import Kindle highlights from an international Amazon domain? The Readwise extension is designed to work with Kindle highlights synced to the cloud at [read.amazon.com/notebook](http://read.amazon.com/notebook). Sometimes, international Kindle users will find their highlights stored on a domain other than the **read.amazon.com**. You can connect your international Amazon account to Readwise from the Amazon.com login page. Just note that if you *also* have an Amazon.com account, you'll need to make sure you’re logged out of that account prior to syncing. To change the default language to English, click this [Amazon link](https://www.amazon.com/?language=en\_US) and then [re-sync your Kindle account](http://readwise.io/welcome/sync?refresh=true). Most international domains will work fine with the Readwise extension, but currently **amazon.co.jp** (Japan) and **amazon.cn** (China) aren't compatible and trying to sync from those domains will fail. ## Can I sync a second Kindle account with Readwise? Yes! You can sync a second Amazon Kindle account with Readwise. To do so, follow these steps: 1. Visit [read.amazon.com/notebook](http://read.amazon.com/notebook) and sign out of your first account using the link in the top right (where it says `Hello, [your name]`) 2. Sign in to your second Amazon account 3. Return to [readwise.io/sync](http://readwise.io/sync) and click the Amazon Kindle button However, only *one* account can maintain a continuous, automatic sync with your Readwise account. Whichever account is currently logged in at [read.amazon.com/notebook](http://read.amazon.com/notebook) will be kept in sync by the Readwise browser extension. ## Can I jump to a highlight directly in the Kindle app? Yes! If you're using Readwise on a desktop, you can jump directly to the highlight in the Kindle app for more context, provided you have the [Kindle app](https://www.amazon.com/kindle-dbs/fd/kcp) installed on your machine. All you need to do is click the downward chevron in the top right corner of each highlight and select **View in Kindle Desktop**, as shown below. ### Notes * The newest Kindle app broke the location links, and not just for us—the location links at [https://read.amazon.com/notebook](https://read.amazon.com/notebook) won't open in the new app either. - **Mac:** Previously, the workaround for this was to download the [Kindle Classic App](https://apps.apple.com/mg/app/kindle-classic/id405399194?mt=12?mt=12), but it seems that app has been removed from the App Store. If you still have the Classic app installed, you should still be able to use the location links, but otherwise you'll have to manually locate the highlight within the book. - **Windows:** As of right now, clicking the "Download for PC & Mac" button on the [Kindle app download page](https://www.amazon.com/kindleapps) while using Windows will allow you to download the Classic app, which *does* still work with the location links. * This feature doesn't currently work on mobile because the Kindle mobile apps don't allow for "deeplinking" the same way the desktop app does. * There is a limitation with the desktop Kindle app where you can only jump to a highlight's location if the Kindle app is closed. If the app is already open, you'll need to close it before trying to jump to a new location from Readwise. ## Why don't my Kindle highlights have page numbers? Due to the reflowable and reformattable nature of digital documents, Kindle books don't actually use page numbers and don't contain any information about their physical counterparts. The Kindle highlight data only includes the "Kindle location" number. Import from Kobo You can import your Kobo highlights to Readwise by choosing the [Kobo option](https://readwise.io/welcome/sync#kobo) on the Import Highlights page of your Readwise account. Just like Kindle, only highlights made in books _purchased from Kobo_ are uploaded to their cloud services and can be automatically synced to Readwise. If you've made highlights in sideloaded documents, you'll need to plug your Kobo device into your computer and follow the steps to sync manually. ## Automatic Sync of Books Purchased from Kobo On your first import, you will be prompted to provide your Kobo username and password. Please note that Kobo supports quite a few login options, but the Readwise integration only supports the Rakuten Kobo option (shown below). If you log into your Kobo account using a different method, the integration won't work. ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/65dfa533eeacc5315bb864ff/file-tQ0a2FgwxS.png) Once connected, any highlights you take in Kobo should automatically sync with Readwise periodically throughout the day. ## Manual Import of Sideloaded Books If you send documents to your Kobo device rather than purchasing them from the Kobo store, you'll need to manually extract those highlights from a database file on your Kobo device. Fortunately, a Readwise user has built a helpful tool called [October](https://utf9k.net/projects/october/) that works on almost all desktop operating systems (including Windows and MacOS) to automate this process. Once installed, you can simply plug your Kobo device into your computer and October will do the rest, including pulling the database file and uploading to Readwise. ## Beta Feedback The Kobo import feature is still in beta, so please let us know if you encounter any bugs! Import from Library Books If you use a popular app that lets you borrow ebooks from your local library and read them on your digital devices, you can import highlights from them to Readwise. Depending on how you read your library books, you can use one of the following methods to import the highlights into Readwise. ## If you read on Kindle If you read and highlight your library books on a Kindle device or in the Kindle app, the highlights will be automatically synchronized with Readwise as long as you have the Kindle integration configured. All notes and highlights are preserved in your Kindle account after a library book loan ends. You can find your library book highlights that you've read with your Kindle device or in the Kindle app here: [https://read.amazon.com/notebook](https://read.amazon.com/notebook). (It's also best practice to make sure your highlights and notes are uploaded to Amazon prior to your library loan expiring.) ## If you read in the library app If you read and highlight your library books in the same app where you loan them, [use this link](https://readwise.io/welcome/sync#libby) and follow the instructions on the screen. If the link isn't working for you, go to the [dashboard](https://readwise.io/dashboard) > [Import](https://readwise.io/welcome/sync) and click the "Library" integration. ### Exporting older highlights Note that the library app integration will not import highlights from books older than a couple of weeks. To import highlights from older books, follow these instructions: 1. Navigate to the book in your app and select the **Reading Journey** button. 2. Open the **Actions** menu and select *Export reading data*. 3. Select the *Data* option to export in the JSON format. 4. On web, right click the generated JSON page in the web browser and select *Save as*. On mobile, open the generated page in your mobile browser, tap the share icon, and save the file. 5. Email the JSON file to [add@readwise.io](mailto:add@readwise.io) to import the highlights. Import from Moon+ Reader Android's most downloaded e-reading app includes a native highlight integration with Readwise. Highlights from ebooks read in Moon+ will automatically sync to Readwise! ## Configuration 1. Open a book > Tap the middle of the screen to open the menu tray 2. Select **3 dots** > Check box next to **Bookmarks** > Tap **bookmark icon** 3. Select **Settings** icon > Check box next to **Share new highlights and notes to Readwise automatically** 4. Select **Settings** icon next to the above > Select **information icon** > **Get Access Token** > copy token and paste into Moon+ ## Notes 1. This is a global setting, so you won't have to complete these steps for every book. 2. Unfortunately, existing highlights won't sync, but you can delete/re-highlight your highlights to get them into Readwise. 3. Any notes you make will need to be added first if you'd like them to import into Readwise. Otherwise, you can always edit the highlights in Readwise at a later time to add your notes. 4. If you receive an error message, it's likely because you're offline. Make sure you're connected to data or WiFi > select bookmarks in the bottom right-hand corner > tap the 3 dots next to the date and time in upper left-hand corner > Share → Readwise Import from Physical Books with OCR ## How can I use my device's camera to import highlights from physical or paper books? If you have the Readwise [iOS app](https://readwise.app.link/6VY4GcGnIgb) or [Android app](https://readwise.app.link/jRPHsdEnIgb) installed, you can capture highlights from paper books using your phone's camera and optical character recognition (OCR). To do this, go to the **Add Highlights** tab of the app and select **Add via photo**. Take a photo of the book's page and use the selection handles to choose the passage you'd like to save, then tap the blue **Save** button. You'll have the option to edit the passage, in case the character recognition missed anything or you'd like to make any changes. Tap **Next**, add the page number or any notes you'd like, then select or search for the book to save the highlight to. You can also use screenshots or other photos already stored in your phone's camera roll by selecting the photo gallery option in the bottom right-hand corner. ## I don't have a device with a camera. How else can I add highlights from physical books? In addition to OCR, you can manually type highlights into Readwise from the **Add Highlights** tab of the app by tapping **Add via text**. This will allow you to manually type the passage you'd like to add, then use the same options as **Add via photo** for adding notes and selecting the book to save it to Readwise. You can also add highlights manually on web using the [Freeform Input Tool](https://readwise.io/import\_freeform) or the [CSV upload](https://readwise.io/import_bulk). Additionally, you can add the titles of paper books you've read and audiobooks you've listened to as [Supplemental Books](https://readwise.io/quick) to see popular highlights in your Daily Review. Import from OReilly Learning To import your highlights from the O'Reilly Learning platform into Readwise, first make sure you're logged into the [O'Reilly Learning website](https://learning.oreilly.com/). Click your profile icon, located in the top-right corner of the page. In the dropdown menu, select **Highlights**. On the [Your Highlights page](https://learning.oreilly.com/highlights/), click the **Export all highlights** link below the page title. Your highlights will download as a CSV file. Once you've downloaded the CSV file with your highlights, go to the [Readwise import page](https://readwise.io/welcome/sync) and locate the O'Reilly Learning card in the **Import & Upload** section. Click **Import** to go to the [upload page](https://readwise.io/import/oreilly-learning/), then click **Upload a CSV file** and select the file you just downloaded (likely titled `oreilly-annotations.csv`). Readwise can detect duplicate highlights and won't import any that have been added in a previous upload. If you've made new highlights in O'Reilly Learning and want to import them to Readwise, just repeat the steps above and only the new highlights will be added to your account. Import from Other Sources ## Capture Highlights from Web Articles There are a few ways you can capture highlights from web articles into Readwise. ### Readwise Reader (and other read-it-later apps) You can use Readwise's own "read-it-later" app, [Reader](https://readwise.io/read), or others apps like Instapaper that can [integrate with your Readwise account](https://readwise.io/welcome/sync). As the name would suggest, read-it-later means you save articles you come across on the internet to read later within the app. This is our recommended approach to reading and highlighting web articles because nearly all such apps (1) clean up the article to make the reading experience more enjoyable, (2) include highlighting and annotating features, and (3) automatically sync with Readwise. Reader even shares a database with Readwise, which means your highlights will sync seamlessly with no setup required! To save articles to Reader or to highlight articles on their original web pages, install the Readwise Reader browser extension: * [Install on Chrome](https://chromewebstore.google.com/detail/readwise-highlighter/jjhefcfhmnkfeepcpnilbbkaadhngkbi) * [Install on Firefox](https://addons.mozilla.org/en-CA/firefox/addon/readwise-highlighter/) ### Save Highlight to Readwise (desktop) If you're reading something in Chrome or Firefox with the Readwise extension installed, you can quickly capture a highlight to Readwise by highlighting the desired text, right-clicking, and selecting Save Highlight to Readwise. This highlight will then appear in the Articles section of your Readwise Dashboard. ### Save Highlight to Readwise (iOS) If you're reading something in Safari with the Readwise iOS app installed, you can quickly capture a highlight to Readwise by highlighting the desired text, selecting the share icon at the bottom of the tray on iPhone or top right on iPad (important: do not select Share in the popover), and selecting Save Highlight to Readwise. This highlight will then appear in the Articles section of your Readwise Dashboard. ### Web Clippers You can use one of many "web clipper" apps such as [Hypothes.is](https://hypothes.is/) or [Worldbrain](https://getmemex.com/). These apps install an extension in your browser, enabling you to highlight things as you go. If you wish to use a web clipper, we recommend Hypothes.is because Readwise can directly integrate with the service and sync with no effort on your part. If you use Liner, you will need to periodically export your highlights to a CSV and then email those to [add@readwise.io](mailto:add@readwise.io). ## Import Highlights from BookFusion [BookFusion](https://www.bookfusion.com/) makes it easy to highlight EPUBs and PDFs. Once you've made some highlights and annotations in their iOS, Android, or web app, you can quickly sync them to Readwise! **Here are the steps to send your BookFusion highlights to Readwise:** 1. Login to your BookFusion account on a desktop computer. Exports can currently only be done via BookFusion's web app. However, any highlights and notes you made in the iOS or Android BookFusion app will also appear in your web app and can be imported to Readwise. 2. Open the ebook with the highlights that you want to sync and click the “Highlights & Annotations” icon (highlighted in blue): 3. Click the export icon in the right-hand corner and select Readwise. 4. Copy and paste your access token from: [https://readwise.io/access\_token](https://readwise.io/access\_token) 5. Click export and enjoy. This is not an automatic or continuous import. You must click the export button each time to import new or updated highlights. ## Import Highlights from the Command Mobile Browser Command is a highlighting-first web browser on iOS that makes it easy to save highlights from a webpage as you’re browsing. Command has integrated Readwise into their app, enabling you to save highlights from webpages directly (and automatically) into Readwise! To set it up: 1. Download the [Command Browser from the App Store](https://apps.apple.com/us/app/command-a-better-browser/id1485289520) 2. Tap the Command icon on the bottom toolbar and go to highlights 3. Tap the sync icon in the top left corner & tap add account 4. Tap Readwise & Login – your highlights will start syncing Now – whenever you highlight in Command, your highlight & notes will sync automatically to Readwise and look something like this: ## Add Highlights from Audible Audible doesn't make it possible to extract bookmarks or clips through the cloud, so there's currently no way for us to make use of this data. We're keeping a close eye on things, however! In the meantime, you can add your Audible books into the Supplemental Books section to get the most popular highlights here --> [https://readwise.io/quick](https://readwise.io/quick) Alternatively, some of our users use the following method to export their Audible highlights into Readwise: ### WhisperSync for Voice [Audible](https://www.audible.com/) is owned by Amazon, so books with [WhisperSync for Voice](https://www.amazon.com/Whispersync-for-Voice/b?ie=UTF8\&node=12527156011) enabled will sync your reading location between the Audible and Kindle versions of your book. This makes it easy to make a highlight in your Kindle version while listening to the Audible version. When you hear something you'd like to highlight, just pause Audible and open the Kindle app on your device. The Kindle app will automatically sync to the location of your Audible book. Then, simply highlight the section you want in the Kindle app and return to listening in Audible. ## Import Highlights from Upnext We used to support imports from Upnext, but as of March 1, 2024, [Upnext has shut down](https://www.getupnext.com/sunset). If you're looking for another read-it-later app that integrates seamlessly with Readwise, check out [Readwise Reader](https://readwise.io/read)! [Upnext](https://www.getupnext.com/) is an iOS app to supercharge your continuous learning. Upnext lets you save any type of content for later, work through it when it suits you, and stay up-to-date with content from your favorite experts! Here's how to automatically sync your Upnext highlights and notes to Readwise: 1. Select the library icon on the bottom navigation bar. 2. Tap the Account icon in the upper right-hand corner. 3. Under Integrations select Connect to Readwise. 4. Login to Readwise. 5. Select Readwise Access Token > Copy token > Input in Upnext field > Submit Access Token ## Import Highlights from Liner The export feature of Liner described below is currently broken. You can email Liner support at [brian@getliner.com](mailto:brian@getliner.com) or Tweet [@getliner](https://twitter.com/getliner). Liner doesn't offer a public API, so there's no way to build an automatic integration with their service. That said, there is a manual method to import your Liner highlights into Readwise. Here are the steps: 1. In Liner, select the articles to export highlights from by clicking the check mark circle in the upper right corner of each article. 2. Select Export in the right-panel and choose Email as shown below: 3. Send the export to add@readwise.io. The highlights will be automatically imported into your Readwise account. Note that you can alternatively highlight and right-click on any webpage in Chrome to quickly clip specific passages to Readwise as shown below: ## Import Highlights from Momento We used to support Momento, but the app has been removed from the App Store. If you're looking for another podcast app that integrates with Readwise, check out Snipd: [How do I import highlights from Snipd?](/readwise/docs/importing-highlights/snipd) [Momento](https://momento.fm/) is a great podcast app that enables effortless audio “highlighting” of any podcast on iOS and Android devices. Here's how to automatically sync your Momento highlights to Readwise: 1. Select **Settings icon** in the upper right-hand corner of Momento app 2. **Connect to Readwise** 3. **Get Access Token** > Copy token > Input in **Step 2** of Momento app > **Connect Readwise** Import from PDF Files ## Can I import highlights from PDFs? Please note that **support for PDF highlights is in perpetual beta** so you may discover a new bug from time to time. If you do, let us know and we'll do our best to fix it promptly! To import highlights from a PDF, simply email the highlighted PDF file as an attachment to **add@readwise.io** (from an email address associated with your Readwise account). That's it. You can also upload PDFs by selecting the [PDF Import](https://readwise.io/import/pdf) option from Add Highlights. ## What PDFs work best? PDF is a fickle file format, so some PDFs highlight better than others: * **Digital PDFs.** Highlights extract much cleaner from digital PDFs than scanned PDFs with OCR applied. * **Single Column PDFs.** Text in a single column extracts _much_ more accurately than two or three column PDFs. You can still extract highlights from multi-column PDFs: just be prepared for things to sometimes fall out of order. The absolute worst are PDF presentations with text all over the page. * **Left-to-Right PDFs.** ## What happens if a highlight spans two pages? Due to limitations of the PDF file format, the highlight will be broken into two separate highlights. Fortunately, we have a workaround. Use the concatenation feature described here: [How to Combine Highlights On-the-Fly with Readwise](https://blog.readwise.io/combine-highlights-on-the-fly/). ## What PDF reader apps work with Readwise? Thus far, we've had positive results with the following apps (provided you are working with a clean PDF to begin with): * Preview (on Mac) * Adobe Acrobat * PDF Expert * LiquidText (note: there is a LiquidText glitch where you must do all of your highlighting in a single session) * Foxit * iAnnotate * DEVONthink * PDFPenPro If you could let us know what PDF app you're using when you email **add@readwise.io** PDFs, it would really help us! ## Which PDF reader apps do not work with Readwise? Believe it or not, there are some PDF reading apps that do not take normal highlights per the PDF annotation spec, so our parser cannot extract them. These apps include: * MarginNote * GoodNotes * Notability * Adobe Acrobat on iPad and Android tablets (we're looking into this) If extracting highlights from PDFs is important to you, we recommend switching to one of the reader apps listed in the section above! ## Can I send multiple PDFs in a single email? Yes, but the size of the attachments must be below 30 megabytes in total. ## How do title and author work? Readwise extracts the document title and author name from the PDF metadata. Not every PDF reader application enables editing of these properties. If your preferred app does allow metadata editing, we encourage you to make it a habit to clean these up, as some PDFs have strange metadata for reasons unknown to us. If the PDF has no metadata, Readwise will use filename as book title and leave the author blank. If a PDF does import with incorrect metadata, you can edit the title and author in Readwise. ## I've imported PDF highlights but I can't find them in Readwise? If you didn't receive an error email from Readwise, you likely can't find the PDF highlights in Readwise because the file had strange metadata. In other words, it's named something non-obvious. Open the PDF, find a highlight, and search Readwise for a fragment of the highlight text. ## Why does my PDF keep coming back with an error? As a bit of background, PDF is an incredibly fickle file format originally created in 1993 for the purpose of printing digital documents to analog paper. Technology has come such a long way in the past 30 years that, if we had our druthers, we'd move people off PDF entirely and into something meant for the digital-first world (e.g. an ebook standard such as EPUB or MOBI). Of course, network effects are strong and that's not going to happen for a long time, if ever. Until then, we're gradually discovering edge cases and improving our parsing through a lot of manual hard-coding. In nearly all cases, we don't deliberately choose not to support a particular PDF reader. Instead, the PDF reader decides—for whatever reason—not to use the official PDF annotation spec but rather to, for example, draw yellow rectangles with transparency on top of the document. Other times, the PDF may look like ordinary text to the user, but It's really either a scanned image or series of tiny letter-shaped images (encoded entirely differently from text) which can't be picked up by ordinary software. Import Highlights from Pocket We used to support imports from Pocket, but as of July 8, 2025, [Pocket has shut down](https://support.mozilla.org/en-US/kb/future-of-pocket). If you're looking for another read-it-later app that integrates seamlessly with Readwise, check out [Readwise Reader](https://readwise.io/read)! To import your Pocket highlights into Readwise, go to the [import integrations page](https://readwise.io/welcome/sync/) and click the Pocket option. This will open a page where you can log in to your Pocket accout and grant it permission to share your data with Readwise. Import from Raindrop.io You can import your [Raindrop.io](https://raindrop.io/) highlights to Readwise with our native integration. ## Getting Started 1. Head to the Readwise import page and select the [Raindrop option](https://readwise.io/welcome/sync#raindrop).Ò 2. Connect to Raindrop. 3. Watch your Raindrop highlights automatically sync to reader, including tags and annotations: ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/62fbde176d67192dc61bb4e4/file-fidrf4lzla.gif) As of right now, this integration only imports text-based highlights, not images. ## Re-syncing Highlights Your Raindrop highlights should sync periodically throughout the day. If you ever want to instantly re-sync to import new highlights, head to the [import page](https://readwise.io/welcome/sync), locate Raindrop, and click "Sync Now." ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/62fbdf2961ff5d5f24f9c661/file-LhmTJbpc8o.png) The Raindrop.io import feature is still in beta! If you have any feedback or find any bugs, please reach out to us as [hello@readwise.io](mailto:hello@readwise.io) :) Import from Refind [Refind](https://refind.com/) is a discovery platform that delivers the essence of the web every morning in your inbox every morning. Thousands of busy people start their day with their personalized digest by Refind and save highlights and notes to remember the most important bits. This integration is only available for Refind Premium subscribers. Here's how to automatically sync your Refind highlights to Readwise: 1. On your desktop, click into your profile icon in the upper right and select Settings 2. Under Data, select Export > Readwise 3. Click the link to retrieve your Readwise Access Token, copy the token, and input it into the Refind field 4. Click Connect ![](https://d33v4339jhl8k0.cloudfront.net/docs/assets/5eb8cc86042863474d1a75fd/images/613f7ecb6c65aa15b87d9bfa/file-KDAltAros3.gif) Import from Snipd [Snipd](https://www.snipd.com/) is a cutting edge podcast app (available on iOS and Android) that uses AI to automatically generate intelligent highlights and “chapters” of any English podcast. Here's how to automatically sync your Snipd highlights to Readwise: 1. Install the Snipd app on your [iOS](https://apps.apple.com/us/app/snipd-your-podcast-knowledge/id1557206126) or [Android](https://play.google.com/store/apps/details?id=ai.topicfinder.podcastdiscovery) device 2. Select Your Account in the bottom right of the app 3. Select Readwise Integration 4. Toggle on Enable Integration 5. Select [Find your Readwise Access Token here](https://readwise.io/access_token), copy the token, and paste it into the Snipd field 6. Tap Sync Existing Snips Now Import from Twitter/X ## How do I save Tweets from Twitter to Readwise? You can start saving Tweets and Twitter threads to Readwise by connecting your Twitter account to Readwise from the [dashboard](https://readwise.io/dashboard) > [Import](https://readwise.io/welcome/sync) > [Twitter](https://readwise.io/twitter\_start). Once connected, you can save an individual tweet by replying with **@readwise save** as shown below: Or you can send Tweets to **@readwise** via DM. If you DM the Tweet, any text you include in the message will be treated as a note in Readwise. (Great for [inline tagging](/readwise/guides/action-tags#inline-tagging)!) You can save entire Twitter threads by replying with **@readwise save thread** as shown below: You can also DM the thread to **@readwise** with the word **thread** or **t** in the message. Any text you include in the message will be treated as a note in Readwise. If your Twitter account is set to private, please message us at [hello@readwise.io](mailto:hello@readwise.io) to follow you on Twitter so that we can see the tweets/threads you save and import them into your library for you. You can still tag "[@readwiseio](https://twitter.com/Readwiseio) save" in your Tweets if you want, or you can use [@readwise](https://twitter.com/readwise) and save yourself 2 characters—both work :) ## Can I save Tweets to Readwise by bookmarking them? Yes! You can find the settings for the sync from the [dashboard](https://readwise.io/dashboard) > [Import](https://readwise.io/welcome/sync) > [Twitter](https://readwise.io/twitter\_start). Once you authorize the connection, you can choose to automatically sync new bookmarks once a day. This feature is experimental and relies on the stability of Twitter's API. If you encounter any issues, please let us know at [hello@readwise.io](mailto:hello@readwise.io) so we can continue building a better integration. ## How do I prevent Twitter thread duplicates in Readwise and Reader? By default, individual Twitter posts will be saved as a highlight to your Readwise account, while Twitter threads will be saved to Reader as an article. If your threads or single tweets are appearing in both places, it’s possible that your Twitter settings are causing an overlap. To adjust this, click into your [Preferences](https://read.readwise.io/preferences) in Reader and select [Integrations](https://read.readwise.io/integrations). Click the Settings button to expand the options (see screenshot below). To reduce duplicates, make sure that each type is only checked on for either Reader or Readwise, rather than both. ## Why does Readwise need both read and write Twitter permissions? Protecting the privacy of our users is important to us, but unfortunately Twitter's current API provides only three permission levels for developers: Source: [https://twitter.com/settings/applications](https://twitter.com/settings/applications) At this time, this is the only way to enable our users to share Tweets to their own timelines as well as save Tweets to their Readwise accounts. However, as an important note: we will **never** tweet anything without your permission, and we do not read any data but your tweets to @readwise. ## Can I connect a second Twitter account to Readwise? You can connect multiple Twitter accounts to Readwise from the [Twitter integration settings page](https://readwise.io/twitter_start). On the left side of the page, you'll see a list of currently connected Twitter accounts. To connect a new one, click **Add another account**. This will open the Twitter authorization page and allow you to grant Readwise permission to access your account. Note that you'll want to be logged into the target account (or logged out entirely) before clicking this, since it will prompt the authorization for whichever account is currently logged in. To remove a connected account, click the gray **X** to the right of the account name. Import from Voicenotes [Voicenotes](https://voicenotes.com/) is a speech-to-text transcription app with built-in AI features, allowing you to take audio notes and then easily generate summaries, key takeaways, to-do lists, and much more. The Voicenotes to Readwise integration automatically imports your notes as Readwise highlights as soon as you create them. ## How do I import my Voicenotes to Readwise? 1. Log in to your [Voicenotes account](https://voicenotes.com/app/), then click into the account settings in the top right 2. Click into **Integrations**, then select **Readwise**. 3. Paste your [Readwise API token](https://readwise.io/access_token) into the first field of the settings and configure the other options to suit your preferences. Click **Connect**. Once you've conencted your accounts, any new notes you create in Voicenotes will be exported to Readwise and will appear under the category you selected during setup (Articles, Books, Tweets, or Podcasts). Webhooks # Webhooks Webhooks allow you to receive real-time notifications when certain events occur in your Readwise account. This enables you to integrate Readwise with external services and automate workflows based on your reading activity. ## Overview Readwise supports two types of webhook integrations: 1. **Zapier Webhooks** - Automatically managed through Zapier's platform 2. **Custom Webhooks** - Manually configured endpoints for direct integrations ## Zapier Webhooks Zapier webhooks are automatically created and managed when you set up a Zap that uses Readwise as a trigger. These webhooks are handled entirely through Zapier's interface and don't require manual configuration. ### Features - **Automatic Management**: Created and deleted automatically by Zapier - **Built-in Authentication**: Uses Zapier's OAuth flow - **No Manual Setup**: Configuration happens through Zapier's interface - **Reliable Delivery**: Benefits from Zapier's retry mechanisms ### Setting Up Zapier Integration 1. Go to [Zapier](https://zapier.com) and create a new Zap 2. Choose Readwise as your trigger app 3. Select the event you want to trigger on 4. Follow Zapier's authentication flow to connect your Readwise account 5. Configure your action app and complete the Zap setup ## Custom Webhooks Custom webhooks allow you to send notifications directly to your own endpoints, giving you full control over how you handle Readwise events. ### Features - **Direct Integration**: Send events directly to your endpoints - **Custom Processing**: Handle events exactly how you need - **Webhook Signatures**: Secure your endpoints with secret verification - **Multiple Event Types**: Subscribe to specific events that matter to you ### Setting Up Custom Webhooks 1. Navigate to [Readwise Webhooks page](https://readwise.io/webhook) 2. Click "Create New Webhook" 3. Fill in the required information: - **Name**: A descriptive name for your webhook - **URL**: The endpoint where you want to receive notifications - **Event Types**: Select which events you want to subscribe to - **Description** (optional): Additional notes about this webhook ### Webhook Security Each custom webhook includes a secret key for verifying the authenticity of requests: - **Secret Generation**: Automatically generated 32-character secret (sent in POST request data) - **Signature Verification**: Use the secret to verify webhook payloads - **HTTPS Recommended**: Always use HTTPS endpoints for security ### Testing Webhooks Before creating a webhook, you must test your endpoint: 1. Enter your webhook URL 2. Click "Test Endpoint" 3. Ensure your endpoint returns a successful response 4. Only after successful testing can you create the webhook ## Available Event Types Readwise supports the following webhook event types: ### Readwise Events #### `readwise.highlight.created` Triggered when a new highlight is created in your Readwise library. ### Reader Events #### `reader.any_document.created` Triggered when any new document is added to Reader (articles, PDFs, etc.). #### `reader.feed_document.created` Triggered when a new document is added from an RSS feed or newsletter subscription. #### `reader.non_feed_document.created` Triggered when a new document is manually added (not from feeds). #### `reader.document.tags_updated` Triggered when tags are added, removed, or modified on a document. #### `reader.document.finished` Triggered when a document is marked as finished/read. #### `reader.document.archived` Triggered when a document is archived. #### `reader.document.moved_to_later` Triggered when a document is moved to the "Later" queue. #### `reader.document.moved_to_inbox` Triggered when a document is moved back to the inbox. #### `reader.document.shortlisted` Triggered when a document is added to your shortlist/favorites. ## Webhook Payload Format All webhooks send JSON payloads with the structure differring based on the entity we are sending. ### Document ```json { "id": "01kb5cap1wy21zp37bc2rjj", "url": "https://read.readwise.io/read/01kb5cap1wy21zp37bc2rjj", "title": "Our Black Friday sale ends soon! Subscribe now", "author": "The Verge", "source": null, "category": "email", "location": "feed", "tags": { "media": { "name": "Media", "type": "generated", "created": 1764338530643 }, }, "site_name": "The Verge", "word_count": 174, "reading_time": "1 min", "created_at": "2025-11-28T14:02:02.213618+00:00", "updated_at": "2025-11-28T14:02:10.648147+00:00", "published_date": "2025-11-28", "summary": "The Verge is offering a limited-time Black Friday discount on its subscription. For $4 a month or 40% off a yearly plan, you get ad-free podcasts, premium newsletters, and exclusive Q&As. The deal ends soon, so act fast.", "image_url": null, "content": null, "source_url": "mailto:reader-forwarded-email/90049694f7dbf92219bf18a1f6a", "notes": "", "parent_id": null, "reading_progress": 0, "first_opened_at": null, "last_opened_at": null, "saved_at": "2025-11-28T14:02:02.173000+00:00", "last_moved_at": "2025-11-28T14:02:02.173000+00:00", "event_type": "reader.any_document.created", "secret": "lphrx901Iq3kzswFSth5ST" } ``` ### Highlight ```json { "id": 954480, "text": "Most Amazing Highlight Ever", "note": "", "location": null, "location_type": "page", "highlighted_at": "2025-11-27T18:55:56.719036Z", "url": null, "color": "", "updated": "2025-11-27T18:55:56.867572Z", "book_id": 8237, "tags": [], "event_type": "readwise.highlight.created", "secret": "8mFG0SsX8Xe199sRG2A3" } ``` How to Use Action Tags Action tags are highlight notes that use a specific syntax to perform actions on the associated highlight. All action tags begin with a `.` character, and they effect how the highlights appear in Readwise. ## Concatenation Have you ever found yourself highlighting an entire fluff-filled paragraph even though all you really wanted were the key sentences at the beginning and end? To overcome this problem, you can use the *conconatenate action tag*: a special note taken while you read that combines multiple, non-adjacent highlights into a single annotation in Readwise. Your concatenated highlights will be both shorter and clearer, streamlining your future reviews. Highlight the first string of text you want to combine and add the note `.c1` ("c" for "concatenate"). Then highlight the second string of text and add the note `.c2`. Upon importing into Readwise, these two highlights will be combined into a single annotation. You can string as many highlights together in this way as you’d like by continuing on to `.c3`, `.c4`, etc. A tag of `.c1` will always begin a new concatenation string. The concatenate action tag works across *all* e-reading platforms supported by Readwise, including [Amazon Kindle](/readwise/docs/importing-highlights/kindle), [Apple Books](/readwise/docs/importing-highlights/apple-books), and our own read-it-later app [Reader](/reader/docs/faqs/action-tags#how-can-i-create-headings-between-my-highlights). ## Inline Tagging Readwise has some very powerful features, such as [Themed Reviews](/readwise/guides/themed-reviews), that are most useful when they can pull from a pool of tagged highlights. However, setting aside time to go through your recent highlights and tag them appropriately can be cumbersome, and waiting for them to appear in your Daily Review delays the utility of the tag. This is where *inline tags* come into play. Inline tags allow you to add a highlight note wherever you may be reading (Kindle, Kobo, etc.) that will be automatically converted to a tag when the highlight is synced to Readwise. To create an inline tag, start any note with a `.` and follow it with a single word or abbreviated (no spaces). For example, let's say you're interested in the subject of probability and you come across a thought-provoking passage describing the difficulty of defining what probability actually means. You want to save this passage for later, so you highlight it. You also want to attach the keyword "probability" so when you see this passage again, you know immediately what it's about. To use inline tagging, simply add the note `.probability` in addition to the highlight. That's it! Your highlight is now tagged. ## Headings The heading action tag is a special note taken while you read that captures a book's structure—its parts, chapters, sections, and subsections. Once you've captured this data, the more intuitive location context of chapters becomes available in Readwise. Even though your highlights from books typically include a page or "location" number, this context is largely meaningless unless you happen to be writing a paper requiring proper citations. For most of us, it'd be far more useful to see location in terms of the highlight's part, chapter, section, or subsection. The heading action tag makes this possible. To create a heading, simply highlight the title of each section and add a note beginning with a period (`.`) followed by an `h` (for "heading") and then the number `1` through `3`, representing the section's position in the hierarchy. For example, with a book organized into parts, chapters, and sections, you would denote all parts as `.h1`, all chapters as `.h2`, and all sections as `.h3`. You can start with lower level headings (e.g. `.h3`) and they’ll still appear in Readwise, but for the table of contents to appear on the left side of the page, you’ll need to start with at least one `.h1` tag. Chat With Your Readwise Highlights At its core, this feature is essentially a super-powered search across every highlight you've ever made. Use plain language to find specific highlights, even if you might not remember when you took it, who the author was, or even exactly what it was about. ## How can I start chatting with my highlights? To get started, click the [Chat](https://readwise.io/chat/) button at the top of your Readwise dashboard. On mobile, you can access the Chat feature from the home screen by tapping **Chat With Your Highlights**. If you've ever used another AI tool—like ChatGPT or Perplexity—the Chat interface should feel quite familiar. Here's a quick overview of the options you'll see: 1. **Ask a question:** Type your question or search into the text box. Use the `enter` key or the arrow icon to submit your query. 2. **Suggestions:** Ideas for things you could ask your highlights. Clicking one of these will create a new chat. 3. **Toggle sidebar:** Open the sidebar to see your previous chats. ## Can I see which highlights were used to generate the answer? Of course! Below the Chat's response, you'll see a section called **Relevant Highlights** ➊. Clicking any of the highlight cards or the **See more** button will open a side panel where you can see the full text of the highlights. This section is separated into two sections: **Referenced Highlights** ➋ and **Other Relevant Highlights** ➌. "Referenced highlights" are the ones that were used to generate the answer. "Other relevant highlights" are ones that were used to generate the answer, or might be relevant to the question, but weren't referenced directly. ## What can I ask my highlights? You can ask anything! The response will likely be better if you ask about things related to your highlights, but experimentation is the heart of discovery so feel free to get creative. That said, there are a few places where we think the Chat With Highlights feature excels. If you're not sure where to start, here are some ideas. ### Semantic Search Trying to find a highlight but can’t remember the precise words or where you read it? Describe the rough idea and Chat will find the exact highlight. **Examples** - I’m trying to find a Paul Graham quote about rejecting social media. - In Tiny Beautiful Things there’s a line about the truth that lives there. Can you pull up that quote and its larger context? ### Synthesize Ideas Ask a question and Chat will synthesize an answer based on your entire reading history. **Examples** - As a product manager, how should I balance building features for power users, and features for broader, adjacent markets? - What are some common mistakes new writers make when writing non-fiction stories? - How can I find my purpose in life? ### Quiz Me You can ask Chat to create questions to test your knowledge, based on previous highlights. **Examples** - Please generate a series of multiple choice questions quizzing me on the most common drumming rudiments. - I'm studying for the Korean TOPIK exam. Can you ask me some open-ended questions about Korean verb conjugation to quiz me? ## Can I find highlights based on what platform I took them on? Yes! You can ask a question like "what tweet did I save about the best way to learn a new language?" or "what was the highlight about oranges I took last week on my Kindle?" The ability to search by platform is just one of the ways that this feature is more robust than a traditional text search. ## What AI model powers Chat With Highlights? Can I change it? By default, Chat With Highlights is powered by OpenAI's OpenAI's `GPT-5` model with fairly low thinking. However, if you'd prefer to trade speed for intelligence, you can switch to a more thoughtful version of the model via the dropdown menu in the left corner of the chat box. ## Can I chat with my highlights using a different client/model? You can! If you'd like to communicate with your highlights using an external chat client instead of Readwise's built-in chat interface, you can set up your own MCP (Model Context Protocol) server. It might sound like a complicated, tech-heavy concept, but you can actually [configure it without too many steps](/readwise/guides/mcp). How to Increase Retention with Mastery The Mastery feature converts your Readwise highlights into active recall formats such as Q&A and cloze deletion. By actively engaging with the material, you reinforce understanding and improve retention. This method transforms passive reading into an active learning adventure, making your knowledge more durable and actionable. ## Creating a New Mastery Card If you encounter a highlight in your Daily Review that contains information you want to remember better, simply click or tap the **Master** button below the card. If you're on a computer, you can use the keyboard shortcut `M`. This will open up the Mastery card editor for the chosen highlight. To create a Mastery card from a highlight outside of your Daily Review, navigate to the document within your [Readwise library](https://readwise.io/everything). After opening the document, find the highlight you'd like to convert, click the card to open the highlight view, then click the Mastery icon from there. ## Q&A Cards Q&A cards use the traditional concept of a flashcard: question on the front, answer on the back. To create a Q&A Mastery card, click the **Question & Answer** tab at the top of the Mastery editor. Come up with an insightful question about the highlighted passage and type it into the **Question** field. If the passage easily answers the question, you can click **Use highlight text as answer**, or you can write your own answer in the **Answer** field. Click **Save** to view your new flashcard. Try using [the .qa Action Tag](/readwise/guides/action-tags) with a [custom Ghostreader prompt](/reader/guides/ghostreader/custom-prompts) in Reader to easily create Readwise flashcards as you read. ## Cloze Deletion With cloze deletion, a salient keyword or keyphrase is hidden from the passage, giving you an opportunity to pause and consider the missing word. To create a cloze deletion Mastery card, click the **Cloze Deletion** tab at the top of the Mastery editor. (This is the default tab when opening the editor.) Find the word or phrase you want to hide and select it. Once you've selected the appropriate text, click **Save** to view the new flashcard. ## Reviewing Mastery Cards Once you've created your first Mastery card, your Daily Review will be divided into two halves. The first half will contain unprocessed highlights which have never been reviewed before in Readwise or haven't been converted to Mastery cards. The second half of your Daily Review will contain your Mastery cards. These are resurfaced according to a [spaced repetition algorithm](/readwise/docs/faqs/reviewing-highlights#how-does-the-readwise-spaced-repetition-algorithm-work-mastery) and presented in active recall form. Each time you review a Mastery card, you'll be prompted to give feedback on how quickly you'd like to review it again: soon, later, or someday. (You can also select "never" if you'd like to remove the card entirely.) If you had no idea what the answer was, you might want to choose "soon", but if you knew it immediately and don't feel you'll be forgetting it immediately, you could choose "someday" instead. ## Retention vs Memorization The first time most people see Mastery in Readwise, they tend to assume it's about memorization. Sometimes they even assume it's about *rote* memorization. While that assumption is understandable, we want to emphasize that Mastery is *not* about memorization. The point isn't to memorize a text verbatim so you can pedantically rattle off some passage word-for-word at a cocktail party. (Even though that can be a very fun party trick, in the right crowd.) No, the point is to reprogram your brain. To prime your mind to spot patterns, form connections, and resurface the right idea at the right time. For example, if you apply Mastery to *Deep Work* and your weekly calendar starts to fill with shallow calls and meetings, your mind will likely notice the pattern and then start nudging you to create some uninterrupted space. *Maybe I should schedule a four-hour focus block to protect that currently unoccupied Thursday morning?* Many Readwise users are frustrated by the inefficiency of books because they spend lots of time reading but then forget so much, leading to little or no change in their daily lives. If that resonates with you, Mastery could be the key you need to unlock the full power of your book smarts. How to use the Readwise MCP ## What is the Readwise MCP? The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) standardizes how applications provide context to Large Language Models (LLMs). The Readwise MCP was created to act as a bridge between LLM clients and Readwise. In simpler terms, setting up your own Readwise MCP server allows you to chat with your Readwise highlights using an external chat client (such as Claude), rather than the [Chat function](/readwise/guides/chat-with-highlights) on the Readwise website. ## Use the Readwise MCP with Claude Desktop The following instructions will help you configure the [Readwise MCP](https://www.npmjs.com/package/@readwise/readwise-mcp) to work inside of your Claude Desktop app. Before beginning the MCP setup, [make sure you have Node installed](#how-do-i-install-node). The Readwise MCP relies on Node to perform the connection, so it won't work if Node is missing. 1. Open the Claude Desktop app. If you don't have the desktop version install yet, you can [download it here](https://claude.ai/download). 2. In the sidebar of the app, navigate to **File > Settings > Developer** (`cmd + ,` on Mac). 3. Click **Edit Config**. This will take you to the configuration file's location in your file browser. 4. Open the config file in your text editor of choice. ([Visual Studio Code](https://code.visualstudio.com/) is a great free option if you don't have one already!) 5. Add the following entry to your `claude_desktop_config.json` file. **IMPORTANT:** Replace the `ACCESS_TOKEN` value with your [Readwise Access Token](https://readwise.io/access_token)! ``` { "mcpServers": { "Readwise MCP": { "command": "npx", "args": [ "-y", "@readwise/readwise-mcp" ], "env": { "ACCESS_TOKEN": "XXXXXXXXX" } } } } ``` 6. Start chatting with your highlights in Claude! ### FAQs and troubleshooting #### I'm getting an error when I add the `mcpServers` entry to my config file. What do I do? If your `claude_desktop_config.json` file is empty when you open it, you can simply copy/paste the code provided in the instructions above. However, if your file already has any content, you'll need to make sure you only add the actual `mcpServers` entry, without the exterior curly brackets. The screenshot below shows an example of how the new entry should be added in a file that already has an updated setting for Claude's global activation hotkey. Note the comma added after the existing `globalShortcut: "Ctrl+Space"` code! #### How can I tell that the MCP server is set up? Once you've set up your MCP config, the New Chat screen of Claude will display a couple of new icons. The first icon indicates the number of MCP tools you've set up to work with Claude. If Readwise is your first, it should say 1. The second icon indicates that an MCP server is connected and able to share context with Claude. Clicking either icon will open a modal and display information about the Readwise connection. #### How do I install Node? If you do any programming in your daily life, either for work or as a hobby, there's a good chance you already have Node installed on your computer. But if you've never needed it before (and most people likely haven't!), you can [download it from the NodeJS website](https://nodejs.org/en/download). The simplest installation option is usually the installer, which you can download by selecting your operating system (➊) and then clicking the green button (➋). You shouldn't need to do anything other than install it. The Readwise MCP configuration just needs to be able to find it on your system! #### Why did I get an error while chatting? When using this server, you may occasionally encounter MCP errors during your conversations with Claude. If you experience an error, we recommend switching between different Claude models (e.g. from Claude 3.5 Haiku to Claude 3.7 Sonnet), which will often resolve the issue. ## Use the Readwise MCP with Raycast [Raycast](https://raycast.com) is a supercharged launcher and productivity tool for MacOS. Among its *many* other capabilites, Raycast now has the ability to hook into MCP servers while using its AI Chat feature. To get started with the Readwise MCP in Raycast, search for the `Install Server` command of the Raycast MCP extension. Fill out the install form with the following information: - **Icon:** Select an icon from the Raycast options. (The "Blockquote" option is decently apt!) - **Name:** This can be whatever you'd like to use to reference the server in your AI chats. We recommend "Readwise" or "Readwise MCP" to keep things simple. - **Command:** `npx` - **Arguments:** `-y @readwise/readwise-mcp` - **Environment:** This is a two part field. Click "Add Item" to reveal the subfields. - **Key:** `ACCESS_TOKEN` - **Value:** Your [Readwise Access Token](https://readwise.io/access_token). - **Description:** *(optional)* You can probably leave this blank if you're just using the server for your own purposes, or you can enter something like "Search your Readwise highlights." Once you configure the server, you can use it in the Raycast AI Chat (quickly accessible by opening Raycast and pressing `tab`) by typing `@` and whatever you used in the **Name** field (e.g. `@readwise-mcp`). Note that it might ask you to confirm that you want to run the command before it actually executes. You can quickly authorize it with `cmd + enter` to continue with the chat. If you want to learn more about how MCP servers work with Raycast, check out [the MCP page of the Raycast Manual](https://manual.raycast.com/model-context-protocol). ## Use the Readwise MCP with ChatGPT At this time, only ChatGPT users with **Pro, Team, or Enterprise plans** have access to the MCP functionality of ChatGPT. This feature is not currently available for users with free or Plus accounts. To get started with the Readwise MCP in ChatGPT, go to [chatgpt.com](https://chatgpt.com/) and log in to your account. Open **Settings** from the bottom left corner of the screen. Go to the **Connectors** option in the Settings menu sidebar, then click the **Create** button. Fill out the form with the following information: - **Logo:** *(optional)* Upload an image to represent the connection. We've made one with the Readwise logo that you can download here, to make the connection look properly official. Download Readwise icon - **Name:** This can be whatever you'd like to use to find the connection in the list. We recommend "Readwise" or "Readwise MCP" to keep things simple. - **Description:** *(optional)* You can leave this blank, or you can enter something like "Search your Readwise highlights." - **MCP Server URL:** `https://mcp.readwise.io/sse` - **Authentication:** Use the `OAuth` option. - **I trust this application:** Check this box. (We promise we won't steal your data!) Once you click **Create**, you'll be briefly redirected to the Readwise website to authenticate the connection. Click **Authorize** to continue. After authorizing, you may initially see an error about `search action not found`. If you do, click the **Refresh** button and the error message should disappear. Back in the chat interfact, turn on the **Connected apps** option in the `+` menu, then select Readwise from your Sources list. Once you've selected Readwise as a Source, you can chat with your Readwise highlights directly in ChatGPT. How to Create a Themed Review A Themed Review is a collection of highlights that—as the name implies—follows a theme. This is separate from your Daily Review, and it can be set up to gather highlights manually from specific sources or to gather them automatically based on a theme you describe. You can access the feature by scrolling to the bottom of your Dashboard and selecting [Themed Reviews](https://readwise.io/themed\_reviews). If you haven't created any Themed Reviews yet, then you'll be automatically directed to [create a new Themed Review](https://readwise.io/themed_reviews/add). If you have existing Themed Reviews, you can add a new one by clicking **+Add New Theme** at the top of the page. Themed Reviews count toward your Readwise streak, so you won't need to do your Daily Review to keep your streak if you consistently do a Themed Review instead. ## Creating a new Themed Review When creating a new Themed Review, you'll first be prompted to give it a name. You can also select a color, which will be used for the review card that appears on your Readwise dashboard. Next, you can opt to select your highlight sources manually or to use the automatic selection feature. ### Automatic selection Using the AI-powered automatic selection feature allows you to create dynamic and cohesive Themed Reviews without needing to have manually tagged all of your highlights or remember every book you've read that might be related. You can quickly describe your theme idea, and the automatic selection will resurface highlights related to that particular topic. To use the automatic source selection, turn the "Auto Select Sources" toggle on. You'll be offered a few suggestions for themes based on your highlights, and clicking one of them will automatically populate the theme for you and show a preview of the highlights that will be included. To create your own theme, just type your idea into the **Theme** field. You can write a list of general theme words, like `writing, creativity, self-publishing`, or more of a descriptive sentence, like `highlights about finding yourself and making a difference in the world`. You'll see a preview of your highlights that fit the theme you've described, so you can get a sense for what the Themed Review will include before you save it. ### Manual selection To manually select your Themed Review's sources, turn the "Auto Select Sources" toggle off. You can select any combination of books, articles, tweets, notes, and [tags](https://readwise.io/tags/) using the **Sources** field. ### Additional customizations Once you've named your review and selected highlight sources, either automatically or manually, you have a couple more configuration options. 1. **Highlights Per Review:** This slider allows you to select how many highlights you'd like to see in each iteration of the Themed Review. The default is 5, but you can go as high as 15 or as low as a single highlight. 2. **Review Frequency:** This allows you to select how often you'd like this review to appear. By default, it's set to "Daily", but you can configure this however you'd like: only weekdays, only weekends, only Tuesdays and Saturdays, once a month, etc. 3. **Send Emails:** If this toggle is ON, you'll receive your Themed Review by email at your chosen frequency. If the toggle is OFF, you won't receive emails, but you'll still see the Themed Review appear at the top of your Readwise dashboard on any day that matches the frequency pattern. 4. **Add New Theme:** Click this button when you're done configuring and want to save the theme! (Or click "Cancel" if you've changed your mind and want to throw away all your work.) ## Use cases & ideas for automatic selection Are you intrigued by the idea of AI-powered automatic selection for your Themed Reviews, but you're running low on inspiration? Here are some ideas and uses cases to get you started. ### Review highlights from a specific author To create a Themed Review for a specific author with the original manual selection, you would need to individually select each document in your sources, then edit your Themed Review each time you read a new document written by them. With automatic selection, you can say `highlights from James Clear` or `books by Brandon Sanderson` and those highlights will be collected for you. Even better, new documents will be automatically included into the Themed Review without you needing to make any updates. ### Resurface old, untagged highlights Maybe you've recently decided you want to learn more about a particular topic, but you know you read some books or articles about the topic before you thought to start tagging your highlights. Using the automatic selection method allows you to resurface those highlights, and maybe even find some that you don't remember making! For example: Romi on our CX team is a new mother and used the automatic selection to create a Themed Review about parenting. She was surprised to find that it included highlights she took over a decade ago, long before her daughter was even a twinkle in her eye ✨ ### Make unexpected connections One of the biggest benefits of using an LLM to power this feature is that it doesn't need to be literal or an exact match, so you can experiment will all kinds of vague concepts. For example: Our technical writer Cayla decided to have a bit of fun and type in `life, the universe, and everything`. As would be expected of a more basic search, the preview did include her highlights from the Douglas Adams novel of the same name. However, it also included a variety of highlights about metaphysics, astronomy, and humanity's search for the meaning of life. Useful? Maybe not. But did it spark joy? It absolutely did. ## Themed Review FAQs ### Can I edit an existing Themed Review? Of course! To edit any of your Themed Reviews, go to the [Manage Themes page](https://readwise.io/themed_reviews) and click the list item of the theme you'd like to change. You'll see all the same options as when you create a new theme, and you can make changes to any of them. ### Can I delete a Themed Review? Yes! To delete a Themed Review, go to the [Manage Themes page](https://readwise.io/themed_reviews) and click the three dots (`...`) at the right side of the review you'd like to delete, then select **Delete**. ### How else can I use Themed Reviews? The most obvious application of Themed Reviews is to create stacks of topically related highlights, such as “Spirituality” or "Programming.” But the possibilities for Themed Reviews go far beyond subject-based reviews and mastery. You can use Themed Reviews to learn new skills and concepts, spark connections, think through hard problems, and even fuel a writing practice. Because this feature is so flexible, we created a video explaining some of the many ways it can be used. (Note that this video was made before we added the automatic source selection option, so the interface will be slightly different.)