Skip to main content

CLI to get the latest and freshest documentation from any website in Markdown format

Project description

Fresh Logo

Fresh

PyPI Version PyPI Downloads Tests Coverage License Monthly Downloads

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fresh_docs-2.8.4.tar.gz (261.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fresh_docs-2.8.4-py3-none-any.whl (74.6 kB view details)

Uploaded Python 3

File details

Details for the file fresh_docs-2.8.4.tar.gz.

File metadata

  • Download URL: fresh_docs-2.8.4.tar.gz
  • Upload date:
  • Size: 261.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for fresh_docs-2.8.4.tar.gz
Algorithm Hash digest
SHA256 f3708e7a666ba2e249d4fd702bc2d2e2f5ca18f40b0bc11199d7550428c5443e
MD5 51eba2f950093a8ae1010fc841185e13
BLAKE2b-256 87e00a2eabc4013987f0a2f6ff3b175bba102330285ddefddb6bd31d086bd0ce

See more details on using hashes here.

File details

Details for the file fresh_docs-2.8.4-py3-none-any.whl.

File metadata

  • Download URL: fresh_docs-2.8.4-py3-none-any.whl
  • Upload date:
  • Size: 74.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for fresh_docs-2.8.4-py3-none-any.whl
Algorithm Hash digest
SHA256 da704a6fd138aa742b3638542f52e02c9643265b9447fca2718f315287c1a1f9
MD5 436b3f0b92191663c72326effca822a9
BLAKE2b-256 24580614e6fec4f097e4d87b415d65d7350e0fdf80dc887da9c4503a2f67b43a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page