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.0

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.0
File Size Uploaded
nolo_scrap-1.5.0.tar.gz 162.7 kB Details

Built distribution (wheel)

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

Total release size: 287.5 kB

Release files / nolo_scrap-1.5.0.tar.gz

Download URL nolo_scrap-1.5.0.tar.gz
Size 162.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a4264833f1d42be09901e5189c8feb41716ee7dd55c2e291c4dbdc454de7179b
BLAKE2b-256 checksum
How to use checksums
bd19047725ffc794d44b1a18b4ca6b6982fb33e1df82fbd6435cd266aa07e6d3
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.0-py3-none-any.whl

Download URL nolo_scrap-1.5.0-py3-none-any.whl
Size 124.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6d5c1dc40c35745b65cc43f53a8797d2c956c231e03f6d4ddc1d0ce42e2c068
BLAKE2b-256 checksum
How to use checksums
fbb3d02061e5d1060f303d26b694be9080704775aa8dfcbcc4112eae4ebbac6f
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

1.5.2

2 release files

1.5.1

2 release files

This release

1.5.0 This release

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