Slice documents into focused, AI-ready segments directly from a Chrome side panel.
FeedDoc is a browser extension for turning long PDFs, PowerPoint decks, and Word documents into smaller files that are easier to attach to AI chats. Pick the exact page or slide ranges you need, generate one or many clean segments, and feed them into ChatGPT, Claude, Grok, or T3 Chat without leaving the conversation.
FeedDocLaunch.mp4
AI chat file uploads are most useful when the attachment is focused. Full documents often include pages, slides, appendices, or sections that are irrelevant to the prompt. FeedDoc keeps the workflow simple:
- Open the side panel while you are on a supported AI chat.
- Drop in a PDF, PPTX, or DOCX file.
- Define one or more page/slide ranges.
- Slice the document locally in the browser.
- Feed the resulting segments into the active chat or download them for later.
The result is a lightweight document-prep layer between your source files and your AI assistant.
- PDF — detects total page count with PDF.js and creates focused PDF outputs with pdf-lib.
- PPTX — reads the Office Open XML package with JSZip, keeps selected slides, updates presentation relationships, and rewrites the deck package.
- DOCX — estimates page boundaries from WordprocessingML page-break markers and generates a smaller DOCX from the selected range.
FeedDoc is built for more than a single crop. You can create up to ten named segments from one source file, validate ranges before slicing, prevent overlapping ranges, and export every segment individually or together.
The extension detects the current tab and exposes platform-specific feed actions for:
- ChatGPT
- Claude
- Grok
- T3 Chat
Under the hood, the content script attaches generated files through the page's file input when available and falls back to drag-and-drop style events when needed.
Document slicing runs in the browser side panel. Files are read as browser ArrayBuffer data, sliced client-side, and only leave the browser when you explicitly feed/download/save them.
FeedDoc can optionally connect to Supabase Storage to keep a personal library of useful originals and generated segments. Saved files can be renamed, downloaded, made permanent, deleted, or fed back into a supported AI chat from the library view.
For smaller files, the side panel sends generated file bytes directly through extension messaging. For larger payloads, FeedDoc stages the file in Chrome session storage before asking the content script to attach it, avoiding message-size issues.
The interface uses a compact dark shell with neon green accents, monospaced typography, scanline texture, animated progress states, status badges, and platform-colored feed buttons designed for quick use beside an AI conversation.
| Source file | Range unit | Output | Notes |
|---|---|---|---|
.pdf |
Pages | .pdf |
Precise page slicing with pdf-lib. |
.pptx |
Slides | .pptx |
Keeps selected slides and rewrites slide/package relationships. |
.docx |
Estimated pages | .docx |
Uses explicit/rendered page-break markers where present. |
FeedDoc enforces a 512 MB source-file limit and warns on files above 100 MB so the user can decide whether to continue.
| Platform | Domain detection | Feed label |
|---|---|---|
| ChatGPT | chatgpt.com |
Feed to ChatGPT |
| Claude | claude.ai |
Feed to Claude |
| Grok | grok.com, x.ai |
Feed to Grok |
| T3 Chat | t3.chat |
Feed to T3 Chat |
Platform detection controls the active feed button and helps FeedDoc use the right selectors for the current chat UI.
Chrome toolbar click
│
▼
Manifest V3 side panel
│
├── React UI: upload, segment picker, results, settings, library
│
├── Format slicers
│ ├── PDF: PDF.js + pdf-lib
│ ├── PPTX: JSZip + Office Open XML relationship updates
│ └── DOCX: JSZip + WordprocessingML page-break markers
│
├── Storage layer
│ ├── chrome.storage.local for settings and library metadata
│ ├── chrome.storage.session for large in-flight attachments
│ └── optional Supabase Storage for saved files
│
└── Extension messaging
└── content script attaches generated files to AI chat pages
sidepanel/src/App.jsxcoordinates the upload → range selection → slicing → feed/download/save flow.sidepanel/src/components/*contains the focused UI pieces for uploads, segment editing, result actions, settings, and the saved-file library.sidepanel/src/slicers/*contains the document-format-specific slicing logic.sidepanel/src/utils/platformConfig.jsdefines supported AI platforms, MIME types, file limits, and platform detection.sidepanel/src/utils/storage.jswraps Chrome local storage for settings and file metadata.sidepanel/src/utils/supabase.jshandles optional Supabase Storage upload, delete, and fetch operations.content.jsreceives generated files from the extension and attaches them to the current AI chat page.background.jsopens the side panel and forwards active-tab URL changes to keep platform detection current.
| Layer | Technology | Purpose |
|---|---|---|
| Extension shell | Chrome Extension Manifest V3 | Side panel, tab awareness, extension messaging, storage permissions. |
| UI | React 18 | Interactive side-panel workflow and reusable controls. |
| Build system | Vite 6 | Bundles the side panel and copies extension assets into dist/. |
| PDF handling | PDF.js, pdf-lib | Page-count detection and PDF page extraction. |
| Office file handling | JSZip | Reads and rewrites .pptx/.docx ZIP package contents. |
| DOCX support | Mammoth dependency + WordprocessingML parsing | Supports Word-document handling in the extension stack. |
| Persistence | Chrome Storage | Saves extension settings and local library metadata. |
| Optional cloud storage | Supabase Storage REST API | Uploads, deletes, fetches, and serves saved originals/segments. |
| Styling | CSS custom properties | Neon dark theme, responsive side-panel layout, animations, and status states. |
FeedDoc is designed as a local-first utility:
- Files are processed in the browser extension side panel.
- Generated segments are not uploaded anywhere unless you use a feed action or enable/save to cloud storage.
- Library metadata is stored in Chrome local storage.
- Optional Supabase storage is user-configured and only used when storage features are enabled.
This repository includes the extension source and a generated dist/ build. The primary scripts are intentionally small:
pnpm install
pnpm buildThe build copies the Manifest V3 files, background/content scripts, icons, side-panel bundle, and PDF.js worker into dist/.
FeedDoc is released under the MIT License.