Skip to main content

MANOLO Scrap

Tell it what you want. It finds, downloads, reads and files it.

Type scrap, write "today I want to scrape Form 2 computer studies exams with marking schemes", and MANOLO Scrap plans the job with AI, searches the web, crawls the result pages, downloads every PDF / Google Drive / Scribd document in parallel, extracts the text (OCR for scanned pages), and writes a report — all filed in one tidy project folder.

By festomanolo · MIT License


Install

pip install nolo-scrap            # installs the nolo-scrap command
nolo-scrap --help         # every command
nolo-scrap                # opens the TUI

# latest from source:
pip install "https://github.com/festomanolo/scrap-master/archive/main.zip[all]"
scrap            # opens the TUI

Development:

git clone https://github.com/festomanolo/scrap-master.git && cd scrap-master
pip install -e ".[all,dev]" && pytest

The TUI (scrap)

Screen What it does
🧠 Ask AI Describe the data you want in plain words. The AI plans searches, then MANOLO Scrap collects everything and writes report.md.
🛠 Tools Harvest a site · Download URLs · Scribd → Markdown · Read PDF (OCR) · Read any page · Web search
📄 File viewer Browse the workspace tree, render Markdown, view/edit text files
⚙ Settings AI provider (Ollama / OpenRouter), models, API key, favourite sites, workspace folder
🩺 Health check Which channels are ready on this machine

Keys: ctrl+a Ask AI · ctrl+t Tools · ctrl+s Settings · n new folder · f new file · r rename · del delete · o open in Finder · ctrl+e edit/save · ctrl+r refresh · ctrl+q quit

Scrape only what you need

scrap-master ask "form 4 chemistry past papers, pdfs only"          # AI job, PDFs only
scrap-master ask "TCP/IP lecture decks" --only slides                # force a type
scrap-master harvest https://site/library --only docs,sheets --organize
scrap-master download URL… --only pdf --organize                     # skip everything else
scrap-master organize ~/Downloads                                    # sort a folder by type
scrap-master types                                                   # list presets

Presets: pdf docs slides sheets ebooks images audio video archives code data, groups office media documents all, or any raw extension (--only .djvu). Scribd and Google Drive are only crawled when a document type is selected.

Benchmark

scrap-master bench serves a mixed batch from a local, bandwidth-capped server and races MANOLO Scrap against a plain Python loop, curl, curl -Z, wget and aria2c (whichever are installed). Plain tools get a hand-filtered list; Scrap gets the full mixed list and must pick the right types itself. Score = 60% speed · 20% filtering · 10% folders · 10% integrity.

#  Tool                      Time  ×naive   Files  Filter  Folders  Score
1  MANOLO Scrap             0.23s   17.4×     8/8       ✔        ✔    100
2  curl -Z (parallel)       1.09s    3.6×     8/8       ✘        ✘     23
3  python loop (naive)      3.98s    1.0×     8/8       ✘        ✘     13

Where results go

~/MANOLO-Scrap/
├── projects/
│   └── 2026-10-16_form-2-computer-exams/
│       ├── pdfs/        downloaded PDFs & files
│       ├── markdown/    text extracted from PDFs (incl. OCR)
│       ├── scribd/      Scribd documents as Markdown
│       ├── pages/       every crawled web page as Markdown
│       ├── data/        plan.json, search_results.json, harvest_manifest.json
│       └── report.md    AI summary of what was collected
├── inbox/               one-off downloads from Tools
└── logs/

Change the location in Settings.

AI: Ollama or OpenRouter

  • Ollama (free, local): install Ollama, ollama pull llama3.1, pick it in Settings.
  • OpenRouter (cloud): paste your key in Settings, or scrap-master configure openrouter-key.

With no AI available it still works: it uses a keyword plan and lists what it found instead of writing an AI summary.

Command line (scrap-master)

scrap-master harvest https://msomibora.com/ --depth 1 --extract -d out/   # crawl → download → extract
scrap-master download URL [URL…] --verify-pdf                             # parallel, Range-chunked
scrap-master scribd https://www.scribd.com/document/<id> -o doc.md
scrap-master read-pdf exam.pdf -o exam.md                                 # PyMuPDF + OCR
scrap-master doctor                                                       # channel health

What it can read

Web pages (with anti-bot fallbacks: direct HTML → Chrome-fingerprint TLS → headless browser), PDFs (digital + scanned), Scribd, Google Drive / Docs, YouTube, GitHub, RSS, Twitter/X, Reddit, Facebook, Instagram, LinkedIn.

Platform setup notes

  • Twitter/X: cookies saved with scrap-master configure twitter-cookies are only used by doctor. Before calling twitter directly, set TWITTER_AUTH_TOKEN and TWITTER_CT0 in that process's environment.
  • LinkedIn: full profiles/jobs need the mcp-server-linkedin MCP server (see scrap-master doctor).

Made by

festomanolo · github.com/festomanolo · festomanolo.com

License

MIT © festomanolo

Metadata

Release files for nolo-scrap 1.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nolo-scrap 1.5.2
File Size Uploaded
nolo_scrap-1.5.2.tar.gz 162.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nolo-scrap 1.5.2
File Interpreter ABI Platform
nolo_scrap-1.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 287.7 kB

Release files / nolo_scrap-1.5.2.tar.gz

Download URL nolo_scrap-1.5.2.tar.gz
Size 162.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1c007281a4253536207736c4ab58ecce9a213e30184cb60c00e30dd63be95211
BLAKE2b-256 checksum
How to use checksums
847774ad2d0d6d01d655f470a0ded1bd4505d829570b03ad5e16ff477504be09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release files / nolo_scrap-1.5.2-py3-none-any.whl

Download URL nolo_scrap-1.5.2-py3-none-any.whl
Size 124.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c46cdda3ef46304622c9c92c6f33f463493dc43401949598c6d48231e7225e5
BLAKE2b-256 checksum
How to use checksums
e67bdbcd0cc4809ce449338ceae486260b5a7973107580008e2909ebb4aa01b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

1.5.2 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page