A browser extension that allows you to archive works from Archive of Our Own (AO3) directly to a Google Sheet. This project was inspired by AO3 Enhancements and AO3: Kudosed and seen history.
The thought behind all of this was “What if I could, instead of using cache or local storage, just have a Google Sheet that tracks all the works I’ve read or want to read?” This way, I can access my archive from anywhere and have a more permanent record. I am aware that I am basically using Google Sheets as a backend, but it’s free, and I don’t have to host it.
Features
- Archive Works: Save details of AO3 works (Title, Author, Tags, Word Count, etc.) to a Google Sheet with a single click.
- Sync Status: Automatically checks your Google Sheet to show which works you’ve already archived or read directly on AO3 browsing pages.
- Mobile Support: Designed to work on mobile browsers that support extensions (don’t ask which one I’m using).
- Modern Stack: Built using WXT, React, TypeScript, and Sass.
Demo
Building from Source
If you really want to try and build this, I think this version works?
Restrictions
- This extenstion currently only works in Google Chrome on desktop. This was originally designed to work with Kiwi Browser on Android, but Kiwi is no longer actively maintained.
- Work is in progress to get this working for both Edge and Firefox. Microsoft Edge Canary should theoretically work, but there is no documentation on how to close their stupid proprietary popup for extensions. Anyway. The current OAuth method uses
chrome.identityAPI, which is only supported in Chromium-based browsers.
Prerequisites
Before you can build or run this extension, you need:
- Node.js (Latest LTS recommended)
- Google Cloud Project: You need to set up a project in the Google Cloud Console to enable the Google Sheets API and obtain OAuth 2.0 credentials.
Google Cloud Setup
- Go to the Google Cloud Console.
- Create a new project.
- Enable the Google Sheets API.
- Configure the OAuth Consent Screen (External user type is usually fine for personal use, but you may need to add yourself as a test user).
- Create OAuth 2.0 Client IDs:
- Application type: Web application (for development/testing) or Chrome Extension (for production).
- Authorized redirect URIs: You will need the redirect URI generated by WXT/Chrome.
Installation & Development
Clone the repository
git clone https://github.com/shaineoneal/archive-of-our-own-archiver.git cd archive-of-our-own-archiverInstall dependencies
npm installEnvironment Configuration Create a .env\ file in the root directory with your Google OAuth credentials:
WXT_API_CLIENT_ID=your_client_id WXT_API_CLIENT_SECRET=your_client_secret WXT_API_REDIRECT_URI=your_redirect_uriRun in Development Mode This will open a Chrome instance with the extension loaded.
For Chrome:
npm run devBuild for Production
npm run buildThe output will be in the .output\ directory.
Usage
- Click the extension icon in your browser toolbar.
- Log in with your Google Account.
- Navigate to Archive of Our Own.
- You will see new controls next to works in lists, allowing you to add them to your spreadsheet.
Tech Stack
- WXT - Web Extension Framework
- React - UI Library
- TypeScript - Type Safety
- Sass - Styling
- Zustand - State Management
License
MIT
Disclaimer
This project is not affiliated with the Organization for Transformative Works (OTW) or Archive of Our Own (AO3).
CautionThere are several issues/bugs with this version and it is not considered secure by Chrome standards. Use at your own risk.