AI-powered browsing activity logger and summarizer that helps you remember and organize what you learn online.
Auto-Journal is an AI-powered browser extension that passively logs your browsing activity, summarizes content using Gemini 2.0 Flash Lite, and organizes it into a searchable personal knowledge journal. It helps knowledge workers track what they've read, reflect on it, and extract key insights from their daily web browsing.
Visit our website: https://chirag127.github.io/Auto-Journal-Browser-Extension
- Auto-Logging: Automatically logs page visits, titles, and timestamps
- AI Summarization: Uses Gemini 2.0 Flash Lite to summarize visited pages
- Highlight & Save: Save selected text as thoughts or snippets with AI-generated notes
- Journal View: Searchable daily journal of browsing activity
- Tags & Categorization: Auto-tags pages and supports manual categorization
- Privacy Controls: Private by default with domain blacklisting and pause functionality
- Frontend: Browser Extension (Manifest V3) with HTML, CSS, and Vanilla JS
- Backend: Express.js server with MongoDB for storage
- AI: Gemini 2.0 Flash Lite API for content summarization
- Tools: Node.js, npm, Git
Auto-Journal-Browser-Extension/
βββ extension/ # Browser extension source
β βββ manifest.json # Extension configuration
β βββ background.js # Background script for tracking and API communication
β βββ content.js # Content script for page data extraction and highlighting
β βββ popup.html # HTML structure for the popup UI
β βββ popup.js # JavaScript for popup functionality
β βββ styles.css # CSS for styling the popup and highlights
β βββ icons/ # Extension icons
β βββ utils/ # Utility functions
β β βββ storage.js # Storage utility
β β βββ api.js # API communication utility
β β βββ dom.js # DOM manipulation utility
β βββ components/ # UI components
βββ backend/ # Node.js backend
β βββ server.js # Main Express.js server
β βββ config/ # Configuration files
β β βββ db.js # MongoDB connection
β β βββ gemini.js # Gemini API configuration
β βββ routes/ # API routes
β β βββ logRoutes.js # Routes for logging browsing data
β β βββ summaryRoutes.js # Routes for AI summarization
β β βββ journalRoutes.js # Routes for journal retrieval
β β βββ tagRoutes.js # Routes for tag management
β βββ controllers/ # Route controllers
β β βββ logController.js # Controller for logging functionality
β β βββ summaryController.js # Controller for summarization
β β βββ journalController.js # Controller for journal management
β β βββ tagController.js # Controller for tag management
β βββ models/ # MongoDB schemas
β β βββ journalEntry.js # Schema for journal entries
β β βββ tag.js # Schema for tags and categories
β β βββ user.js # Schema for user data (future)
β βββ utils/ # Utility functions
β β βββ tagging.js # Tag management utilities
β β βββ textProcessing.js # Text processing utilities
β βββ middleware/ # Express middleware
β βββ errorHandler.js # Error handling middleware
βββ .env.example # Example environment variables
βββ README.md # Project documentation
- Clone this repository
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the
extensionfolder
- Navigate to the
backendfolder - Run
npm installto install dependencies - Create a
.envfile based on.env.example - Run
npm startto start the server
- Browse Normally: Auto-Journal works in the background, automatically logging pages you visit and generating summaries.
- Highlight Text: Select any text on a webpage, right-click, and choose "Save to Auto-Journal" to save it as a highlight.
- View Your Journal: Click the Auto-Journal icon in your browser toolbar to open the popup and view your journal entries.
- Search and Filter: Use the search bar and filters to find specific entries by keyword, tag, or date.
- Manage Privacy: Use the settings tab to blacklist domains, toggle logging, or manage your data.
Coming soon
- Node.js and npm
- MongoDB (local or Atlas)
- Gemini API key
- Clone the repository
- Install backend dependencies:
cd backend && npm install - Configure environment variables in
.env - Start the development server:
npm run dev
POST /api/log- Log a page visitGET /api/log/stats- Get logging statistics
POST /api/summarize- Summarize page contentPOST /api/summarize/highlight- Summarize highlighted text
GET /api/journal- Get all journal entriesGET /api/journal/search- Search journal entriesGET /api/journal/:url- Get a specific journal entry by URLDELETE /api/journal/:url- Delete a journal entryPOST /api/journal/highlight- Add a highlight to a journal entry
GET /api/tags- Get all tagsPATCH /api/tags/:url- Update tags for a journal entryGET /api/tags/categories- Get all tag categories
{
userId: String, // For future multi-user support
url: String,
title: String,
favicon: String, // Store favicon URL for visual identification
visitTime: Date,
content: {
text: String, // First 500-1000 words of content
summary: String, // AI-generated summary
},
highlights: [{
text: String,
note: String, // AI-generated note or user note
timestamp: Date
}],
tags: [String],
category: String,
domain: String, // Extracted from URL for filtering
isPrivate: Boolean // Flag for privacy control
}- GPT-style chatbot that can answer "What did I read last week about AI?"
- Auto-export to GitHub
- Mood/tone detection of content consumed
- Graph view of reading connections (Γ la Roam/Obsidian)
- OAuth2 login support for syncing across devices
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please read CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.