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

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

Built distribution (wheel)

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

Total release size: 287.5 kB

Release files / nolo_scrap-1.5.1.tar.gz

Download URL nolo_scrap-1.5.1.tar.gz
Size 162.7 kB
Tags Source
SHA-256 checksum
How to use checksums
36acca0c8c67f46c5cfb6568c621fd16f426e2fee4507dfa1718ee63a9806d20
BLAKE2b-256 checksum
How to use checksums
aff9aede43bfa791eb57f891e73006c0181f87531a5583cb3368cb02998a3972
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.1-py3-none-any.whl

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

This release

1.5.1 This release

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