Readwise + OpenRouter, weekly insights you can publish
Your best ideas are probably already in your highlights. They’re just buried. You read great stuff all week, save a few lines in Readwise, and then Monday shows up and you’re back to a blank page and a vague “I know I learned something…” feeling.
This Readwise OpenRouter insights automation hits content marketers hardest, but founders writing thought leadership and consultants building credibility feel it too. Instead of re-reading your own archive, you start the week with a clear brief: themes, key quotes, and publishable angles.
Below is what the workflow does, what you get out of it, and how to run it weekly without turning “reading” into another admin chore.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Readwise + OpenRouter, weekly insights you can publish
flowchart LR
subgraph sg0["Weekly Schedule Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Retrieve Articles"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Separate Article Items", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Retrieve Highlights"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Separate Highlight Items", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Combine Articles and Highlig.."]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Build Insight Prompt"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Read Progress 10%", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Match Highlights to Article", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Produce Weekly Insights", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "LLM Chat Model", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>Render Insights as HTML"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Shape Readwise Save Payload"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Post Insights to Readwise"]
n13@{ icon: "mdi:play-circle", form: "rounded", label: "Weekly Schedule Trigger", pos: "b", h: 48 }
n14@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Trigger", pos: "b", h: 48 }
n9 -.-> n8
n0 --> n1
n13 --> n0
n5 --> n8
n2 --> n3
n1 --> n6
n10 --> n11
n8 --> n10
n3 --> n7
n6 --> n2
n7 --> n4
n4 --> n5
n11 --> n12
n14 --> n0
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n13,n14 trigger
class n8 ai
class n9 aiModel
class n6,n7 decision
class n0,n2,n12 api
class n4,n5,n11 code
classDef customIcon fill:none,stroke:none
class n0,n2,n4,n5,n10,n11,n12 customIcon
The Problem: Highlights Don’t Turn Into Content
Readwise is great at capturing highlights. The painful part is what happens after. You have quotes, half-finished notes, and a growing list of articles you “mean to revisit” that never actually make it into a post, a client insight, or a team brief. When you finally need to write, you end up skimming your archive, copying snippets into a doc, trying to remember what mattered, and losing the thread halfway through. It’s not hard work. It’s draining work. And it quietly steals the momentum your reading should be building.
The friction compounds. Here’s where it usually breaks down.
- You spend about 30–60 minutes hunting for “the good bits,” then realize you forgot why they were good.
- Highlights stay disconnected, so patterns across multiple articles never get surfaced.
- Content ideation turns into guesswork because there’s no weekly summary of what you actually focused on.
- You save interesting ideas, but they don’t get turned into a reusable brief your future self can act on.
The Solution: Weekly Readwise Insights, Generated and Saved Automatically
This workflow turns your last 7 days of Readwise activity into a “Weekly Reading Insights” article you can publish from. It runs on a schedule (or manually), pulls the articles you updated recently, and filters for the ones you actually engaged with (more than 10% read progress). Then it fetches the matching highlights, bundles everything into a structured prompt, and sends it to an AI model through OpenRouter. The model returns a clean, organized markdown brief with themes, takeaways, and content angles. Finally, the workflow converts that markdown to HTML and saves it back into Readwise as a new article titled “Weekly Reading Insights,” so it lives inside your second brain instead of scattered across docs.
The workflow starts with a weekly trigger (Monday at 09:00 by default) or a manual run when you want it. Readwise data gets pulled and matched, then OpenRouter generates the analysis. The finished brief is rendered and posted back to Readwise automatically.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you read 10 articles in a week and highlight 5–10 passages in each. Manually, pulling those into a doc, grouping themes, and drafting angles is easily about 2 hours (and that’s on a good week). With this workflow, you trigger it in seconds, n8n fetches the last 7 days of Readwise activity, and the AI generates your “Weekly Reading Insights” brief while you do something else. You usually end up spending maybe 10 minutes reviewing and polishing before publishing or repurposing.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Readwise for your articles, highlights, and saving back.
- OpenRouter to generate the weekly insights brief.
- Readwise API token (get it from the Readwise Reader API settings).
Skill level: Beginner. You’ll paste API keys, test one run, and optionally tweak the prompt wording.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A weekly (or manual) run kicks it off. The workflow can run on a schedule (Monday morning by default) or whenever you hit “execute” in n8n.
Readwise articles are pulled and cleaned up. n8n retrieves recently updated articles, splits them into individual items, then filters out anything you barely touched by keeping only reads over 10% progress.
Highlights are fetched and matched to the right sources. For the filtered articles, the workflow retrieves highlights, splits them out, and matches each highlight back to its article so the AI sees the full context.
OpenRouter generates the insights, then Readwise stores the result. A prompt is built from your reading data, OpenRouter returns a markdown brief, it’s converted to HTML, and then posted back into Readwise as “Weekly Reading Insights.”
You can easily modify the prompt persona and the output format to match your brand voice and publishing goals. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set up the weekly and manual triggers that start the workflow.
- Open Weekly Schedule Trigger and set the cron Expression to
0 9 * * 1to run every Monday at 9:00 AM. - Keep Manual Execution Trigger enabled for on-demand testing and ad‑hoc runs.
- Confirm that Weekly Schedule Trigger outputs to Retrieve Articles and Manual Execution Trigger also outputs to Retrieve Articles.
Step 2: Connect Readwise and Fetch Weekly Articles
Configure the first Readwise request and split the response into individual article items.
- Open Retrieve Articles and set URL to
https://readwise.io/api/v3/list. - Set Authentication to
genericCredentialTypeand Generic Auth Type tohttpHeaderAuth. Credential Required: Connect yourhttpHeaderAuthcredentials. - Under Query Parameters, set updatedAfter to
{{ $now.minus(7, 'days') }}, withHtmlContent totrue, and category toarticle. - Keep pagination enabled with Next URL set to
{{ $response.body.nextPageCursor ? `https://readwise.io/api/v3/list?pageCursor=$response.body.nextPageCursor` : 'https://readwise.io/api/v3/list'}}and Complete Expression set to{{!$response.body.nextPageCursor }}. - Open Separate Article Items and set Field to Split Out to
results.
Step 3: Filter Reading Progress and Fetch Highlights
Filter articles with meaningful engagement and fetch their highlights from Readwise.
- In Filter Read Progress >10%, set the condition Left Value to
{{ $json.reading_progress }}, Operation togt, and Right Value to0.1. - Open Retrieve Highlights and set URL to
=https://readwise.io/api/v3/list/. - Set Authentication to
genericCredentialTypeand Generic Auth Type tohttpHeaderAuth. Credential Required: Connect yourhttpHeaderAuthcredentials. - Under Query Parameters, set category to
=highlightand updatedAfter to{{ $now.minus(7, 'days') }}. - Open Separate Highlight Items and set Field to Split Out to
results. - In Match Highlights to Article, set the condition to match Left Value
{{ $json.parent_id }}with Right Value{{ $('Filter Read Progress >10%').item.json.id }}.
Step 4: Combine Data and Build the LLM Prompt
Merge articles and highlights, then craft the structured prompt used by the AI model.
- Review Combine Articles and Highlights to ensure the code references Filter Read Progress >10% and Match Highlights to Article for merging results.
- Open Build Insight Prompt and confirm it builds the prompt from merged content and returns prompt, articles_count, and total_highlights.
- Ensure the prompt formatting rules in Build Insight Prompt remain intact to enforce markdown links.
Step 5: Configure the AI Generation and Output Formatting
Run the AI model, convert markdown to HTML, and prepare the Readwise payload.
- In Produce Weekly Insights, set Text to
{{ $json.prompt }}and keep Prompt Type asdefine. - Open LLM Chat Model and set Model to
google/gemini-2.5-pro. Credential Required: Connect youropenRouterApicredentials. This model is attached as the language model for Produce Weekly Insights—add credentials to LLM Chat Model, not the chain node. - In Render Insights as HTML, set Mode to
markdownToHtmland Markdown to{{ $json.text }}. - Review Shape Readwise Save Payload to ensure the payload uses
https://weekly-insights.local/${timestamp}and should_clean_html is set totrue.
Step 6: Post Insights to Readwise
Send the formatted insight article back to Readwise.
- Open Post Insights to Readwise and set URL to
https://readwise.io/api/v3/save/with MethodPOST. - Set JSON Body to
{{ $json }}and enable Send Body with Specify Body set tojson. - Set Authentication to
genericCredentialTypeand Generic Auth Type tohttpHeaderAuth. Credential Required: Connect yourhttpHeaderAuthcredentials.
Step 7: Test and Activate Your Workflow
Validate the full flow and turn on the weekly schedule.
- Click Execute Workflow using Manual Execution Trigger to run a full test.
- Confirm that Retrieve Articles and Retrieve Highlights return items, Produce Weekly Insights outputs text, and Post Insights to Readwise returns a success response.
- Check Readwise for a new article titled like
Weekly Reading Insights - YYYY-MM-DDwith formatted HTML content. - Toggle the workflow to Active to allow Weekly Schedule Trigger to run automatically.
Common Gotchas
- Readwise credentials can expire or you may be missing header auth details. If requests fail, check the two HTTP Request nodes first and confirm your Readwise API token is still valid.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- OpenRouter model outputs depend heavily on your prompt. Default prompts in AI nodes are generic, so add your tone, audience, and “what to produce” instructions early or you’ll be editing outputs forever.
Frequently Asked Questions
About 5–10 minutes if you already have your API keys.
No coding required. You’ll connect Readwise and OpenRouter, then test-run the workflow once.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenRouter model/API usage costs, which depend on the model you pick and how much text you send each week.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and honestly that’s where the value is. Update the “Build Insight Prompt” code node to ask for the structure you want (for example: 3 themes, 5 contrarian takes, 10 post hooks, and 3 newsletter sections). You can also swap the “LLM Chat Model” node to use a different OpenRouter model if you want shorter answers or a more analytical tone. Some teams add a “Send Email” node after the markdown is generated so the brief lands in an inbox too.
Usually it’s an expired or incorrect Readwise API token in one of the HTTP Request nodes. Double-check both “Retrieve Articles” and “Retrieve Highlights,” then confirm you set up header authentication the way Readwise expects. If it still fails, look for rate limiting or a changed endpoint in the Readwise Reader API.
A typical week of highlights is fine, but huge weeks may require trimming before sending to the model. On n8n Cloud, your limit is mainly monthly executions, while on self-hosting there’s no execution cap (it depends on your server). Practically, the bottleneck is prompt size and model cost, so many people keep it to “last 7 days” like this workflow does.
Often, yes, because this workflow needs multiple fetches, filtering, matching highlights to articles, and a structured AI prompt build. n8n is more comfortable with that kind of branching logic, and self-hosting means you’re not paying per task as aggressively once volume grows. Zapier or Make can still work if you keep it simple, but you’ll usually end up fighting data shaping steps. If you’re unsure, Talk to an automation expert and describe what “weekly insights” should look like for your brand. You’ll get a clear recommendation quickly.
This workflow makes your reading habit pay you back every week. Set it up once, skim the brief on Monday, and spend your writing time on ideas that are already proven to matter to you.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.