Fresh
A CLI tool to fetch the latest documentation from any website in Markdown format.
Requirements
- Python 3.12+
- uv (recommended) or pip
Installation
# Using uv (recommended)
uv sync
# Or using pip
pip install -e .
Quick Start
# List all documentation pages on a website
fresh list https://docs.python.org/3/
# Fetch a documentation page and convert to Markdown
fresh get https://docs.python.org/3/tutorial/
# Search for content across documentation pages
fresh search "virtual environment" https://docs.python.org/3/
# Download entire documentation for offline use
fresh sync https://docs.python.org/3/
# Add an alias for quick access
fresh alias add python https://docs.python.org/3/
fresh list python
Commands
fresh list
List all documentation pages available on a website.
fresh list <URL> [OPTIONS]
Options:
-v, --verbose- Use rich output format-p, --pattern TEXT- Filter paths matching pattern-d, --depth INTEGER- Maximum crawl depth (default: 3)--max-pages INTEGER- Maximum number of pages to discover (default: 100)--sort TEXT- Sort results by name or path-f, --format TEXT- Output format: json, yaml, xml-c, --count- Show only total count
fresh get
Fetch a documentation page and convert it to Markdown.
fresh get <URL> [OPTIONS]
Options:
-v, --verbose- Use verbose output-t, --timeout INTEGER- Request timeout in seconds (default: 30)--header TEXT- Custom HTTP header--no-follow- Do not follow redirects--skip-scripts- Exclude JavaScript from output--no-cache- Bypass cache-o, --output TEXT- Write output to file-r, --retry INTEGER- Number of retry attempts (default: 3)--dry-run- Show what would be fetched without downloading
fresh search
Search for content across documentation pages.
fresh search <QUERY> <URL> [OPTIONS]
fresh websearch
Search the general web for any topic.
# Basic search (uses DuckDuckGo HTML, free)
fresh websearch "python async tutorial"
# With specific number of results
fresh websearch "react hooks" --count 5
# Table output for human-readable display
fresh websearch "rust ownership" --table
Options:
-n, --count INTEGER- Maximum number of results (default: 10)-e, --engine TEXT- Search engine: auto, ddg, brave (default: auto)-j, --json- Output as JSON (default)-t, --table- Output as table-v, --verbose- Show verbose output
Note: Brave Search API can be used by setting the BRAVE_API_KEY environment variable. DuckDuckGo is used by default (free, no API key required).
fresh alias
Manage library aliases for quick access.
# Add an alias
fresh alias add <name> <url>
# List all aliases
fresh alias list
# Search aliases
fresh alias search <query>
fresh sync
Download entire documentation for offline use.
fresh sync <URL> [OPTIONS]
Options:
-o, --output-dir PATH- Target directory for synced docs-v, --verbose- Use verbose output--max-pages INTEGER- Maximum number of pages to sync (default: 100)-d, --depth INTEGER- Maximum crawl depth (default: 3)-f, --force- Force re-sync (delete existing files first)-p, --pattern TEXT- Filter paths matching pattern
fresh guide
Manage personal guides and documentation.
# Create a new guide
fresh guide create my-guide --content "Guide content here" --title "My Guide"
# List all guides
fresh guide list
# Show a specific guide
fresh guide show my-guide
# Search across guides
fresh guide search "keyword"
Configuration
Fresh stores its configuration in the following locations:
- Aliases:
~/.fresh/aliases.json - Cache:
~/.fresh/cache/ - Sync data:
~/.fresh/docs/ - History:
~/.fresh/history.db
Development
# Install dev dependencies
uv sync --extra dev
# Run linter
ruff check .
# Run type checker
mypy src/
# Run tests
pytest
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Author
- Nesalia Inc.
Security
If you discover any security vulnerabilities, please send an e-mail to support@nesalia.com.
License
MIT License - see the LICENSE file for details.
Metadata
Release files for fresh-docs 2.8.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fresh_docs-2.8.4.tar.gz | 261.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fresh_docs-2.8.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 336.5 kB
Release files / fresh_docs-2.8.4.tar.gz
| Download URL | fresh_docs-2.8.4.tar.gz |
|---|---|
| Size | 261.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f3708e7a666ba2e249d4fd702bc2d2e2f5ca18f40b0bc11199d7550428c5443e
|
|
BLAKE2b-256 checksum How to use checksums |
87e00a2eabc4013987f0a2f6ff3b175bba102330285ddefddb6bd31d086bd0ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / fresh_docs-2.8.4-py3-none-any.whl
| Download URL | fresh_docs-2.8.4-py3-none-any.whl |
|---|---|
| Size | 74.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da704a6fd138aa742b3638542f52e02c9643265b9447fca2718f315287c1a1f9
|
|
BLAKE2b-256 checksum How to use checksums |
24580614e6fec4f097e4d87b415d65d7350e0fdf80dc887da9c4503a2f67b43a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|