How to Use Hourly Automations to Auto-Process Your Knowledge Base
Set up hourly automations in Claude Code to process new web clips, extract entities, and build a self-updating wiki from your saved content.
Why Your Saved Content Graveyard Needs Automation
Most people who clip articles, highlight research, and bookmark resources end up with the same problem: a pile of saved content they never actually use. The notes app is full. The browser bookmarks are a mess. And the “knowledge base” is really just a collection of links that felt important in the moment.
The core issue isn’t that people don’t save things — it’s that processing saved content takes manual effort, and manual effort doesn’t happen consistently. Hourly automations solve this by removing the human from the loop entirely. New content gets ingested, structured, and filed the moment it arrives, without you having to think about it.
This guide walks through exactly how to set up hourly automations to auto-process your knowledge base: pulling in new web clips, extracting key entities like topics, names, and concepts, and writing everything into a self-updating wiki that stays current without any maintenance.
What “Auto-Processing” Actually Means
Before building anything, it helps to be clear about what the automation is actually doing. Processing a web clip isn’t just storing it — it’s transforming raw content into structured, searchable, connected knowledge.
A fully automated knowledge pipeline does three things:
- Ingestion — Pulls new content from wherever you clip it (Readwise, Pocket, a browser extension, an email inbox, or a webhook)
- Extraction — Uses an AI model to identify entities: people, organizations, topics, dates, concepts, and relationships
- Filing — Writes structured output into your wiki or note-taking system (Notion, Obsidian, Confluence, a markdown file directory, etc.)
Coding agents automate the 5%. Remy runs the 95%.
The bottleneck was never typing the code. It was knowing what to build.
When this runs every hour, nothing sits unprocessed for long. By the time you sit down to do actual research or writing, the groundwork is already done.
Prerequisites: What You Need Before You Start
Getting this working requires a few things in place. None of them are complicated, but skipping setup leads to frustrating debugging later.
A Consistent Source for New Content
Your automation needs somewhere to poll. Common options:
- Readwise Reader — has an API that returns newly saved documents with timestamps
- Pocket — REST API supports filtering by date added
- Browser extensions — can push to a webhook endpoint or append to a shared spreadsheet
- Email-to-clip — forwarding articles to a dedicated inbox that the automation reads
- Google Sheets or Airtable — a simple inbox row that anything can write to
The key is that your source supports filtering by recency. You want to fetch only content added since the last run, not re-process everything every hour.
A Target Knowledge Base
Where does the processed content land? Popular choices:
- Notion — good API, rich block structure, easy to query
- Obsidian with a sync plugin — markdown files, works great for graph-based linking
- Confluence — better for team environments
- Airtable — great if you want to query your knowledge base like a database
- A flat markdown directory (GitHub repo or local) — maximally portable
An AI Model for Extraction
You’ll need access to an LLM capable of structured output. Claude, GPT-4o, and Gemini all handle entity extraction reliably. For hourly processing of batches, you want a model that’s fast and cost-effective — not necessarily the most capable model available.
Step 1: Design Your Entity Extraction Schema
The quality of your knowledge base depends almost entirely on how well you define what you want to extract. A vague prompt produces vague output. A structured schema produces structured, queryable knowledge.
Start by deciding what entities matter to your use case. For a personal research knowledge base, a reasonable schema looks like this:
{
"title": "string",
"summary": "string (2-3 sentences)",
"main_topics": ["array of topic strings"],
"people_mentioned": ["name", "name"],
"organizations_mentioned": ["org", "org"],
"key_concepts": ["concept", "concept"],
"date_published": "ISO date or null",
"source_domain": "string",
"content_type": "article | research | opinion | tutorial | news",
"related_to": ["existing wiki page titles that this connects to"]
}
The related_to field is the one most people skip, and it’s the most valuable. By asking the model to identify connections to existing knowledge, you end up with a wiki that links itself.
Writing the Extraction Prompt
Your prompt needs to be explicit about format. Asking for JSON and then validating the output before writing it anywhere saves a lot of pain.
A working extraction prompt looks like:
You are a knowledge base assistant. Given the following article content, extract structured metadata.
Return ONLY valid JSON matching this schema: [schema here]
Rules:
- Summary must be 2-3 sentences, written in third person
- Topics should be specific (not "technology" — use "large language models" or "retrieval-augmented generation")
- For related_to, only reference topics that would plausibly have their own wiki page
- If a field is unknown, return null or an empty array
Article content:
[article text]
Not a coding agent. A product manager.
Remy doesn't type the next file. Remy runs the project — manages the agents, coordinates the layers, ships the app.
Test this manually on 5-10 articles before wiring it into automation. Adjust the prompt until the output is consistently clean.
Step 2: Build the Hourly Fetch Logic
The automation runs on a cron schedule — every hour, at the top of the hour. Here’s what it does on each run:
- Read a stored timestamp (the last time it ran successfully)
- Query your content source for items added after that timestamp
- For each new item, fetch the full text
- Run entity extraction
- Write to the knowledge base
- Update the stored timestamp
Storing State Between Runs
The most common mistake is not persisting state properly. If your automation doesn’t remember when it last ran, it’ll re-process everything every hour — or worse, miss things entirely.
Simple options for persisting the last-run timestamp:
- A row in a database (Airtable, Supabase, or even a Google Sheet) — easiest for no-code setups
- A file in cloud storage (S3, Google Drive) — works well for scripted automations
- An environment variable in your automation platform — check whether it supports mutable state
Handling Rate Limits
If your content source is an API, expect rate limits. Build in:
- A short delay between sequential requests (250-500ms is usually safe)
- Retry logic with exponential backoff for 429 responses
- A maximum batch size per run (20-50 items) to prevent runaway processing
If you clip more than your batch limit in a single hour, that’s fine — the backlog will be processed in subsequent runs.
Step 3: Run Extraction in Parallel (Carefully)
Processing items sequentially works, but it’s slow. If you have 15 clips waiting, sequential extraction at 2-3 seconds each means the batch takes 30-45 seconds. That’s fine.
But if you’re running a shared or team knowledge base where dozens of items come in per hour, parallel extraction makes sense. Run 3-5 extractions concurrently rather than sequentially, using a simple concurrency limit to avoid hammering the AI API.
The key constraint: most AI APIs have per-minute token limits, not just rate limits on requests. Keep your concurrency low enough that you’re not burning through your token budget in the first few seconds of each run.
Step 4: Write Structured Output to Your Wiki
Once you have clean JSON from the extraction step, writing it to your knowledge base is mostly a matter of formatting.
For Notion
Use the Notion API to create a new database entry for each processed clip. Map your extracted fields to Notion properties: topics as multi-select tags, people as relation fields if you have a people database, and the summary as a text property.
The full article text (or a clean excerpt) goes into the page body as a paragraph block.
For Obsidian (Markdown Files)
Generate a .md file per clip with YAML frontmatter:
---
title: "How Transformers Work"
date_clipped: 2024-01-15
date_published: 2023-11-02
source: "distill.pub"
topics: [transformers, attention mechanisms, deep learning]
people: [Ashish Vaswani]
content_type: research
related_to: [attention-is-all-you-need, neural-network-architectures]
---
## Summary
[Summary text here]
## Key Concepts
- [concept 1]
- [concept 2]
## Original Content
[Clipped text]
The related_to links become wikilinks inside the file — [[attention-is-all-you-need]] — which Obsidian automatically resolves into graph edges.
For Airtable
Create a record per clip with fields matching your schema. Airtable’s linked records feature lets you connect clips to existing topic records, people records, and organization records — giving you a relational knowledge base rather than a flat list.
Step 5: Build the Self-Updating Wiki Index
A pile of individual clip records isn’t a wiki — it’s a database. The difference is the index layer: summary pages that aggregate knowledge by topic, person, or concept and update automatically as new clips arrive.
There are two ways to maintain this index.
Option A: Rebuild on Each Run
At the end of each hourly run, query your knowledge base for all clips tagged with each topic that was touched during the current batch. Regenerate the topic summary page from those clips.
This is simple and always accurate, but generates more LLM calls per run. For a personal knowledge base, this is the right approach.
Option B: Incremental Updates
When a new clip is processed, identify its topics and update only those topic pages — appending the new clip’s summary and updating the topic’s tag cloud or concept list.
This is faster and cheaper, but requires more careful state management to avoid duplicate entries or missed connections.For team-scale knowledge bases, incremental is usually the right call.
What a Good Topic Page Contains
A well-structured auto-generated topic page should include:
- A short definition of the topic (generated by the AI)
- A list of related topics (derived from co-occurrence in clips)
- A chronological list of clips tagged with this topic, with summaries
- Notable people and organizations associated with this topic
- Open questions or contradictions identified across sources
The AI generates the definition and identifies contradictions — everything else is aggregated from clip metadata automatically.
How MindStudio Fits Into This Workflow
Building this kind of automation from scratch requires stitching together API calls, scheduling logic, state management, and AI model access. That’s a lot of infrastructure before you even get to the knowledge processing part.
MindStudio is built for exactly this. You can assemble the entire pipeline — hourly schedule, content source polling, entity extraction with any of 200+ AI models, and write-back to Notion, Airtable, or Obsidian via its 1,000+ integrations — without writing infrastructure code.
The specific piece that saves the most time: MindStudio’s scheduled background agents handle the cron logic, state persistence, and retry management natively. You define what the agent does; MindStudio handles when and how reliably it runs.
For teams using Claude Code or other AI coding agents, the MindStudio Agent Skills Plugin lets your agents call MindStudio’s capabilities — including runWorkflow() — as simple method calls. So your Claude Code agent can trigger the knowledge-processing workflow as a side effect of other work, without you having to build the scheduling layer yourself.
One coffee. One working app.
You bring the idea. Remy manages the project.
The no-code workflow builder makes it practical to build and iterate on the extraction schema quickly. When your prompt needs tuning, you update it in the visual editor and redeploy — no code changes, no redeployment pipeline.
You can try MindStudio free at mindstudio.ai.
Common Mistakes and How to Avoid Them
Not Validating JSON Output
AI models occasionally return malformed JSON, especially when the article content contains special characters or quotes. Always parse and validate extracted JSON before writing it anywhere. A failed write is better than corrupted data.
Add a simple validation step: if the JSON parse fails, log the raw output and skip the item. It’ll be picked up manually or on the next review pass.
Overloading the Extraction Prompt
Asking for too many fields in a single extraction pass increases hallucination risk and makes the prompt harder to maintain. If you find accuracy degrading, split into two passes: one for factual metadata (title, date, source, content type) and one for semantic extraction (topics, concepts, relationships).
Forgetting to Deduplicate
If the same article gets clipped twice (common when you save from multiple devices), you’ll end up with duplicate records. Add a deduplication check using the source URL before extraction runs. A simple hash of the URL is enough.
No Alerting on Failures
Hourly automations that fail silently are worse than no automation at all — you assume things are working when they’re not. Set up a simple failure alert: an email or Slack message if the automation fails more than twice in a row.
FAQ
What’s the best AI model for knowledge base entity extraction?
For most use cases, Claude 3.5 Haiku or GPT-4o Mini offer the best balance of accuracy, speed, and cost for extraction tasks. They handle structured JSON output reliably and are fast enough for batch processing. Reserve larger models for cases where deep reasoning is required — like identifying contradictions across sources — not routine extraction.
How do I handle paywalled content in my knowledge base?
If your browser extension clips the full text before the paywall (which tools like Readwise Reader do), the automation receives the full content and processes it normally. If you only have a URL, you’ll need a separate step to fetch the content — which may fail for paywalled sites. In that case, process what you have: extract from the headline, meta description, and any preview text, and flag the record as “partial content.”
Can this workflow handle non-English content?
Yes, modern LLMs handle multilingual content well. Your extraction prompt may need a small addition: “If the content is not in English, translate the summary and key concepts to English before returning JSON.” The entity extraction itself works reasonably well across major languages without modification.
How do I avoid hitting API rate limits when processing large backlogs?
Set a maximum batch size per run (20-30 items is a safe default) and implement rate limiting within the batch. If you have a large backlog from initial setup, run the automation manually a few times in succession rather than processing everything at once. Most APIs are more forgiving of sustained moderate throughput than short bursts.
What’s the difference between a knowledge base and a wiki?
How Remy works. You talk. Remy ships.
A knowledge base is a collection of stored information — usually flat records or documents. A wiki adds a layer of interconnection: pages link to each other, topics aggregate related content, and the whole system is navigable. The automation described here builds both: individual clip records (knowledge base) and auto-generated topic pages that link them together (wiki structure).
How often should hourly automations actually run?
“Hourly” is a starting point, not a requirement. If you clip content steadily throughout the day, hourly is reasonable. If you do most of your reading in focused sessions, a few times per day may be enough. The goal is that processed content is available when you need it — usually within a few hours of clipping. Daily runs work fine for most personal knowledge bases; hourly only becomes important when the knowledge base is shared and people expect near-real-time updates.
Key Takeaways
- Hourly automations work by fetching new clips since the last run, running AI extraction, and writing structured output to your wiki — then repeating.
- Entity extraction quality depends almost entirely on how well you define your schema. Spend time on this before wiring anything together.
- State persistence (storing the last-run timestamp) is the most common point of failure. Use a database row or file, not an in-memory variable.
- Self-updating topic pages are what turn a clip database into an actual wiki. Rebuild them on each run or update them incrementally, depending on scale.
- MindStudio’s scheduled background agents handle the scheduling, state, and integration layer — so you can focus on the extraction logic rather than infrastructure.
If you want to build this without writing your own scheduling or integration code, MindStudio gives you the full pipeline in a visual builder with native connections to Notion, Airtable, Google Workspace, and the AI models you’re already using.