Daily Reading Setup with GitHub Storage - Complete Guide
Daily Reading Setup with GitHub Storage - Complete Guide
Transform your reading habits with an automated system that captures, organizes, and syncs your daily reading across all devices using GitHub as your permanent storage backend.
🎯 What You’ll Get
- Universal Bookmarklet: Save any webpage with one click
- GitHub Synchronization: Never lose your reading data
- Rich Metadata: Auto-capture titles, URLs, highlights, and notes
- Cross-Device Access: Access your readings from anywhere
- Searchable Archive: Find any reading with powerful filters
- Export/Import: Full data portability
📋 Prerequisites
- A GitHub account
- A GitHub repository (we’ll use your existing blog repo)
- Basic familiarity with GitHub Personal Access Tokens
🚀 Step-by-Step Setup
Step 1: Create GitHub Personal Access Token
- Go to GitHub Settings
- Visit https://github.com/settings/tokens
- Click “Generate new token (classic)”
- Configure Token
- Name: “Daily Reading Blog”
- Expiration: Choose your preference (90 days recommended)
- Scopes: Check “repo” (Full control of private repositories)
- Generate and Copy
- Click “Generate token”
- Important: Copy the token immediately - you won’t see it again!
Step 2: Configure GitHub Sync
- Visit Your Daily Reading Page
- Go to your blog’s
/daily-reading/
page - You should see the reading interface
- Go to your blog’s
- Set Up GitHub Sync
- Click “⚙️ GitHub Sync Setup”
- Paste your GitHub token
- Click “💾 Enable GitHub Sync”
- Create the Storage File
- Click “📁 Create GitHub File” button
- This creates
_data/readings.json
in your repository - Verify success message
Step 3: Install the Bookmarklet
- Find the Bookmarklet
- Scroll to the bottom of your daily reading page
- Look for “Quick Save Bookmarklet” section
- Install the Bookmarklet
- Drag the “📚 Save Reading” link to your bookmarks bar
- Or right-click and “Bookmark this link”
🔧 How It Works
The Complete Flow
Webpage → Bookmarklet → Temporary Storage → Reading Form → GitHub API → _data/readings.json
Data Structure
Your readings are stored in _data/readings.json
with this structure:
{
"id": "unique-identifier",
"title": "Article Title",
"url": "https://example.com/article",
"notes": "Your personal notes",
"highlights": ["Key quote 1", "Key quote 2"],
"summary": "Brief summary",
"tags": ["tech", "productivity"],
"timestamp": "2025-01-27T10:00:00.000Z",
"date": "Jan 27, 2025, 10:00 AM",
"dateAdded": "1/27/2025",
"domain": "example.com",
"favicon": "https://example.com/favicon.ico"
}
📖 Using the System
Saving Articles
- Quick Save: Click the bookmarklet on any webpage
- Enhanced Save: Visit your daily reading page, fill out the form
- Bulk Import: Use the “📥 Import JSON” feature
Managing Readings
- Search: Use the search bar to find specific articles
- Filter by Tag: Select tags from the dropdown
- Filter by Date: Use the date picker
- Edit: Click on any reading to modify it
- Delete: Remove readings you no longer need
Synchronization
- Auto-sync: Happens automatically when you add/edit readings
- Manual sync: Click “🔄 Test Sync” to force synchronization
- Status: Check the sync status indicator
🔍 Features Deep Dive
1. Bookmarklet Capabilities
The bookmarklet automatically captures:
- Page title - Clean, readable title
- URL - Full webpage address
- Selected text - Any text you’ve highlighted
- Domain - Website domain for organization
- Favicon - Site icon for visual identification
2. GitHub Storage Benefits
- Permanent backup - Never lose your data
- Version history - Track changes over time
- Accessibility - Access from any device
- Portability - Download your data anytime
- Collaboration - Share with others if desired
3. Advanced Organization
- Tags - Categorize readings (tech, business, personal)
- Highlights - Save key quotes and insights
- Notes - Add personal thoughts and reactions
- Summary - Capture main takeaways
- Timestamps - Track when you read each article
🛠️ Troubleshooting
Common Issues
1. “Not Found” Error (404)
Error: File not found in GitHub repository
Solution: Click “📁 Create GitHub File” button
2. Authentication Failed (401)
Error: Invalid GitHub token
Solution:
- Check token hasn’t expired
- Verify token has “repo” scope
- Regenerate token if needed
3. Permission Denied (403)
Error: Token lacks required permissions
Solution:
- Ensure token has “repo” scope
- Check repository access permissions
- Verify repository name is correct
🎨 Customization Options
Modify Storage Location
Edit the configuration in your daily reading page:
const config = {
owner: 'YourUsername',
repo: 'your-repo-name',
branch: 'main',
filePath: '_data/readings.json' // Change this path
};
Add Custom Fields
Extend the reading object structure:
const reading = {
// ... existing fields ...
priority: 'high',
readingTime: '5 minutes',
category: 'technical',
source: 'newsletter'
};
Custom Tags
Pre-populate common tags:
const commonTags = ['tech', 'business', 'design', 'productivity'];
📊 Data Analysis
Using Jekyll Data
Since readings are stored in _data/readings.json
, you can use them in Jekyll:
<h3>A valid HTML zip bomb - ache</h3>
<p></p>
<small>Jul 25, 2025, 8:34 AM</small>
<h3>SQL Injection as a Feature</h3>
<p></p>
<small>Jul 23, 2025, 11:21 PM</small>
<h3>Qwen3-Coder: Agentic Coding in the World | Qwen</h3>
<p></p>
<small>Jul 23, 2025, 8:31 AM</small>
<h3>Can LLMs Do Accounting? | Penrose</h3>
<p></p>
<small>Jul 22, 2025, 8:19 AM</small>
<h3>If Writing is Thinking…</h3>
<p></p>
<small>Jul 22, 2025, 8:13 AM</small>
<h3>8 Reasons Not to Embed Dashboards with iFrames</h3>
<p></p>
<small>Jul 21, 2025, 7:47 AM</small>
<h3>To be a better programmer, write little proofs in your head</h3>
<p></p>
<small>Jul 16, 2025, 7:55 AM</small>
<h3>【AI产品】从ChatGPT到Instagram再到Uber:全球最受欢迎产品背后的低调架构师_哔哩哔哩_bilibili</h3>
<p></p>
<small>Jul 15, 2025, 12:19 PM</small>
<h3>【AI创业】18个月从0到200万用户:如何打造顶尖AI数据分析工具 | Julius AI创始人Rahul Sonwalkar_哔哩哔哩_bilibili</h3>
<p></p>
<small>Jul 15, 2025, 12:18 PM</small>
<h3>Sell Yourself Well - What Soham Parekh can teach us</h3>
<p></p>
<small>Jul 15, 2025, 8:41 AM</small>
<h3>NeuralOS Demo</h3>
<p></p>
<small>Jul 15, 2025, 8:35 AM</small>
<h3>Monitoring my Homelab, Simply</h3>
<p></p>
<small>Jul 14, 2025, 6:16 AM</small>
<h3>Most people who buy your game won’t play it – How To Market A Game</h3>
<p></p>
<small>Jul 14, 2025, 5:55 AM</small>
<h3>Use the $filter query parameter to filter a collection of objects - Microsoft Graph | Microsoft Learn</h3>
<p></p>
<small>Jul 11, 2025, 8:35 AM</small>
<h3>Use the Outlook mail REST API - Microsoft Graph v1.0 | Microsoft Learn</h3>
<p></p>
<small>Jul 11, 2025, 8:21 AM</small>
<h3>Microsoft Outlook MCP Server | Microsoft Outlook Webhooks & APIs Integration</h3>
<p></p>
<small>Jul 11, 2025, 8:05 AM</small>
<h3>mcp-b - Browser Model Context Protocol</h3>
<p></p>
<small>Jul 10, 2025, 8:16 PM</small>
<h3>Hugging Face just launched a $299 robot that could disrupt the entire robotics industry | VentureBeat</h3>
<p></p>
<small>Jul 10, 2025, 6:21 PM</small>
<h3>MCP: Build Rich-Context AI Apps with Anthropic - DeepLearning.AI</h3>
<p></p>
<small>Jul 9, 2025, 7:25 PM</small>
<h3>The Dilbert Blog: The Day You Became A Better Writer</h3>
<p></p>
<small>Jul 9, 2025, 8:09 AM</small>
<h3>OpenAPI Mock Server — With AI Magic</h3>
<p></p>
<small>Jul 9, 2025, 7:50 AM</small>
<h3>We reached $1M ARR with zero funding - ProjectionLab</h3>
<p></p>
<small>Jul 9, 2025, 7:04 AM</small>
<h3>I used o3 to profile myself from my saved Pocket links | noperator</h3>
<p></p>
<small>Jul 8, 2025, 8:58 AM</small>
<h3>[2506.17298] Mercury: Ultra-Fast Language Models Based on Diffusion</h3>
<p></p>
<small>Jul 8, 2025, 7:06 AM</small>
<h3>Crypto 101</h3>
<p></p>
<small>Jul 7, 2025, 8:28 AM</small>
<h3>Why the Simplest Desktop Agent Abstraction Wins - Bytebot - The Easiest Way to Build Desktop Agents</h3>
<p></p>
<small>Jul 6, 2025, 2:10 PM</small>
<h3>Optimizing Tool Selection for LLM Workflows: Differentiable Programming with PyTorch and DSPy</h3>
<p></p>
<small>Jul 6, 2025, 8:19 AM</small>
<h3>librdx/blog/escher.md at master · gritzko/librdx</h3>
<p></p>
<small>Jul 3, 2025, 8:26 AM</small>
<h3>Jobs by Referral</h3>
<p></p>
<small>Jul 3, 2025, 7:35 AM</small>
<h3>Don't say "click here"; not everyone will be clicking - Quality Web Tips</h3>
<p></p>
<small>Jul 3, 2025, 7:29 AM</small>
<h3>Code⇄GUI bidirectional editing via LSP - james vaughan</h3>
<p></p>
<small>Jul 2, 2025, 6:18 PM</small>
<h3>AlphaGenome: AI for better understanding the genome - Google DeepMind</h3>
<p></p>
<small>Jun 27, 2025, 9:17 AM</small>
<h3>Working on databases from prison: How I got here, part 2.</h3>
<p></p>
<small>Jun 17, 2025, 5:33 PM</small>
<h3>Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task</h3>
<p></p>
<small>Jun 17, 2025, 5:31 PM</small>
<h3>MCP: Build Rich-Context AI Apps with Anthropic - DeepLearning.AI</h3>
<p></p>
<small>Jun 16, 2025, 10:42 AM</small>
<h3>Source code sandboxing</h3>
<p></p>
<small>Jun 16, 2025, 10:40 AM</small>
<h3>Google Cloud Service Health</h3>
<p></p>
<small>Jun 15, 2025, 9:49 PM</small>
<h3>Self-Host & Tech Independence: The Joy of Building Your Own | ssp.sh</h3>
<p></p>
<small>Jun 8, 2025, 10:33 AM</small>
<h3>扎克伯格花了超过1000个小时玩《文明6》 - 小红书</h3>
<p></p>
<small>May 25, 2025, 2:22 PM</small>
<h3>You’re a little company, now act like one</h3>
<p></p>
<small>May 25, 2025, 7:41 AM</small>
<h3>derekeder/csv-to-html-table: :arrow_down_small: Display any CSV (comma separated values) file as a searchable, filterable, pretty HTML table</h3>
<p></p>
<small>May 22, 2025, 11:27 PM</small>
<h3>Four years of sight reading practice – Negative Feedback</h3>
<p></p>
<small>May 22, 2025, 11:26 PM</small>
<h3>Playwright Mcp MCP Server</h3>
<p></p>
<small>May 18, 2025, 5:10 PM</small>
<h3>OpenManus: The Open Source Alternative to Manus AI</h3>
<p></p>
<small>May 14, 2025, 7:43 AM</small>
<h3>Home</h3>
<p></p>
<small>May 10, 2025, 7:58 PM</small>
<h3>Home</h3>
<p></p>
<small>May 10, 2025, 7:57 PM</small>
<h3>Introducing Supermaven, the first code completion tool with a 300,000-token context window</h3>
<p></p>
<small>May 10, 2025, 10:05 AM</small>
<h3>A Brief History of Cursor's Tab Completion - Coplay - Your Unity Copilot</h3>
<p></p>
<small>May 10, 2025, 10:03 AM</small>
<h3>婚禮遭聯盟惡意破壞,部落玩家攻陷敵方主城舉辦血色婚禮!這才是真正的魔獸世界! - YouTube</h3>
<p></p>
<small>May 10, 2025, 12:20 AM</small>
<h3>[2504.16966] Structuring Competency-Based Courses Through Skill Trees</h3>
<p></p>
<small>May 9, 2025, 11:43 PM</small>
<h3>Finnhub Stock APIs - Real-time stock prices, Company fundamentals, Estimates, and Alternative data.</h3>
<p></p>
<small>May 9, 2025, 7:39 PM</small>
<h3>Updating...</h3>
<p></p>
<small>May 9, 2025, 6:06 PM</small>
<h3>Kevin Xu's team Admin Console – Figma</h3>
<p></p>
<small>May 9, 2025, 4:26 PM</small>
<h3>From: Steve Jobs. "Great idea, thank you." | #haymanSplaining</h3>
<p></p>
<small>May 9, 2025, 11:07 AM</small>
<h3>Podfox: World's First Container-Aware Browser - Home of Val Packett</h3>
<p></p>
<small>May 9, 2025, 10:47 AM</small>
<h3>Podfox: World's First Container-Aware Browser - Home of Val Packett</h3>
<p></p>
<small>May 9, 2025, 10:33 AM</small>
<h3>How To Start A School With Your Friends - Priya Rose 🌹</h3>
<p></p>
<small>May 9, 2025, 10:12 AM</small>
<h3>How To Start A School With Your Friends - Priya Rose 🌹</h3>
<p></p>
<small>May 9, 2025, 10:08 AM</small>
<h3>How To Start A School With Your Friends - Priya Rose 🌹</h3>
<p></p>
<small>May 9, 2025, 9:59 AM</small>
<h3>Nobody Codes Here Anymore - Alex Ghiculescu's Newsletter</h3>
<p></p>
<small>May 9, 2025, 9:49 AM</small>
<h3>Darij Grinberg: Mathematical Problem Solving (Math 235), Fall 2020</h3>
<p></p>
<small>May 9, 2025, 9:24 AM</small>
<h3>voideditor/void</h3>
<p></p>
<small>May 9, 2025, 9:24 AM</small>
Export for Analytics
// Export all readings
const readings = JSON.parse(localStorage.getItem('dailyReadings'));
console.table(readings);
🔄 Backup and Migration
Export Data
- Click “Export All” button
- Save the JSON file
- Store in multiple locations
Import Data
- Click “📥 Import JSON”
- Select your backup file
- Choose merge or replace option
GitHub Backup
Your data is automatically backed up to GitHub with:
- Full version history
- Commit messages for each change
- Branch protection options
🚀 Advanced Tips
1. Automation Ideas
- IFTTT Integration: Auto-save from RSS feeds
- Zapier Workflows: Connect to other tools
- Browser Extensions: Enhanced bookmarklet features
2. Workflow Optimization
- Reading Sessions: Batch process saves
- Weekly Reviews: Clean up and organize
- Monthly Exports: Regular backups
🔒 Security and Privacy
Data Protection
- Tokens stored locally in browser
- No server-side storage
- Direct GitHub API communication
Privacy Settings
- Repository can be private
- Control access with GitHub permissions
- Regular token rotation recommended
🎯 Next Steps
- Set up the system following this guide
- Install the bookmarklet on all your devices
- Start saving articles and build your reading archive
- Customize the system to match your workflow
- Share your setup with others who might benefit
Comments