Showing preview only (3,090K chars total). Download the full file or copy to clipboard to get everything.
Repository: ScrapeGraphAI/Scrapegraph-ai
Branch: main
Commit: cf9b87e942be
Files: 361
Total size: 2.9 MB
Directory structure:
gitextract_4wh_v0jg/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── custom.md
│ │ └── feature_request.md
│ └── workflows/
│ ├── code-quality.yml
│ ├── codeql.yml
│ ├── dependency-review.yml
│ ├── release.yml
│ └── test-suite.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .readthedocs.yaml
├── .releaserc.yml
├── .semantic-commits-applied
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── PullRequests/
│ └── PR_1027_reviews.md
├── README.md
├── SECURITY.md
├── SEMANTIC_COMMITS.md
├── TESTING_INFRASTRUCTURE.md
├── citation.cff
├── codebeaver.yml
├── docker-compose.yml
├── docs/
│ ├── Makefile
│ ├── assets/
│ │ └── project_overview_diagram.fig
│ ├── chinese.md
│ ├── japanese.md
│ ├── korean.md
│ ├── make.bat
│ ├── portuguese.md
│ ├── requirements-dev.txt
│ ├── requirements.txt
│ ├── russian.md
│ ├── source/
│ │ ├── conf.py
│ │ ├── getting_started/
│ │ │ ├── examples.rst
│ │ │ └── installation.rst
│ │ ├── index.rst
│ │ ├── introduction/
│ │ │ ├── contributing.rst
│ │ │ └── overview.rst
│ │ ├── modules/
│ │ │ ├── modules.rst
│ │ │ ├── scrapegraphai.builders.rst
│ │ │ ├── scrapegraphai.docloaders.rst
│ │ │ ├── scrapegraphai.graphs.rst
│ │ │ ├── scrapegraphai.helpers.models_tokens.rst
│ │ │ ├── scrapegraphai.helpers.rst
│ │ │ ├── scrapegraphai.integrations.rst
│ │ │ ├── scrapegraphai.models.rst
│ │ │ ├── scrapegraphai.nodes.rst
│ │ │ ├── scrapegraphai.rst
│ │ │ └── scrapegraphai.utils.rst
│ │ └── scrapers/
│ │ ├── graph_config.rst
│ │ ├── graphs.rst
│ │ ├── llm.rst
│ │ ├── telemetry.rst
│ │ └── types.rst
│ ├── timeout_configuration.md
│ └── turkish.md
├── examples/
│ ├── ScrapegraphAI_cookbook.ipynb
│ ├── code_generator_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ └── code_generator_graph_ollama.py
│ │ └── openai/
│ │ └── code_generator_graph_openai.py
│ ├── csv_scraper_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── csv_scraper_graph_multi_ollama.py
│ │ │ ├── csv_scraper_ollama.py
│ │ │ └── inputs/
│ │ │ └── username.csv
│ │ └── openai/
│ │ ├── csv_scraper_graph_multi_openai.py
│ │ ├── csv_scraper_openai.py
│ │ └── inputs/
│ │ └── username.csv
│ ├── custom_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ └── custom_graph_ollama.py
│ │ └── openai/
│ │ └── custom_graph_openai.py
│ ├── depth_search_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ └── depth_search_graph_ollama.py
│ │ └── openai/
│ │ └── depth_search_graph_openai.py
│ ├── document_scraper_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── document_scraper_ollama.py
│ │ │ └── inputs/
│ │ │ └── plain_html_example.txt
│ │ └── openai/
│ │ ├── document_scraper_openai.py
│ │ └── inputs/
│ │ ├── markdown_example.md
│ │ └── plain_html_example.txt
│ ├── extras/
│ │ ├── authenticated_playwright.py
│ │ ├── browser_base_integration.py
│ │ ├── chromium_selenium.py
│ │ ├── cond_smartscraper_usage.py
│ │ ├── conditional_usage.py
│ │ ├── custom_prompt.py
│ │ ├── example.yml
│ │ ├── force_mode.py
│ │ ├── html_mode.py
│ │ ├── load_yml.py
│ │ ├── no_cut.py
│ │ ├── proxy_rotation.py
│ │ ├── rag_caching.py
│ │ ├── reasoning.py
│ │ ├── scrape_do.py
│ │ ├── screenshot_scaping.py
│ │ ├── serch_graph_scehma.py
│ │ ├── slow_mo.py
│ │ └── undected_playwright.py
│ ├── json_scraper_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── inputs/
│ │ │ │ └── example.json
│ │ │ ├── json_scraper_multi_ollama.py
│ │ │ └── json_scraper_ollama.py
│ │ └── openai/
│ │ ├── inputs/
│ │ │ └── example.json
│ │ ├── json_scraper_multi_openai.py
│ │ ├── json_scraper_openai.py
│ │ ├── md_scraper_openai.py
│ │ └── omni_scraper_openai.py
│ ├── markdownify/
│ │ ├── markdownify_scrapegraphai.py
│ │ └── readme.md
│ ├── omni_scraper_graph/
│ │ ├── README.md
│ │ └── omni_search_openai.py
│ ├── readme.md
│ ├── script_generator_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── script_generator_ollama.py
│ │ │ └── script_multi_generator_ollama.py
│ │ └── openai/
│ │ ├── script_generator_multi_openai.py
│ │ ├── script_generator_openai.py
│ │ └── script_generator_schema_openai.py
│ ├── search_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── search_graph_ollama.py
│ │ │ └── search_graph_schema_ollama.py
│ │ ├── openai/
│ │ │ ├── search_graph_openai.py
│ │ │ ├── search_graph_schema_openai.py
│ │ │ └── search_link_graph_openai.py
│ │ └── scrapegraphai/
│ │ ├── readme.md
│ │ └── searchscraper_scrapegraphai.py
│ ├── smart_scraper_graph/
│ │ ├── nvidia/
│ │ │ └── smart_scraper_nvidia.py
│ │ ├── ollama/
│ │ │ ├── smart_scraper_lite_ollama.py
│ │ │ ├── smart_scraper_multi_concat_ollama.py
│ │ │ ├── smart_scraper_multi_lite_ollama.py
│ │ │ ├── smart_scraper_multi_ollama.py
│ │ │ ├── smart_scraper_ollama.py
│ │ │ └── smart_scraper_schema_ollama.py
│ │ ├── openai/
│ │ │ ├── smart_scraper_lite_openai.py
│ │ │ ├── smart_scraper_multi_concat_openai.py
│ │ │ ├── smart_scraper_multi_lite_openai.py
│ │ │ ├── smart_scraper_multi_openai.py
│ │ │ ├── smart_scraper_openai.py
│ │ │ └── smart_scraper_schema_openai.py
│ │ └── scrapegraphai/
│ │ ├── readme.md
│ │ └── smartscraper_scrapegraphai.py
│ ├── speech_graph/
│ │ ├── README.md
│ │ └── speech_graph_openai.py
│ └── xml_scraper_graph/
│ ├── README.md
│ ├── ollama/
│ │ ├── inputs/
│ │ │ └── books.xml
│ │ ├── xml_scraper_graph_multi_ollama.py
│ │ └── xml_scraper_ollama.py
│ └── openai/
│ ├── inputs/
│ │ └── books.xml
│ ├── xml_scraper_graph_multi_openai.py
│ └── xml_scraper_openai.py
├── pyproject.toml
├── pytest.ini
├── readthedocs.yml
├── requirements-dev.txt
├── requirements.txt
├── scrapegraphai/
│ ├── __init__.py
│ ├── builders/
│ │ ├── __init__.py
│ │ └── graph_builder.py
│ ├── docloaders/
│ │ ├── __init__.py
│ │ ├── browser_base.py
│ │ ├── chromium.py
│ │ └── scrape_do.py
│ ├── graphs/
│ │ ├── __init__.py
│ │ ├── abstract_graph.py
│ │ ├── base_graph.py
│ │ ├── code_generator_graph.py
│ │ ├── csv_scraper_graph.py
│ │ ├── csv_scraper_multi_graph.py
│ │ ├── depth_search_graph.py
│ │ ├── document_scraper_graph.py
│ │ ├── document_scraper_multi_graph.py
│ │ ├── json_scraper_graph.py
│ │ ├── json_scraper_multi_graph.py
│ │ ├── markdownify_graph.py
│ │ ├── omni_scraper_graph.py
│ │ ├── omni_search_graph.py
│ │ ├── screenshot_scraper_graph.py
│ │ ├── script_creator_graph.py
│ │ ├── script_creator_multi_graph.py
│ │ ├── search_graph.py
│ │ ├── search_link_graph.py
│ │ ├── smart_scraper_graph.py
│ │ ├── smart_scraper_lite_graph.py
│ │ ├── smart_scraper_multi_concat_graph.py
│ │ ├── smart_scraper_multi_graph.py
│ │ ├── smart_scraper_multi_lite_graph.py
│ │ ├── speech_graph.py
│ │ ├── xml_scraper_graph.py
│ │ └── xml_scraper_multi_graph.py
│ ├── helpers/
│ │ ├── __init__.py
│ │ ├── default_filters.py
│ │ ├── models_tokens.py
│ │ ├── nodes_metadata.py
│ │ ├── robots.py
│ │ └── schemas.py
│ ├── integrations/
│ │ ├── __init__.py
│ │ ├── burr_bridge.py
│ │ └── indexify_node.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── clod.py
│ │ ├── deepseek.py
│ │ ├── minimax.py
│ │ ├── nvidia.py
│ │ ├── oneapi.py
│ │ ├── openai_itt.py
│ │ ├── openai_tts.py
│ │ └── xai.py
│ ├── nodes/
│ │ ├── __init__.py
│ │ ├── base_node.py
│ │ ├── concat_answers_node.py
│ │ ├── conditional_node.py
│ │ ├── description_node.py
│ │ ├── fetch_node.py
│ │ ├── fetch_node_level_k.py
│ │ ├── fetch_screen_node.py
│ │ ├── generate_answer_csv_node.py
│ │ ├── generate_answer_from_image_node.py
│ │ ├── generate_answer_node.py
│ │ ├── generate_answer_node_k_level.py
│ │ ├── generate_answer_omni_node.py
│ │ ├── generate_code_node.py
│ │ ├── generate_scraper_node.py
│ │ ├── get_probable_tags_node.py
│ │ ├── graph_iterator_node.py
│ │ ├── html_analyzer_node.py
│ │ ├── image_to_text_node.py
│ │ ├── markdownify_node.py
│ │ ├── merge_answers_node.py
│ │ ├── merge_generated_scripts_node.py
│ │ ├── parse_node.py
│ │ ├── parse_node_depth_k_node.py
│ │ ├── prompt_refiner_node.py
│ │ ├── rag_node.py
│ │ ├── reasoning_node.py
│ │ ├── robots_node.py
│ │ ├── search_internet_node.py
│ │ ├── search_link_node.py
│ │ ├── search_node_with_context.py
│ │ └── text_to_speech_node.py
│ ├── prompts/
│ │ ├── __init__.py
│ │ ├── description_node_prompts.py
│ │ ├── generate_answer_node_csv_prompts.py
│ │ ├── generate_answer_node_omni_prompts.py
│ │ ├── generate_answer_node_pdf_prompts.py
│ │ ├── generate_answer_node_prompts.py
│ │ ├── generate_code_node_prompts.py
│ │ ├── get_probable_tags_node_prompts.py
│ │ ├── html_analyzer_node_prompts.py
│ │ ├── merge_answer_node_prompts.py
│ │ ├── merge_generated_scripts_prompts.py
│ │ ├── prompt_refiner_node_prompts.py
│ │ ├── reasoning_node_prompts.py
│ │ ├── robots_node_prompts.py
│ │ ├── search_internet_node_prompts.py
│ │ ├── search_link_node_prompts.py
│ │ └── search_node_with_context_prompts.py
│ ├── telemetry/
│ │ ├── __init__.py
│ │ └── telemetry.py
│ └── utils/
│ ├── __init__.py
│ ├── cleanup_code.py
│ ├── cleanup_html.py
│ ├── code_error_analysis.py
│ ├── code_error_correction.py
│ ├── convert_to_md.py
│ ├── copy.py
│ ├── custom_callback.py
│ ├── data_export.py
│ ├── dict_content_compare.py
│ ├── llm_callback_manager.py
│ ├── logging.py
│ ├── model_costs.py
│ ├── output_parser.py
│ ├── parse_state_keys.py
│ ├── prettify_exec_info.py
│ ├── proxy_rotation.py
│ ├── research_web.py
│ ├── save_audio_from_bytes.py
│ ├── save_code_to_file.py
│ ├── schema_trasform.py
│ ├── screenshot_scraping/
│ │ ├── __init__.py
│ │ ├── screenshot_preparation.py
│ │ └── text_detection.py
│ ├── split_text_into_chunks.py
│ ├── sys_dynamic_import.py
│ ├── tokenizer.py
│ └── tokenizers/
│ ├── tokenizer_mistral.py
│ ├── tokenizer_ollama.py
│ └── tokenizer_openai.py
├── test
└── tests/
├── QUICKSTART.md
├── README_TESTING.md
├── Readme.md
├── conftest.py
├── fixtures/
│ ├── benchmarking.py
│ ├── helpers.py
│ └── mock_server/
│ ├── __init__.py
│ └── server.py
├── graphs/
│ ├── abstract_graph_test.py
│ ├── code_generator_graph_openai_test.py
│ ├── depth_search_graph_openai_test.py
│ ├── inputs/
│ │ ├── books.xml
│ │ ├── example.json
│ │ ├── plain_html_example.txt
│ │ └── username.csv
│ ├── scrape_plain_text_mistral_test.py
│ ├── scrape_xml_ollama_test.py
│ ├── screenshot_scraper_test.py
│ ├── script_generator_test.py
│ ├── search_graph_openai_test.py
│ ├── search_link_ollama.py
│ ├── smart_scraper_clod_test.py
│ ├── smart_scraper_ernie_test.py
│ ├── smart_scraper_fireworks_test.py
│ ├── smart_scraper_multi_lite_graph_openai_test.py
│ ├── smart_scraper_ollama_test.py
│ ├── smart_scraper_openai_test.py
│ └── xml_scraper_openai_test.py
├── inputs/
│ ├── books.xml
│ ├── example.json
│ ├── plain_html_example.txt
│ └── username.csv
├── integration/
│ ├── __init__.py
│ ├── test_file_formats_integration.py
│ ├── test_multi_graph_integration.py
│ └── test_smart_scraper_integration.py
├── nodes/
│ ├── fetch_node_test.py
│ ├── inputs/
│ │ ├── books.xml
│ │ ├── example.json
│ │ ├── plain_html_example.txt
│ │ └── username.csv
│ ├── robot_node_test.py
│ ├── search_internet_node_test.py
│ └── search_link_node_test.py
├── test_chromium.py
├── test_cleanup_html.py
├── test_csv_scraper_multi_graph.py
├── test_depth_search_graph.py
├── test_fetch_node_timeout.py
├── test_generate_answer_node.py
├── test_json_scraper_graph.py
├── test_json_scraper_multi_graph.py
├── test_minimax_models.py
├── test_models_tokens.py
├── test_omni_search_graph.py
├── test_scrape_do.py
├── test_script_creator_multi_graph.py
├── test_search_graph.py
├── test_smart_scraper_multi_concat_graph.py
└── utils/
├── convert_to_md_test.py
├── copy_utils_test.py
├── parse_state_keys_test.py
├── research_web_test.py
├── test_proxy_rotation.py
└── test_sys_dynamic_import.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: ScrapeGraphAI
patreon: # Replace with a single Patreon username
open_collective: scrapegraphai
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom:
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/custom.md
================================================
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''
---
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/workflows/code-quality.yml
================================================
name: Code Quality Checks
on:
push:
paths:
- 'scrapegraphai/**'
- '.github/workflows/pylint.yml'
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install dependencies
run: uv sync --frozen
- name: Run Ruff
run: uv run ruff check scrapegraphai
- name: Run Black
run: uv run black --check scrapegraphai
- name: Run isort
run: uv run isort --check-only scrapegraphai
- name: Analysing the code with pylint
run: uv run poe pylint-ci
- name: Check Pylint score
run: |
pylint_score=$(uv run poe pylint-score-ci | grep 'Raw metrics' | awk '{print $4}')
if (( $(echo "$pylint_score < 8" | bc -l) )); then
echo "Pylint score is below 8. Blocking commit."
exit 1
else
echo "Pylint score is acceptable."
fi
================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '42 19 * * 5'
jobs:
analyze:
name: Analyze
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners
# Consider using larger runners for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
# required for all workflows
security-events: write
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
================================================
FILE: .github/workflows/dependency-review.yml
================================================
# Dependency Review Action
#
# This Action will scan dependency manifest files that change as part of a Pull Request,
# surfacing known-vulnerable versions of the packages declared or updated in the PR.
# Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable
# packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
name: 'Dependency review'
on:
pull_request:
branches: [ "main" ]
# If using a dependency submission action in this workflow this permission will need to be set to:
#
# permissions:
# contents: write
#
# https://docs.github.com/en/enterprise-cloud@latest/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api
permissions:
contents: read
# Write permissions for pull-requests are required for using the `comment-summary-in-pr` option, comment out if you aren't using this option
pull-requests: write
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: 'Checkout repository'
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v4
# Commonly enabled options, see https://github.com/actions/dependency-review-action#configuration-options for all available options.
with:
comment-summary-in-pr: always
# fail-on-severity: moderate
# deny-licenses: GPL-1.0-or-later, LGPL-2.0-or-later
# retry-on-snapshot-warnings: true
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
branches:
- main
- pre/*
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Install git
run: |
sudo apt update
sudo apt install -y git
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install Node Env
uses: actions/setup-node@v4
with:
node-version: 20
- name: Checkout
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
persist-credentials: false
- name: Build and validate package
run: |
uv venv
. .venv/bin/activate
uv pip install --upgrade setuptools wheel hatchling
uv sync --frozen
uv pip install -e .
uv build
uv pip install --upgrade pkginfo==1.12.0 twine==6.0.1 # Upgrade pkginfo and install twine
python -m twine check dist/*
- name: Debug Dist Directory
run: ls -al dist
- name: Cache build
uses: actions/cache@v3
with:
path: ./dist
key: ${{ runner.os }}-build-${{ github.sha }}
release:
name: Release
runs-on: ubuntu-latest
needs: build
environment: development
if: >
github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/pre/beta') ||
(github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged &&
(github.event.pull_request.base.ref == 'main' || github.event.pull_request.base.ref == 'pre/beta'))
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
steps:
- name: Checkout repo
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
persist-credentials: false
- name: Restore build artifacts
uses: actions/cache@v3
with:
path: ./dist
key: ${{ runner.os }}-build-${{ github.sha }}
- name: Semantic Release
uses: cycjimmy/semantic-release-action@v4.1.0
with:
semantic_version: 23
extra_plugins: |
semantic-release-pypi@3
@semantic-release/git
@semantic-release/commit-analyzer@12
@semantic-release/release-notes-generator@13
@semantic-release/github@10
@semantic-release/changelog@6
conventional-changelog-conventionalcommits@7
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
================================================
FILE: .github/workflows/test-suite.yml
================================================
name: Test Suite
on:
push:
branches: [main, pre/beta, dev]
pull_request:
branches: [main, pre/beta]
workflow_dispatch:
jobs:
unit-tests:
name: Unit Tests (Python ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: |
uv sync
- name: Install Playwright browsers
run: |
uv run playwright install chromium
- name: Run unit tests
run: |
uv run pytest tests/ -m "unit or not integration" --cov --cov-report=xml --cov-report=term
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
flags: unittests
name: codecov-${{ matrix.os }}-py${{ matrix.python-version }}
token: ${{ secrets.CODECOV_TOKEN }}
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test-group: [smart-scraper, multi-graph, file-formats]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: |
uv sync
- name: Install Playwright browsers
run: |
uv run playwright install chromium
- name: Run integration tests
env:
OPENAI_APIKEY: ${{ secrets.OPENAI_APIKEY }}
ANTHROPIC_APIKEY: ${{ secrets.ANTHROPIC_APIKEY }}
GROQ_APIKEY: ${{ secrets.GROQ_APIKEY }}
run: |
uv run pytest tests/integration/ -m integration --integration -v
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: integration-test-results-${{ matrix.test-group }}
path: |
htmlcov/
benchmark_results/
benchmark-tests:
name: Performance Benchmarks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: |
uv sync
- name: Install Playwright browsers
run: |
uv run playwright install chromium
- name: Run performance benchmarks
env:
OPENAI_APIKEY: ${{ secrets.OPENAI_APIKEY }}
run: |
uv run pytest tests/ -m benchmark --benchmark -v
- name: Upload benchmark results
uses: actions/upload-artifact@v4
with:
name: benchmark-results
path: benchmark_results/
- name: Compare with baseline
if: github.event_name == 'pull_request'
run: |
# Download baseline from main branch
# Compare and comment on PR if regression detected
echo "Benchmark comparison would run here"
code-quality:
name: Code Quality Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Install dependencies
run: |
uv sync
- name: Run Ruff linting
run: |
uv run ruff check scrapegraphai/ tests/
- name: Run Black formatting check
run: |
uv run black --check scrapegraphai/ tests/
- name: Run isort check
run: |
uv run isort --check-only scrapegraphai/ tests/
- name: Run type checking with mypy
run: |
uv run mypy scrapegraphai/
continue-on-error: true
test-coverage-report:
name: Test Coverage Report
needs: [unit-tests, integration-tests]
runs-on: ubuntu-latest
if: always()
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download coverage artifacts
uses: actions/download-artifact@v4
- name: Generate coverage report
run: |
echo "Coverage report generation would run here"
- name: Comment coverage on PR
if: github.event_name == 'pull_request'
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ github.token }}
test-summary:
name: Test Summary
needs: [unit-tests, integration-tests, code-quality]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check test results
run: |
echo "All test jobs completed"
echo "Unit tests: ${{ needs.unit-tests.result }}"
echo "Integration tests: ${{ needs.integration-tests.result }}"
echo "Code quality: ${{ needs.code-quality.result }}"
================================================
FILE: .gitignore
================================================
.DS_Store
.DS_Store?
._*
# Byte-compiled / optimized / DLL files
**/__pycache__/
*.py[cod]
*$py.class
# Distribution / packaging
.Python
build/
dist/
*.egg-info/
*.egg
MANIFEST
*.python-version
docs/build/
docs/source/_templates/
docs/source/_static/
.env
venv/
.venv/
.vscode/
.conda/
# exclude pdf, mp3
*.pdf
*.mp3
*.sqlite
*.google-cookie
*.python-version
examples/graph_examples/ScrapeGraphAI_generated_graph
examples/**/result.csv
examples/**/result.json
main.py
lib/
*.html
.idea
# extras
cache/
run_smart_scraper.py
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
.ruff_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
Pipfile.lock
# poetry
poetry.lock
# pdm
pdm.lock
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
.idea/
# VS Code
.vscode/
# macOS
.DS_Store
dev.ipynb
# CodeBeaver reports and artifacts
.codebeaver
================================================
FILE: .pre-commit-config.yaml
================================================
repos:
- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.6.9
hooks:
- id: ruff
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
exclude: mkdocs.yml
================================================
FILE: .readthedocs.yaml
================================================
# Read the Docs configuration file for Sphinx projects
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.12"
# You can also specify other tool versions:
# nodejs: "20"
# rust: "1.70"
# golang: "1.20"
# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/conf.py
# You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
# builder: "dirhtml"
# Fail on all warnings to avoid broken references
# fail_on_warning: true
# Optionally build your docs in additional formats such as PDF and ePub
# formats:
# - pdf
# - epub
# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
# python:
# install:
# - requirements: docs/requirements.txt
================================================
FILE: .releaserc.yml
================================================
plugins:
- - "@semantic-release/commit-analyzer"
- preset: conventionalcommits
- - "@semantic-release/release-notes-generator"
- writerOpts:
commitsSort:
- subject
- scope
preset: conventionalcommits
presetConfig:
types:
- type: feat
section: Features
- type: fix
section: Bug Fixes
- type: chore
section: chore
- type: docs
section: Docs
- type: style
hidden: true
- type: refactor
section: Refactor
- type: perf
section: Perf
- type: test
section: Test
- type: build
section: Build
- type: ci
section: CI
- "@semantic-release/changelog"
- "semantic-release-pypi"
- "@semantic-release/github"
- - "@semantic-release/git"
- assets:
- CHANGELOG.md
- pyproject.toml
message: |-
ci(release): ${nextRelease.version} [skip ci]
${nextRelease.notes}
branches:
#child branches coming from tagged version for bugfix (1.1.x) or new features (1.x)
#maintenance branch
- name: "+([0-9])?(.{+([0-9]),x}).x"
channel: "stable"
#release a production version when merging towards main
- name: "main"
channel: "stable"
#prerelease branch
- name: "pre/beta"
channel: "dev"
prerelease: "beta"
debug: true
================================================
FILE: .semantic-commits-applied
================================================
This file marks that commits have been rewritten to follow Conventional Commits format.
Original commits:
- 9439fe5: Fix langchain import issues blocking tests
- 323f26a: Add comprehensive timeout feature documentation
Rewritten as:
- 8c9cb8b: fix(imports): update deprecated langchain imports to langchain_core
- 4c764bc: docs(timeout): add comprehensive timeout configuration guide
These follow the semantic-release convention configured in .releaserc.yml
================================================
FILE: CHANGELOG.md
================================================
## [1.75.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.74.0...v1.75.0) (2026-03-18)
### Features
* upgrade MiniMax default model to M2.7 ([f47be50](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f47be507e642f00f94a0ac6300c0142b81c57371))
## [1.74.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.73.1...v1.74.0) (2026-03-15)
### Features
* add MiniMax as a supported LLM provider ([6a2f8ec](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6a2f8ecc7bdd271bc7da7bfec552c80f0e78f379))
## [1.73.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.73.0...v1.73.1) (2026-02-16)
### Bug Fixes
* handle list content in telemetry event validation ([b17b154](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b17b154bff044f0042d9982eb3408a98fe9aed98))
## [1.73.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.72.0...v1.73.0) (2026-01-30)
### Features
* update model tokens ([9c24ecc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9c24ecc180926d3cb035d8c29463b63d8b7e5439))
## [1.72.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.71.0...v1.72.0) (2026-01-20)
### Features
* add new tests ([f315f3a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f315f3a8c085892dd010fc1152b70f9b6a165671))
## [1.71.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.70.0...v1.71.0) (2026-01-05)
### Features
* add langchain v1.0 ([2673c26](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2673c26b3406dcc04ac9d7797e55b1df55cc4c67))
### Bug Fixes
* update langchain imports for v1.0+ compatibility ([621d3a5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/621d3a5bba6c48937e1f654b793d7316597e86c2)), closes [#1017](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1017)
* use 'content' instead of 'context' in generate_answer_node_k_level ([ebd909a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ebd909ad7442e24bc3c8f49b8c56736672d4d9fb)), closes [#995](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/995)
## [1.70.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.69.0...v1.70.0) (2026-01-03)
### Features
* add tests ([ab0da22](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ab0da2203a725c4218bdc142914fdf1c49fd22d8))
## [1.69.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.68.0...v1.69.0) (2025-12-24)
### Features
* add new banner ([e6c6060](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e6c6060b2895d5448cf3c44a6a3dffef70499ca2))
## [1.68.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.67.0...v1.68.0) (2025-12-23)
### Features
* update of the dependencies ([484e6d7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/484e6d7142a702227d877c7d3d75cbe02ec453f7))
## [1.67.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.66.0...v1.67.0) (2025-12-19)
### Features
* add benchmark ([da112db](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/da112dbe1425c27035f5a1ce18758094d97c38de))
## [1.66.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.65.0...v1.66.0) (2025-12-13)
### Features
* add openai gpt 5.2 ([2cd3c8c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2cd3c8c6d07224d1bc05ff24cf95cfa96fcf0c78))
## [1.65.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.64.2...v1.65.0) (2025-12-08)
### Features
* empty commit ([5f07858](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5f0785892f4ba33d31408ab200e5b002d98a8a4b))
## [1.64.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.64.1...v1.64.2) (2025-12-04)
### Bug Fixes
* trigger build ([c582303](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c58230319c936a519a0e659f93ebac2fdab80947))
## [1.64.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.64.0...v1.64.1) (2025-12-03)
### Bug Fixes
* add null check for document.body when reading scrollHeight ([6c5f7bb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6c5f7bb1558e378adb5acd07b81635118db711b0))
### chore
* apply semantic commit format as requested ([34e1308](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/34e13084761e6de767e13966edd67bee1e2ef4f2))
### Docs
* add guide for applying semantic commit format ([2920d8b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2920d8bcc07226ff21a08e0d5fe6b839beee5c36))
* update korean readme ([5516ec6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5516ec6f7743a86355ca2d320bcfdfaa8e868101))
* update semantic commit guide to use feat(timeout) ([dcd4f9c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/dcd4f9cd1a07f212b681e5f044253580adf157a7))
## [1.64.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.63.1...v1.64.0) (2025-11-06)
### Features
* Add configurable timeout to FetchNode ([e81a4ed](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e81a4ed74540c6fb3be9465a698d8de9df72a74b))
## [1.63.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.63.0...v1.63.1) (2025-10-24)
### Bug Fixes
* url redirect ([8f0433c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8f0433cfb6c7b6fc7bb542a8956858fc7b4b5ea2))
## [1.63.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.62.0...v1.63.0) (2025-10-22)
### Features
* update model tokens ([79db9b9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/79db9b9f1341475474fca9b159325973e730a865))
## [1.62.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.61.0...v1.62.0) (2025-08-13)
### Features
* update pr ([c07b3c0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c07b3c08cd6a87c3f7acd2d4d560b7a17d6c02eb))
### Docs
* removed duplicated line ([c2abb9f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c2abb9fd5df9b5b3a1d9158a2b607f9646c9211d))
## [1.61.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.60.0...v1.61.0) (2025-07-03)
### Features
* update doc ([2dc6b9b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2dc6b9bff2b3594b2f72fb91031e9fbb080ff259))
## [1.60.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.59.0...v1.60.0) (2025-06-26)
### Features
* update the readme ([939e170](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/939e170eb6de21d1b4cd703b4fcdd6d3001d4185))
### CI
* **release:** 1.60.0-beta.1 [skip ci] ([9fb5f7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9fb5f7c41364b1cbe6b6c1d9eddea0c6e0e1ccb8))
## [1.60.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.59.0...v1.60.0-beta.1) (2025-06-24)
### Features
* update the readme ([939e170](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/939e170eb6de21d1b4cd703b4fcdd6d3001d4185))
## [1.59.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.58.0...v1.59.0) (2025-06-24)
### Features
* removed sposnsors ([288c69a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/288c69a862f34b999db476e669ff97c00afacde3))
## [1.58.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.57.0...v1.58.0) (2025-06-21)
### Features
* add new oss link ([0c2481f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c2481fffebca355e542ae420ee1bf4cade8e5e3))
### Docs
* add links to other language versions of README ([07dec35](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/07dec35f1bf95842ee55b17796bb45f2db0f44b3))
## [1.57.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.56.0...v1.57.0) (2025-06-13)
### Features
* add markdownify endpoint ([7340375](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/73403755da1e4c3065e91d834c59f6d8c1825763))
## [1.56.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.55.0...v1.56.0) (2025-06-13)
### Features
* add scrapegraphai integration ([94e9ebd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/94e9ebd28061f8313bb23074b4db3406cf4db0c9))
## [1.55.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.54.1...v1.55.0) (2025-06-07)
### Features
* add adv ([cd29791](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cd29791894325c54f1dec1d2a5f6456800beb63e))
* update logs ([8c54162](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8c541620879570c46f32708c7e488e9a4ca0ea3e))
## [1.54.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.54.0...v1.54.1) (2025-06-06)
### Bug Fixes
* bug on generate answer node ([e846a14](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e846a1415506a58f7bc8b76ac56ba0b6413178ba))
## [1.54.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.53.0...v1.54.0) (2025-06-06)
### Features
* add grok integration ([0c476a4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c476a4a7bbbec3883f505cd47bcffdcd2d9e5fd))
### Bug Fixes
* grok integration and add new grok models ([3f18272](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3f1827274c60a2729233577666d2fa446c48c4ba))
### chore
* enhanced a readme ([68bb34c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/68bb34cc5e63b8a1d5acc61b9b61f9ea716a2a51))
### CI
* **release:** 1.52.0-beta.1 [skip ci] ([7adb0f1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7adb0f1df1efc4e6ada1134f6e53e4d6b072a608))
* **release:** 1.52.0-beta.2 [skip ci] ([386b46a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/386b46a8692c8c18000bb071fc8f312adc3ad05e))
* **release:** 1.54.0-beta.1 [skip ci] ([77d4432](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/77d44321a1d41e10ac6aa13b526a49e718bd7c5d))
## [1.54.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.53.0...v1.54.0-beta.1) (2025-06-06)
### Features
* add grok integration ([0c476a4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c476a4a7bbbec3883f505cd47bcffdcd2d9e5fd))
### Bug Fixes
* grok integration and add new grok models ([3f18272](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3f1827274c60a2729233577666d2fa446c48c4ba))
### chore
* enhanced a readme ([68bb34c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/68bb34cc5e63b8a1d5acc61b9b61f9ea716a2a51))
### CI
* **release:** 1.52.0-beta.1 [skip ci] ([7adb0f1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7adb0f1df1efc4e6ada1134f6e53e4d6b072a608))
* **release:** 1.52.0-beta.2 [skip ci] ([386b46a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/386b46a8692c8c18000bb071fc8f312adc3ad05e))
## [1.52.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.52.0-beta.1...v1.52.0-beta.2) (2025-06-04)
### Bug Fixes
* grok integration and add new grok models ([3f18272](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3f1827274c60a2729233577666d2fa446c48c4ba))
## [1.52.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.51.0...v1.52.0-beta.1) (2025-05-30)
### Features
* add grok integration ([0c476a4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c476a4a7bbbec3883f505cd47bcffdcd2d9e5fd))
### CI
* **release:** 1.50.0-beta.1 [skip ci] ([470ed48](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/470ed4893f8acaf53cb283497cb1fc6e263cc790))
## [1.50.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.49.0...v1.50.0-beta.1) (2025-04-29)
### Features
* add new openai models ([97ee48c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/97ee48cb52038ec746d8ec78de029c8dde6a7753))
### CI
* **release:** 1.49.0-beta.1 [skip ci] ([228920c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/228920cf10e0861ada99432f34fca2f5b845984f))
## [1.49.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.48.0...v1.49.0-beta.1) (2025-04-29)
### Features
* add new openai models ([97ee48c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/97ee48cb52038ec746d8ec78de029c8dde6a7753))
* enhance error handling and validation across utility modules ([b552aa9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b552aa902fb4f5052468148851434062d8e74b94))
## [1.48.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.47.0...v1.48.0) (2025-04-15)
### Features
* add 4.1 integration ([54d5e46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/54d5e46d4c5adcd2b2b6c49003a16227905d2af0))
### CI
* **release:** 1.47.0-beta.2 [skip ci] ([2019c90](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2019c907a54a84fc0e80bf26bd0d97b9b5cf9fb1))
* **release:** 1.48.0-beta.1 [skip ci] ([cbf88fd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cbf88fdeec99a095491bbceebffd664ae0a14a4b))
## [1.48.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.47.0...v1.48.0-beta.1) (2025-04-15)
### Features
* add 4.1 integration ([54d5e46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/54d5e46d4c5adcd2b2b6c49003a16227905d2af0))
### CI
* **release:** 1.47.0-beta.2 [skip ci] ([2019c90](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2019c907a54a84fc0e80bf26bd0d97b9b5cf9fb1))
## [1.47.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.47.0-beta.1...v1.47.0-beta.2) (2025-04-15)
### Features
* add 4.1 integration ([54d5e46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/54d5e46d4c5adcd2b2b6c49003a16227905d2af0))
* add new proxy rotation ([8913d8d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8913d8d3af3a2809d3ddcbfa09cbf2c9982a19cd))
### CI
* **release:** 1.44.0-beta.1 [skip ci] ([5e944cc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e944cc573f62585dbf3366aa840c997847523d1))
* **release:** 1.47.0-beta.1 [skip ci] ([b1b8579](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b1b8579704f509d5560c3052f1edfdf31e42db4b))
## [1.47.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.46.0...v1.47.0-beta.1) (2025-04-15)
### Features
* add new proxy rotation ([8913d8d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8913d8d3af3a2809d3ddcbfa09cbf2c9982a19cd))
### CI
* **release:** 1.44.0-beta.1 [skip ci] ([5e944cc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e944cc573f62585dbf3366aa840c997847523d1))
## [1.46.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.45.0...v1.46.0) (2025-03-27)
### Features
* add new proxy rotation ([8913d8d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8913d8d3af3a2809d3ddcbfa09cbf2c9982a19cd))
* add new logo ([c085d6c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c085d6c7ffcbf446439de97c9f88f8eadba5909c))
## [1.45.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.44.0...v1.45.0) (2025-03-27)
### Features
* add scrapeless logo ([ae60e2b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ae60e2b8bf7bda7519306cdd05d16c2c68538421))
## [1.44.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.43.1...v1.44.0) (2025-03-26)
### Features
* add new model openai support ([087cbcb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/087cbcbc8f93665eade60156f070ada5847f3e58))
## [1.43.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.43.0...v1.43.1) (2025-03-21)
### Bug Fixes
* Fixes schema option not working ([df1645c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/df1645c5ebc6bc2362992fec3887dcbedf519ba9))
### CI
* **release:** 1.43.1-beta.1 [skip ci] ([bdf813e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bdf813eb03a60865050f4996b63f110ab3a366e7))
## [1.43.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.43.0...v1.43.1-beta.1) (2025-03-21)
### Bug Fixes
* Fixes schema option not working ([df1645c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/df1645c5ebc6bc2362992fec3887dcbedf519ba9))
## [1.43.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.42.1...v1.43.0) (2025-03-13)
### Features
* add intrgration for o3min ([fc0a148](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fc0a1480174e59e395232af123ad8ce64595e029))
## [1.42.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.42.0...v1.42.1) (2025-03-12)
### Bug Fixes
* add new gpt model ([cff799b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cff799b50d60089f175649eec00da1c5dceeed95))
## [1.42.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.41.0...v1.42.0) (2025-03-10)
### Features
* update terms ([ff7b33b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ff7b33b376720c81984142f2783f2e8729b5a525))
## [1.41.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.40.1...v1.41.0) (2025-03-09)
### Features
* add CLoD integration ([4e0e785](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4e0e78582c3a75e64c5eba26ce40b5ffbf05d58e))
### Test
* Add coverage improvement test for tests/test_generate_answer_node.py ([6769c0d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6769c0d43ab72f1c8b520dd28d19f747b22f9b7c))
* Add coverage improvement test for tests/test_models_tokens.py ([b21e781](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b21e781ce340c7fa2c5a99a28b7c23e06e950f1e))
* Update coverage improvement test for tests/graphs/abstract_graph_test.py ([f296ac4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f296ac4d5088a74d4f50e7262631f202a68b152c))
### CI
* **release:** 1.41.0-beta.1 [skip ci] ([7bfe494](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7bfe494237279d73cefe4161a0b8e95491329ccb))
## [1.41.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.40.1...v1.41.0-beta.1) (2025-03-07)
### Features
* add CLoD integration ([4e0e785](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4e0e78582c3a75e64c5eba26ce40b5ffbf05d58e))
### Test
* Add coverage improvement test for tests/test_generate_answer_node.py ([6769c0d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6769c0d43ab72f1c8b520dd28d19f747b22f9b7c))
## [1.40.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.40.0...v1.40.1) (2025-02-27)
### Bug Fixes
* curly bracket ([70318ca](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/70318ca1a7549a595ff81354b739866b63efe7de))
## [1.40.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.39.0...v1.40.0) (2025-02-25)
### Features
* add refactoring of merge and parse ([2c0b459](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2c0b4591ae4a13a89a73fb29a170adf6e52b3903))
* update parse node ([8cf9685](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8cf96857a000eada6d1c9ce1a357ee3d1f2bd003))
### CI
* **release:** 1.39.0-beta.2 [skip ci] ([ac2fcd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ac2fcd66ce2603153877e3141b3ff862a348e335))
* **release:** 1.40.0-beta.1 [skip ci] ([71053bc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/71053bc7586b0e723272d0eb7e668c07aa666eae))
## [1.40.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.39.0...v1.40.0-beta.1) (2025-02-25)
### Features
* add refactoring of merge and parse ([2c0b459](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2c0b4591ae4a13a89a73fb29a170adf6e52b3903))
* update parse node ([8cf9685](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8cf96857a000eada6d1c9ce1a357ee3d1f2bd003))
### CI
* **release:** 1.39.0-beta.2 [skip ci] ([ac2fcd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ac2fcd66ce2603153877e3141b3ff862a348e335))
## [1.39.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.39.0-beta.1...v1.39.0-beta.2) (2025-02-25)
### Features
* add refactoring of merge and parse ([2c0b459](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2c0b4591ae4a13a89a73fb29a170adf6e52b3903))
### CI
* **release:** 1.38.1 [skip ci] ([5c3d62d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5c3d62d55b5c6dcbb304b5879a19ca09bc18b153))
## [1.39.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.38.1-beta.1...v1.39.0-beta.1) (2025-02-17)
### Features
* add the new handling exception ([5c0bc46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5c0bc46c6322ea07efa31d95819d7da47462f981))
## [1.38.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.38.0...v1.38.1-beta.1) (2025-02-13)
### Bug Fixes
* filter links ([04b9197](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/04b91972e88b69b722454d54c8635dfb49b38b44))
### Test
* Add coverage improvement test for tests/test_scrape_do.py ([4ce6d1b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4ce6d1b94306d0ae94a74748726468a5132b7969))
## [1.38.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.37.1...v1.38.0) (2025-02-09)
### Features
* add gemini2.0 flash ([12a0414](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/12a0414d5eca88ebf3947e2c06151ecdf7501771))
### Test
* Add coverage improvement test for tests/test_depth_search_graph.py ([0d9995b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0d9995b297c4bd19b6c915facc6c72199854aeb6))
* Add coverage improvement test for tests/test_scrape_do.py ([1f187b6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1f187b6948d14fd382bb7a213186856b28bd7047))
* Update coverage improvement test for tests/test_json_scraper_graph.py ([c9d71af](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c9d71af1efc829e4de234ed06054497c3bdaacc9))
* Update coverage improvement test for tests/test_search_graph.py ([80dd766](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/80dd766ac23dd055ae5787333604bb4b5367f278))
## [1.37.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.37.0...v1.37.1) (2025-01-30)
### Bug Fixes
* Schema parameter type ([2b5bd80](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2b5bd80a945a24072e578133eacc751feeec6188))
### Test
* Add coverage improvement test for tests/test_json_scraper_graph.py ([98be43e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/98be43e22db82c1220c20f899980e7e702bcff97))
* Add coverage improvement test for tests/test_search_graph.py ([b300ca8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b300ca82bc9b4f42552f9f91e0eadc9ea59ef877))
* Update coverage improvement test for tests/graphs/abstract_graph_test.py ([d022e5c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d022e5c53ecd4e1134c43daa6224d85357ea38be))
* Update coverage improvement test for tests/graphs/abstract_graph_test.py ([a406264](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a406264a125318d39234cdbdfc6cfaa540b20464))
* Update coverage improvement test for tests/test_json_scraper_graph.py ([f5ebe8a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f5ebe8ac100e77060e8e2fed687d87018fb97fdc))
* Update coverage improvement test for tests/test_json_scraper_graph.py ([9919e7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9919e7c12211039f03381b6b7cc0167fb268a3fb))
* Update coverage improvement test for tests/test_search_graph.py ([ba58568](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba58568b8a7f3fba634069cf777474d2955475bc))
* Update coverage improvement test for tests/test_search_graph.py ([16c688f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/16c688f090559497175677010bbb285c9d53cf22))
### CI
* **release:** 1.36.1-beta.1 [skip ci] ([006a2aa](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/006a2aaa3fbafbd5b2030c48d5b04b605532c06f))
* **release:** 1.37.1-beta.1 [skip ci] ([d5c7c9c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d5c7c9cd9d6e12b900b13809d11f2d8da747a3da))
## [1.37.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.37.0...v1.37.1-beta.1) (2025-01-22)
### Bug Fixes
* Schema parameter type ([2b5bd80](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2b5bd80a945a24072e578133eacc751feeec6188))
### CI
* **release:** 1.36.1-beta.1 [skip ci] ([006a2aa](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/006a2aaa3fbafbd5b2030c48d5b04b605532c06f))
## [1.36.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.36.0...v1.36.1-beta.1) (2025-01-21)
### Bug Fixes
* Schema parameter type ([2b5bd80](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2b5bd80a945a24072e578133eacc751feeec6188))
* search ([ce25b6a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ce25b6a4b0e1ea15edf14a5867f6336bb27590cb))
### Docs
* add requirements.dev ([6e12981](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6e12981e637d078a6d3b3ce83f0d4901e9dd9996))
* added first ollama example ([aa6a76e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/aa6a76e5bdf63544f62786b0d17effa205aab3d8))
## [1.36.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.35.0...v1.36.0) (2025-01-12)
### Features
* add example of collab ([1fad118](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1fad1181a6b2d654c4eb996348907940b1d8a7af))
### Bug Fixes
* ollama tokenizer limited to 1024 tokens + ollama structured output + fix browser backend ([ad693b2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ad693b2bb201b4d9280139e70a2930358e779366))
* updated ollama structured output ([3b95911](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b9591156d96ac7266055703e7ffb354e90b01f0))
### Docs
* ✨ code quality badge update ([02022cc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/02022cc5db39fede1a1d920d17e18ba0d05328ba))
* improved readme + fix csv scraper imports ([14b4b19](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/14b4b19f60e33c855bee4eea0a1a6fcc01a98c1a))
* refactoring of the doc ([5ca325c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5ca325c7257b71fc4cd12ee26bde3e992ade5756))
### CI
* **release:** 1.35.1-beta.1 [skip ci] ([1d17d92](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1d17d92c1f4a29da9d9333dd9a06ea9baf043192))
* **release:** 1.36.0-beta.1 [skip ci] ([04bd3f8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/04bd3f8e572fc79e3e3ad439cd3bb72a409edf91))
## [1.36.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.35.1-beta.1...v1.36.0-beta.1) (2025-01-12)
### Features
* add example of collab ([1fad118](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1fad1181a6b2d654c4eb996348907940b1d8a7af))
### Bug Fixes
* updated ollama structured output ([3b95911](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b9591156d96ac7266055703e7ffb354e90b01f0))
### Docs
* improved readme + fix csv scraper imports ([14b4b19](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/14b4b19f60e33c855bee4eea0a1a6fcc01a98c1a))
* refactoring of the doc ([5ca325c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5ca325c7257b71fc4cd12ee26bde3e992ade5756))
## [1.35.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.35.0...v1.35.1-beta.1) (2025-01-12)
### Bug Fixes
* ollama tokenizer limited to 1024 tokens + ollama structured output + fix browser backend ([ad693b2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ad693b2bb201b4d9280139e70a2930358e779366))
### Docs
* ✨ code quality badge update ([02022cc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/02022cc5db39fede1a1d920d17e18ba0d05328ba))
## [1.35.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.2...v1.35.0) (2025-01-06)
### Features
* ⏰added graph timeout and fixed model_tokens param ([#810](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/810) [#856](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/856) [#853](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/853)) ([01a331a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/01a331afa5fc6f6d6aea4f1969cbf41f0b25f5e0))
* ⛏️ enhanced contribution and precommit added ([fcbfe78](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fcbfe78983c5c36fe5e4e0659ccfebc7fd9952b4))
* add codequality workflow ([4380afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4380afb5c15e7f6057fd44bdbd6bde410bb98378))
* add timeout and retry_limit in loader_kwargs ([#865](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/865) [#831](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/831)) ([21147c4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/21147c46a53e943dd5f297e6c7c3433edadfbc27))
* serper api search ([1c0141f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c0141fd281881e342a113d5a414930d8184146b))
### Bug Fixes
* browserbase integration ([752a885](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/752a885f5c521b7141728952d913a5a25650d8e2))
* local html handling ([2a15581](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2a15581865d84021278ec0bf601172f6f8343717))
### CI
* **release:** 1.34.2-beta.1 [skip ci] ([f383e72](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f383e7283727ad798fe152434eee7e6750c36166)), closes [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861) [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861)
* **release:** 1.34.2-beta.2 [skip ci] ([93fd9d2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/93fd9d29036ce86f6a17f960f691bc6e4b26ea51))
* **release:** 1.34.3-beta.1 [skip ci] ([013a196](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/013a196629e3ceb63e901149b62529010e8d3c18)), closes [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861) [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861)
* **release:** 1.35.0-beta.1 [skip ci] ([c5630ce](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c5630cee4dabb216bb2d31ccc51595856595a4f6)), closes [#865](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/865) [#831](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/831)
* **release:** 1.35.0-beta.2 [skip ci] ([f21c586](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f21c586f6ad9a15bc54fa390ebb283f6fea15df2))
* **release:** 1.35.0-beta.3 [skip ci] ([cb54d5b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cb54d5b8be376d3455d6af883e32d20c2210a48e))
* **release:** 1.35.0-beta.4 [skip ci] ([6e375f5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6e375f5cbcaebe46efdbe3caf70b38afeb136d67)), closes [#810](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/810) [#856](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/856) [#853](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/853)
## [1.35.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.35.0-beta.3...v1.35.0-beta.4) (2025-01-06)
### Features
* ⏰added graph timeout and fixed model_tokens param ([#810](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/810) [#856](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/856) [#853](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/853)) ([01a331a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/01a331afa5fc6f6d6aea4f1969cbf41f0b25f5e0))
## [1.35.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.35.0-beta.2...v1.35.0-beta.3) (2025-01-06)
### Features
* serper api search ([1c0141f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c0141fd281881e342a113d5a414930d8184146b))
## [1.35.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.35.0-beta.1...v1.35.0-beta.2) (2025-01-06)
### Features
* add codequality workflow ([4380afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4380afb5c15e7f6057fd44bdbd6bde410bb98378))
## [1.35.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.3-beta.1...v1.35.0-beta.1) (2025-01-06)
### Features
* ⛏️ enhanced contribution and precommit added ([fcbfe78](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fcbfe78983c5c36fe5e4e0659ccfebc7fd9952b4))
* add timeout and retry_limit in loader_kwargs ([#865](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/865) [#831](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/831)) ([21147c4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/21147c46a53e943dd5f297e6c7c3433edadfbc27))
### Bug Fixes
* local html handling ([2a15581](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2a15581865d84021278ec0bf601172f6f8343717))
## [1.34.3-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.2...v1.34.3-beta.1) (2025-01-06)
### Bug Fixes
* browserbase integration ([752a885](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/752a885f5c521b7141728952d913a5a25650d8e2))
### CI
* **release:** 1.34.2-beta.1 [skip ci] ([f383e72](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f383e7283727ad798fe152434eee7e6750c36166)), closes [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861) [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861)
* **release:** 1.34.2-beta.2 [skip ci] ([93fd9d2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/93fd9d29036ce86f6a17f960f691bc6e4b26ea51))
## [1.34.2-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.2-beta.1...v1.34.2-beta.2) (2025-01-06)
### Bug Fixes
* browserbase integration ([752a885](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/752a885f5c521b7141728952d913a5a25650d8e2))
## [1.34.2-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.1...v1.34.2-beta.1) (2025-01-06)
### Bug Fixes
* add back poethepoet for pylint ([a82af04](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a82af04afed2e4ba309b5e98b5df351d9b79ca2e))
* better playwright installation handling ([f6009d1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f6009d1abf9e2c83999de0c9b03a41aa1bf8f2a4))
* disallow mailto: ([#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861)) ([8d9c909](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8d9c909923dff1c247c85099db20e2a6dabb93f5))
* removed requirements files ([25861b0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/25861b04be8a6fc60c900a46033aed91d1fef1f9))
* search graph ([d4b2679](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d4b26796d94d314af135d2d1bbd538e1d4be7593))
* selenium import in ChromiumLoader ([e374e05](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e374e055d64b7fa4c5a4c7694384dd15e6361bbd))
### chore
* chromium browser asnc handling ([5be7c49](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5be7c497cd44fbd0c026bf3d833f572b34661b08))
* made some libs optional ([5cdf055](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5cdf0550fe9dcd519d274bb343cf65c845e8a608))
* pandas package is now optional ([54c69a2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/54c69a2b0b1677286b840be95ce482bcee881413))
### CI
* **release:** 1.34.0-beta.15 [skip ci] ([bc7ae85](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bc7ae85ba5e42ec63ed57a803c429475e736a296))
* **release:** 1.34.0-beta.16 [skip ci] ([a0efb09](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a0efb09ffb3bb2b6f4ddc986eb563db456fc90d2)), closes [#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861)
## [1.34.0-beta.16](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.15...v1.34.0-beta.16) (2025-01-06)
## [1.34.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0...v1.34.1) (2025-01-04)
### Bug Fixes
* add back poethepoet for pylint ([a82af04](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a82af04afed2e4ba309b5e98b5df351d9b79ca2e))
* better playwright installation handling ([f6009d1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f6009d1abf9e2c83999de0c9b03a41aa1bf8f2a4))
* disallow mailto: ([#861](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/861)) ([8d9c909](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8d9c909923dff1c247c85099db20e2a6dabb93f5))
* removed requirements files ([25861b0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/25861b04be8a6fc60c900a46033aed91d1fef1f9))
* selenium import in ChromiumLoader ([e374e05](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e374e055d64b7fa4c5a4c7694384dd15e6361bbd))
### chore
* chromium browser asnc handling ([5be7c49](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5be7c497cd44fbd0c026bf3d833f572b34661b08))
* made some libs optional ([5cdf055](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5cdf0550fe9dcd519d274bb343cf65c845e8a608))
* pandas package is now optional ([54c69a2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/54c69a2b0b1677286b840be95ce482bcee881413))
## [1.34.0-beta.15](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.14...v1.34.0-beta.15) (2025-01-03)
* add new models ([72684a9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/72684a9476e255d5e20550f82daf3e7462fb8f5a))
## [1.34.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.33.11...v1.34.0) (2025-01-03)
### Features
* add new model token ([2a032d6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2a032d6d7cf18c435fba59764e7cb28707737f0c))
* added scrolling method to chromium docloader ([1c8b910](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c8b910562112947a357277bca9dc81619b72e61))
### Bug Fixes
* search graph ([d4b2679](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d4b26796d94d314af135d2d1bbd538e1d4be7593))
* added license-files = [ ([9150e4c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9150e4c95fa468afe9ddda3f1278b5037a2d0f38))
* added twine ([df07da9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/df07da9bcc59cbccf1c45d69e3a3e904eaed565b))
* build config ([b186a4f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b186a4f1c73fe29fa706158cc3c61812d6b16343))
* build config ([46f5985](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/46f598546109067267d01ae7d8ea7609526ea4d4))
* build config ([d2fc53f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d2fc53fc8414475c9bee7590144fe4251d56faf4))
* bump hatchling version to 1.26.3 ([159ed32](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/159ed329d2e8fa86015df1e59a7e2ebb439c6ec0))
* last desperate attempt to restore automatic builds ([2538fe3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2538fe3db339014ef54e2c78269bce9259e284ea))
* pyproject ([35a4907](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/35a490747cf6b8dad747a4af7f02d6f5aeb0d338))
* release config ([9cd0d31](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9cd0d31882c22f347ebd9c58d8dd66b47d178c64))
* release config ([62ee294](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/62ee294a864993a9414644c1547bafb96a43df20))
* release config ([89863ee](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/89863ee166e09ee18287bfcc1b5475d894c9e8c6))
* release config ([38e477c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/38e477c540a3a50fc7ff6120da255d51798bfadd))
* release workflow ([a00f128](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a00f128992e9fef88c870295c46b983b4286a3eb))
* release workflow ([cb6d140](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cb6d140042685bd419444d75ae7cab706cbcee38))
* removed license for license-files ([b5acfb4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b5acfb414321989c45f76fad82f0d720ec889274))
* revert to d1b2104 ([a0c0a7f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a0c0a7ff5c5dc9a107e7be8d5b5e1854886d411c))
* twine ([eb36a2b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eb36a2b630d62363f3c57e243f2b90cf530c0a3b))
* update pkginfo ([9203ab9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9203ab9a4ab4400105fd34433684f9ac2453f35c))
* upgrade twine ([020e211](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/020e21123889c6483459e9db1c3c796cbc116140))
* uv build ([1be6ffe](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1be6ffe309124d55b8b3b66ded448f06dfd87b7e))
* uv install workflow ([bcac20a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bcac20a7a8e65e2aa5760fb14e17b8054b4f4cf4))
* uv virtual env ([fce9886](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fce988687b3dc6fc36ce9244a8c2744f4a25d561))
* version ([95b8990](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/95b8990a3649646972e12d78b11c7e1b7e707bf6))
* workflow ([abe2945](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/abe29457f2380932d070bfd607c8ab5f749627c3))
### Docs
* fixed missing import ([96064f2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/96064f20ee8a849a2548f293419cf9028386c47b))
### CI
* **release:** 1.33.0-beta.1 [skip ci] ([60e2fdf](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/60e2fdff78e405e127ba8b10daa454d634bccf46)), closes [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822) [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822)
* **release:** 1.33.0-beta.2 [skip ci] ([09995cd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/09995cd56c96cfa709a68bea73113ab5debfcb97))
* **release:** 1.34.0-beta.1 [skip ci] ([f97c45c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f97c45c447a3f45dd59dbeb5b70ff676cecdec3c)), closes [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822) [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822)
* **release:** 1.34.0-beta.10 [skip ci] ([11177c6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/11177c68f3fb3c80dfb1e8f787371f93874f709c))
* **release:** 1.34.0-beta.11 [skip ci] ([16164d4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/16164d45c80a5267135ea8d899ea2cd75f6d80ad))
* **release:** 1.34.0-beta.12 [skip ci] ([cfea826](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cfea8266393bdf45aa4cc69ed1b4e976b968ee92))
* **release:** 1.34.0-beta.13 [skip ci] ([8c7c231](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8c7c231baa8f022018be26e18b338917401c51c9))
* **release:** 1.34.0-beta.14 [skip ci] ([a9569ac](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a9569ac08ffbb81a08b7a93aab70de914047659f))
* **release:** 1.34.0-beta.2 [skip ci] ([caf941d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/caf941df25b116bece9d9142b5133d8d4e1db264))
* **release:** 1.34.0-beta.3 [skip ci] ([7cd865b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7cd865b98d1b14446cf2959db04ad1b81728c5aa))
* **release:** 1.34.0-beta.4 [skip ci] ([9cba928](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9cba928cc4449acdb784649c5a804f1ef8c7a7a5))
* **release:** 1.34.0-beta.5 [skip ci] ([ab50a61](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ab50a613e854fab671597659b64296f8a37a462c))
* **release:** 1.34.0-beta.6 [skip ci] ([44524f3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/44524f3ac4ae72ef3813f7f2a26edbb54a7c524e))
* **release:** 1.34.0-beta.7 [skip ci] ([6f7547d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6f7547dee89b1e83fca0bccbb744c6d84b7cb64e))
* **release:** 1.34.0-beta.8 [skip ci] ([5e85617](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e85617ccaccf421c0736abecee62426c6140686))
* **release:** 1.34.0-beta.9 [skip ci] ([9ff302a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9ff302a11db1c3a3fc5d8ec2739bd0f0df330461))
## [1.34.0-beta.14](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.13...v1.34.0-beta.14) (2025-01-03)
### Bug Fixes
* add model tokens ([9b16cb9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9b16cb987fd93132d814ebd933af1565eb166331))
* revert ([b312251](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b312251cc56ee4c82554ecf116b5e6edd1560726))
* revert ([bb5de58](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bb5de581c064a1d141f849081e52987500957d1c))
* validate URL only if the input type is a URL ([e2caee6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e2caee695ecce2d13aa5a82306097b1a80ba0e18))
### Docs
* added api reference 🔗 ([67038e1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/67038e195224e1a721fe123ad1d5604b3592df20))
* added official cookbook reference ([98aa74f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/98aa74ff2d35041884130be14efdf47ca5e716df))
* fixed missing import ([96064f2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/96064f20ee8a849a2548f293419cf9028386c47b))
* updated documentation reference ([fe89ae2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fe89ae29e6dc5f4322c25c693e2c9f6ce958d6e2))
### CI
* **release:** 1.33.10 [skip ci] ([a44b74a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a44b74aa6f7be7cdb4bdbebebc3b51a6d54a51e6))
* **release:** 1.33.11 [skip ci] ([30f48b3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/30f48b394f6eb8c7c9a1fa113bffabd2ac1ac585))
* **release:** 1.33.9 [skip ci] ([9b6d6c0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9b6d6c0efb2fd1af5bf87cf61a0ba3d79876d21d))
## [1.34.0-beta.13](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.12...v1.34.0-beta.13) (2025-01-03)
### Bug Fixes
* bump hatchling version to 1.26.3 ([159ed32](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/159ed329d2e8fa86015df1e59a7e2ebb439c6ec0))
## [1.34.0-beta.12](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.11...v1.34.0-beta.12) (2025-01-02)
### Docs
### Bug Fixes
* removed license for license-files ([b5acfb4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b5acfb414321989c45f76fad82f0d720ec889274))
## [1.34.0-beta.11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.10...v1.34.0-beta.11) (2025-01-02)
### Bug Fixes
* added license-files = [ ([9150e4c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9150e4c95fa468afe9ddda3f1278b5037a2d0f38))
## [1.34.0-beta.10](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.9...v1.34.0-beta.10) (2025-01-02)
### Bug Fixes
* upgrade twine ([020e211](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/020e21123889c6483459e9db1c3c796cbc116140))
## [1.34.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.8...v1.34.0-beta.9) (2025-01-02)
### Bug Fixes
* update pkginfo ([9203ab9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9203ab9a4ab4400105fd34433684f9ac2453f35c))
## [1.34.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.7...v1.34.0-beta.8) (2025-01-02)
### Bug Fixes
* added twine ([df07da9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/df07da9bcc59cbccf1c45d69e3a3e904eaed565b))
* twine ([eb36a2b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eb36a2b630d62363f3c57e243f2b90cf530c0a3b))
* uv virtual env ([fce9886](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fce988687b3dc6fc36ce9244a8c2744f4a25d561))
* version ([95b8990](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/95b8990a3649646972e12d78b11c7e1b7e707bf6))
* workflow ([abe2945](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/abe29457f2380932d070bfd607c8ab5f749627c3))
## [1.34.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.6...v1.34.0-beta.7) (2025-01-02)
### Bug Fixes
* revert to d1b2104 ([a0c0a7f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a0c0a7ff5c5dc9a107e7be8d5b5e1854886d411c))
## [1.34.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.5...v1.34.0-beta.6) (2025-01-02)
### Bug Fixes
* release workflow ([a00f128](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a00f128992e9fef88c870295c46b983b4286a3eb))
## [1.34.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.4...v1.34.0-beta.5) (2025-01-02)
### Bug Fixes
* release workflow ([cb6d140](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cb6d140042685bd419444d75ae7cab706cbcee38))
* uv build ([1be6ffe](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1be6ffe309124d55b8b3b66ded448f06dfd87b7e))
* uv install workflow ([bcac20a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bcac20a7a8e65e2aa5760fb14e17b8054b4f4cf4))
## [1.34.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.3...v1.34.0-beta.4) (2024-12-18)
### Bug Fixes
* build config ([b186a4f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b186a4f1c73fe29fa706158cc3c61812d6b16343))
* build config ([46f5985](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/46f598546109067267d01ae7d8ea7609526ea4d4))
* build config ([d2fc53f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d2fc53fc8414475c9bee7590144fe4251d56faf4))
* last desperate attempt to restore automatic builds ([2538fe3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2538fe3db339014ef54e2c78269bce9259e284ea))
* release config ([9cd0d31](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9cd0d31882c22f347ebd9c58d8dd66b47d178c64))
* release config ([62ee294](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/62ee294a864993a9414644c1547bafb96a43df20))
* release config ([89863ee](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/89863ee166e09ee18287bfcc1b5475d894c9e8c6))
* release config ([38e477c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/38e477c540a3a50fc7ff6120da255d51798bfadd))
## [1.34.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.2...v1.34.0-beta.3) (2024-12-18)
### Bug Fixes
* pyproject ([35a4907](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/35a490747cf6b8dad747a4af7f02d6f5aeb0d338))
## [1.34.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.34.0-beta.1...v1.34.0-beta.2) (2024-12-17)
### Bug Fixes
* context window ([ffdadae](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ffdadaed6fe3f17da535e6eddb73851fce2f4bf2))
* formatting ([d1b2104](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d1b2104f28d84c5129edb29a5efdaf5bf7d22bfb))
* pyproject ([76ac0a2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/76ac0a2141d9d53af023a405e2c61849921e4f0e))
* pyproject ([3dcfcd4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3dcfcd492e71297031a7df1dba9dd135f1fae60e))
* pyproject ([bf6cb0a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bf6cb0a582004617724e11ed04ba617eb39abc0c))
* uv.lock ([0a7fc39](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0a7fc392dea2b62122b977d62f4d85b117fc8351))
### CI
* **release:** 1.33.3 [skip ci] ([488093a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/488093a63fcc1dc01eabdab301d752416a025139))
* **release:** 1.33.4 [skip ci] ([a789179](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a78917997060edbd61df5279546587e4ef123ea1))
* **release:** 1.33.5 [skip ci] ([7a6164f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7a6164f1dc6dbb8ff0b4f7fc653f3910445f0754))
* **release:** 1.33.6 [skip ci] ([ca96c3d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ca96c3d4309bd2b92c87a2b0095578dda302ad92))
* **release:** 1.33.7 [skip ci] ([7a5764e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7a5764e3fdbfea12b04ea0686a28025a9d89cb2f))
* **release:** 1.33.8 [skip ci] ([bdd6a39](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bdd6a392e2c18de8c3e4e47e2f91a4a366365ff2))
## [1.33.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.33.1...v1.33.2) (2024-12-06)
### Bug Fixes
* client ([e16e94b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e16e94bf694d516071818adec5ea2f3a1404ec72))
## [1.33.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.33.0...v1.33.1) (2024-12-06)
### Bug Fixes
* did a quick fix ([a6f43d5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a6f43d53cb760e74e5b437cb721b09a4e569c5a2))
## [1.33.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.32.0...v1.33.0) (2024-12-05)
### Features
* add api integration ([8aa9103](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8aa9103f02af92d9e1a780450daa7bb303afc150))
* add API integration ([ba6e931](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba6e931caf5f3d4a3b9c31ec4655fe7a9f0e214c))
* add sdk integration ([209b445](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/209b4456fd668d9d124fd5586b32a4be677d4bf8))
* revert search function ([faf0c01](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/faf0c0123b5e2e548cbd1917e9d1df22e1edb1c5))
### Bug Fixes
* error on fetching the code ([7285ab0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7285ab065bba9099ba2751c9d2f21ee13fed0d5f))
* improved links extraction for parse_node, resolves [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822) ([7da7bfe](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7da7bfe338a6ce53c83361a1f6cd9ea2d5bd797f))
### chore
* migrate from rye to uv ([5fe528a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5fe528a7e7a3e230d8f68fd83ce5ad6ede5adfef))
### CI
* **release:** 1.32.0-beta.1 [skip ci] ([b98dd39](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b98dd39150947fb121cd726d343c9d6fb9a31d5f))
* **release:** 1.32.0-beta.2 [skip ci] ([8b17764](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8b17764a53c4e16c7c0178925f9275282f5dba3c))
* **release:** 1.32.0-beta.3 [skip ci] ([0769fce](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0769fce7d501692bd1135d6337b0aea4a397c8f1)), closes [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822)
* **release:** 1.32.0-beta.4 [skip ci] ([67c9859](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/67c9859c2078e7ec3b3ac99827deb346860f1a83))
* **release:** 1.32.0-beta.5 [skip ci] ([fbb4252](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fbb42526320cd614684fe1092cac89cde86c27d4))
## [1.32.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.32.0-beta.4...v1.32.0-beta.5) (2024-12-02)
## [1.32.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.1...v1.32.0) (2024-12-02)
## [1.32.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.32.0-beta.3...v1.32.0-beta.4) (2024-12-02)
### Features
* add api integration ([8aa9103](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8aa9103f02af92d9e1a780450daa7bb303afc150))
* add sdk integration ([209b445](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/209b4456fd668d9d124fd5586b32a4be677d4bf8))
### chore
* migrate from rye to uv ([5fe528a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5fe528a7e7a3e230d8f68fd83ce5ad6ede5adfef))
## [1.32.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.32.0-beta.2...v1.32.0-beta.3) (2024-11-26)
### Bug Fixes
* improved links extraction for parse_node, resolves [#822](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/822) ([7da7bfe](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7da7bfe338a6ce53c83361a1f6cd9ea2d5bd797f))
## [1.32.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.32.0-beta.1...v1.32.0-beta.2) (2024-11-25)
### Bug Fixes
* error on fetching the code ([7285ab0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7285ab065bba9099ba2751c9d2f21ee13fed0d5f))
## [1.32.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.1...v1.32.0-beta.1) (2024-11-24)
### Features
* revert search function ([faf0c01](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/faf0c0123b5e2e548cbd1917e9d1df22e1edb1c5))
## [1.31.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.0...v1.31.1) (2024-11-22)
### Bug Fixes
* add new model istance ([2f3cafe](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2f3cafeab0bce38571fa10d71f454b2a31766ddc))
* fetch node regex ([e2af232](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e2af2326f6c56e2abcc7dd5de9acdfb710507e0a))
* generate answer node timeout ([32ef554](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/32ef5547f1d864c750cd47c115be6f38a1931d2c))
* timeout ([c243106](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c243106552cec3b1df254c0d0a45401eb2f5c89d))
### CI
* **release:** 1.31.0-beta.1 [skip ci] ([1df7eb0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1df7eb0bcd923bc62fd19dddc0ce9b757e9742cf)), closes [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805) [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805)
* **release:** 1.31.1-beta.1 [skip ci] ([86bf4f2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/86bf4f24021d6e73378495d5b2b3acbfa2ff8ed5)), closes [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805) [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805)
* **release:** 1.31.1-beta.2 [skip ci] ([f247844](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f247844d81e018c749c3a9a7170ed3ceded5d483))
* **release:** 1.31.1-beta.3 [skip ci] ([30b0156](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/30b0156d17aa23e99d203eb6c7dd4f42e1e83566))
* **release:** 1.31.1-beta.4 [skip ci] ([b2720a4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b2720a452f023999e3b394636773b794941cc6a1))
## [1.31.1-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.1-beta.3...v1.31.1-beta.4) (2024-11-21)
### Bug Fixes
* add new model istance ([2f3cafe](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2f3cafeab0bce38571fa10d71f454b2a31766ddc))
## [1.31.1-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.1-beta.2...v1.31.1-beta.3) (2024-11-21)
### Bug Fixes
* fetch node regex ([e2af232](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e2af2326f6c56e2abcc7dd5de9acdfb710507e0a))
## [1.31.1-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.1-beta.1...v1.31.1-beta.2) (2024-11-20)
### Bug Fixes
* generate answer node timeout ([32ef554](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/32ef5547f1d864c750cd47c115be6f38a1931d2c))
## [1.31.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.31.0...v1.31.1-beta.1) (2024-11-20)
### Bug Fixes
* timeout ([c243106](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c243106552cec3b1df254c0d0a45401eb2f5c89d))
### CI
* **release:** 1.31.0-beta.1 [skip ci] ([1df7eb0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1df7eb0bcd923bc62fd19dddc0ce9b757e9742cf)), closes [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805) [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805)
## [1.31.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.30.0...v1.31.0) (2024-11-19)
### Features
* refactoring of generate answer node ([1f465e6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1f465e636d2869e4e36555124767de026d3a66ae))
* Turkish language support has been added to README.md ([60f673d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/60f673dc39cba70706291e11211b9ad180860e24))
### Bug Fixes
* fix generate answer node ([d332e21](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d332e216db15e48ca4163a9f74818c4c6874568c))
* generate answer node ([49897c4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/49897c4d2ee9950438d99dda6987bc8ba402a6ad))
* try to infer possible provider from the model name, resolves [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805) ([d2d0312](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d2d0312dc618fde305e650981cac90add93ec552))
### Docs
* Improved Turkish README ([f665138](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f665138b3dc2597088ca2c6a2e8be6cc4ce956d2))
### CI
* **release:** 1.30.0-beta.1 [skip ci] ([d996147](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d996147f018496fafac87f77d21e5e315c5e4974))
* **release:** 1.30.0-beta.2 [skip ci] ([3e8c043](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3e8c0434731d0276289990ec689272491df686a8))
* **release:** 1.30.0-beta.3 [skip ci] ([0255007](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/02550077f1815f0de3f963cd82a07c9d4581fb8e))
* **release:** 1.30.0-beta.4 [skip ci] ([777a685](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/777a68554e849e1373fe0611ab13131615099d64))
* **release:** 1.30.0-beta.5 [skip ci] ([af901a5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/af901a54cf817d514838140224f71a68158356e9)), closes [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805)
## [1.30.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.29.0...v1.30.0) (2024-11-06)
## [1.30.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.30.0-beta.4...v1.30.0-beta.5) (2024-11-18)
### Bug Fixes
* try to infer possible provider from the model name, resolves [#805](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/805) ([d2d0312](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d2d0312dc618fde305e650981cac90add93ec552))
## [1.30.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.30.0-beta.3...v1.30.0-beta.4) (2024-11-16)
### Bug Fixes
* generate answer node ([49897c4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/49897c4d2ee9950438d99dda6987bc8ba402a6ad))
## [1.30.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.30.0-beta.2...v1.30.0-beta.3) (2024-11-15)
### Features
* refactoring of generate answer node ([1f465e6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1f465e636d2869e4e36555124767de026d3a66ae))
## [1.30.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.30.0-beta.1...v1.30.0-beta.2) (2024-11-09)
### Bug Fixes
* fix generate answer node ([d332e21](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d332e216db15e48ca4163a9f74818c4c6874568c))
### Docs
* Improved Turkish README ([f665138](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f665138b3dc2597088ca2c6a2e8be6cc4ce956d2))
## [1.30.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.29.0...v1.30.0-beta.1) (2024-11-05)
### Features
* update chromium ([38c6dd2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/38c6dd2aa1ce31b981eb8c35a56e9533d19df81b))
* Turkish language support has been added to README.md ([60f673d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/60f673dc39cba70706291e11211b9ad180860e24))
## [1.29.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.28.0...v1.29.0) (2024-11-04)
### Features
* Serper API integration for Google search ([c218546](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c218546a3ddbdf987888e150942a244856af66cc))
### Bug Fixes
* resolved outparser issue ([e8cabfd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e8cabfd1ae7cc93abc04745948db1f6933fd2e26))
### CI
* **release:** 1.28.0-beta.3 [skip ci] ([65d39bb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/65d39bbaf0671fa5ac84705e94adb42078a36c3b))
* **release:** 1.28.0-beta.4 [skip ci] ([b90bb00](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b90bb00beb8497b8dd16fa4d1ef5af22042a55f3))
* **release:** 1.29.0-beta.1 [skip ci] ([950e859](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/950e859b1b90c7d5b85cbfcb0948e93d4487f78d))
## [1.29.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.28.0...v1.29.0-beta.1) (2024-11-04)
### Features
* Serper API integration for Google search ([c218546](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c218546a3ddbdf987888e150942a244856af66cc))
### Bug Fixes
* resolved outparser issue ([e8cabfd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e8cabfd1ae7cc93abc04745948db1f6933fd2e26))
### CI
* **release:** 1.28.0-beta.3 [skip ci] ([65d39bb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/65d39bbaf0671fa5ac84705e94adb42078a36c3b))
* **release:** 1.28.0-beta.4 [skip ci] ([b90bb00](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b90bb00beb8497b8dd16fa4d1ef5af22042a55f3))
## [1.28.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.28.0-beta.3...v1.28.0-beta.4) (2024-11-03)
### Bug Fixes
* resolved outparser issue ([e8cabfd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e8cabfd1ae7cc93abc04745948db1f6933fd2e26))
## [1.28.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.28.0-beta.2...v1.28.0-beta.3) (2024-11-02)
### Features
* Serper API integration for Google search ([c218546](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c218546a3ddbdf987888e150942a244856af66cc))
## [1.28.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0...v1.28.0) (2024-11-01)
### Features
* add new mistral models ([6914170](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/691417089014b5b0b64a1b26687cbb0cba693952))
* refactoring of the base_graph ([12a6c18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/12a6c18f6ac205b744d1de92e217cfc2dfc3486c))
* update generate answer ([7172b32](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7172b32a0f37f547edccab7bd09406e73c9ec5b2))
### Bug Fixes
* **AbstractGraph:** manually select model tokens ([f79f399](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f79f399ee0d660f162e0cb96d9faba48ecdc88b2)), closes [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768)
### CI
* **release:** 1.27.0-beta.11 [skip ci] ([3b2cadc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b2cadce1a93f31bd7a8fda64f7afcf802ada9e2))
* **release:** 1.27.0-beta.12 [skip ci] ([62369e3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/62369e3e2886eb8cc09f6ef64865140a87a28b60))
* **release:** 1.27.0-beta.13 [skip ci] ([deed355](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/deed355551d01d92dde11f8c0b373bdd43f8b8cf)), closes [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768)
* **release:** 1.28.0-beta.1 [skip ci] ([8cbe582](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8cbe582ea99945ea6543f4c2000298acaa3d75c8)), closes [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768) [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768)
* **release:** 1.28.0-beta.2 [skip ci] ([7e3598d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7e3598ddfacb2440df7b06e95b265b1b37cb4ea3))
## [1.28.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.28.0-beta.1...v1.28.0-beta.2) (2024-10-31)
### Features
* update generate answer ([7172b32](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7172b32a0f37f547edccab7bd09406e73c9ec5b2))
## [1.28.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0...v1.28.0-beta.1) (2024-10-30)
### Features
* add new mistral models ([6914170](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/691417089014b5b0b64a1b26687cbb0cba693952))
* refactoring of the base_graph ([12a6c18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/12a6c18f6ac205b744d1de92e217cfc2dfc3486c))
### Bug Fixes
* **AbstractGraph:** manually select model tokens ([f79f399](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f79f399ee0d660f162e0cb96d9faba48ecdc88b2)), closes [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768)
### CI
* **release:** 1.27.0-beta.11 [skip ci] ([3b2cadc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b2cadce1a93f31bd7a8fda64f7afcf802ada9e2))
* **release:** 1.27.0-beta.12 [skip ci] ([62369e3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/62369e3e2886eb8cc09f6ef64865140a87a28b60))
* **release:** 1.27.0-beta.13 [skip ci] ([deed355](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/deed355551d01d92dde11f8c0b373bdd43f8b8cf)), closes [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768)
## [1.27.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.7...v1.27.0) (2024-10-26)
### Features
* add conditional node structure to the smart_scraper_graph and implemented a structured way to check condition ([cacd9cd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cacd9cde004dace1a7dcc27981245632a78b95f3))
* add integration with scrape.do ([ae275ec](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ae275ec5e86c0bb8fdbeadc2e5f69816d1dea635))
* add model integration gpt4 ([51c55eb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/51c55eb3a2984ba60572edbcdea4c30620e18d76))
* implement ScrapeGraph class for only web scraping automation ([612c644](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/612c644623fa6f4fe77a64a5f1a6a4d6cd5f4254))
* Implement SmartScraperMultiParseMergeFirstGraph class that scrapes a list of URLs and merge the content first and finally generates answers to a given prompt. ([3e3e1b2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3e3e1b2f3ae8ed803d03b3b44b199e139baa68d4))
* refactoring of export functions ([0ea00c0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0ea00c078f2811f0d1b356bd84cafde80763c703))
* refactoring of get_probable_tags node ([f658092](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f658092dffb20ea111cc00950f617057482788f4))
* refactoring of ScrapeGraph to SmartScraperLiteGraph ([52b6bf5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52b6bf5fb8c570aa8ef026916230c5d52996f887))
### Bug Fixes
* fix export function ([c8a000f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c8a000f1d943734a921b34e91498b2f29c8c9422))
* fix the example variable name ([69ff649](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/69ff6495564a5c670b89c0f802ebb1602f0e7cfa))
* remove variable "max_result" not being used in the code ([e76a68a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e76a68a782e5bce48d421cb620d0b7bffa412918))
### chore
* fix example ([9cd9a87](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9cd9a874f91bbbb2990444818e8ab2d0855cc361))
### Test
* Add scrape_graph test ([cdb3c11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cdb3c1100ee1117afedbc70437317acaf7c7c1d3))
* Add smart_scraper_multi_parse_merge_first_graph test ([464b8b0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/464b8b04ea0d51280849173d5eda92d4d4db8612))
### CI
* **release:** 1.26.6-beta.1 [skip ci] ([e0fc457](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e0fc457d1a850f3306d473fbde55dd800133b404))
* **release:** 1.27.0-beta.1 [skip ci] ([9266a36](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9266a36b2efdf7027470d59aa14b654d68f7cb51))
* **release:** 1.27.0-beta.10 [skip ci] ([eee131e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eee131e959a36a4471f72610eefbc1764808b6be))
* **release:** 1.27.0-beta.2 [skip ci] ([d84d295](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d84d29538985ef8d04badfed547c6fdc73d7774d))
* **release:** 1.27.0-beta.3 [skip ci] ([f576afa](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f576afaf0c1dd6d1dbf79fd5e642f6dca9dbe862))
* **release:** 1.27.0-beta.4 [skip ci] ([3d6bbcd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3d6bbcdaa3828ff257adb22f2f7c1a46343de5b5))
* **release:** 1.27.0-beta.5 [skip ci] ([5002c71](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5002c713d5a76b2c2e4313f888d9768e3f3142e1))
* **release:** 1.27.0-beta.6 [skip ci] ([94b9836](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/94b9836ef6cd9c24bb8c04d7049d5477cc8ed807))
* **release:** 1.27.0-beta.7 [skip ci] ([407f1ce](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/407f1ce4eb22fb284ef0624dd3f7bf7ba432fa5c))
* **release:** 1.27.0-beta.8 [skip ci] ([4f1ed93](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f1ed939e671e46bb546b6b605db87e87c0d66ee))
* **release:** 1.27.0-beta.9 [skip ci] ([fd57cc7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fd57cc7c126658960e33b7214c2cc656ea032d8f))
* **AbstractGraph:** manually select model tokens ([f79f399](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f79f399ee0d660f162e0cb96d9faba48ecdc88b2)), closes [#768](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/768)
## [1.27.0-beta.12](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.11...v1.27.0-beta.12) (2024-10-28)
### Features
* refactoring of the base_graph ([12a6c18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/12a6c18f6ac205b744d1de92e217cfc2dfc3486c))
## [1.27.0-beta.11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.10...v1.27.0-beta.11) (2024-10-27)
### Features
* add new mistral models ([6914170](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/691417089014b5b0b64a1b26687cbb0cba693952))
## [1.27.0-beta.10](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.9...v1.27.0-beta.10) (2024-10-25)
### Bug Fixes
* fix export function ([c8a000f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c8a000f1d943734a921b34e91498b2f29c8c9422))
## [1.27.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.8...v1.27.0-beta.9) (2024-10-24)
### Features
* add model integration gpt4 ([51c55eb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/51c55eb3a2984ba60572edbcdea4c30620e18d76))
## [1.27.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.7...v1.27.0-beta.8) (2024-10-24)
### Bug Fixes
* removed tokenizer ([a184716](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a18471688f0b79f06fb7078b01b68eeddc88eae4))
### CI
* **release:** 1.26.7 [skip ci] ([ec9ef2b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ec9ef2bcda9aa81f66b943829fcdb22fe265976e))
## [1.27.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.6...v1.27.0-beta.7) (2024-10-24)
### Features
* refactoring of get_probable_tags node ([f658092](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f658092dffb20ea111cc00950f617057482788f4))
## [1.27.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.5...v1.27.0-beta.6) (2024-10-23)
### Features
* add integration with scrape.do ([ae275ec](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ae275ec5e86c0bb8fdbeadc2e5f69816d1dea635))
## [1.27.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.4...v1.27.0-beta.5) (2024-10-22)
### Features
* refactoring of export functions ([0ea00c0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0ea00c078f2811f0d1b356bd84cafde80763c703))
## [1.27.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.3...v1.27.0-beta.4) (2024-10-21)
### Features
* refactoring of ScrapeGraph to SmartScraperLiteGraph ([52b6bf5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52b6bf5fb8c570aa8ef026916230c5d52996f887))
## [1.27.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.2...v1.27.0-beta.3) (2024-10-20)
### Features
* implement ScrapeGraph class for only web scraping automation ([612c644](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/612c644623fa6f4fe77a64a5f1a6a4d6cd5f4254))
* Implement SmartScraperMultiParseMergeFirstGraph class that scrapes a list of URLs and merge the content first and finally generates answers to a given prompt. ([3e3e1b2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3e3e1b2f3ae8ed803d03b3b44b199e139baa68d4))
=======
## [1.26.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.6...v1.26.7) (2024-10-19)
### Bug Fixes
* fix the example variable name ([69ff649](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/69ff6495564a5c670b89c0f802ebb1602f0e7cfa))
### chore
* fix example ([9cd9a87](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9cd9a874f91bbbb2990444818e8ab2d0855cc361))
### Test
* Add scrape_graph test ([cdb3c11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cdb3c1100ee1117afedbc70437317acaf7c7c1d3))
* Add smart_scraper_multi_parse_merge_first_graph test ([464b8b0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/464b8b04ea0d51280849173d5eda92d4d4db8612))
## [1.27.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.27.0-beta.1...v1.27.0-beta.2) (2024-10-18)
### Bug Fixes
* refactoring of gpt2 tokenizer ([44c3f9c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/44c3f9c98939c44caa86dc582242819a7c6a0f80))
### CI
* **release:** 1.26.6 [skip ci] ([a4634c7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a4634c73312b5c08581a8d670d53b7eebe8dadc1))
## [1.27.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.6-beta.1...v1.27.0-beta.1) (2024-10-16)
### Features
* add conditional node structure to the smart_scraper_graph and implemented a structured way to check condition ([cacd9cd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cacd9cde004dace1a7dcc27981245632a78b95f3))
* removed tokenizer ([a184716](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a18471688f0b79f06fb7078b01b68eeddc88eae4))
## [1.26.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.5...v1.26.6) (2024-10-18)
## [1.26.6-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.5...v1.26.6-beta.1) (2024-10-14)
### Bug Fixes
* remove variable "max_result" not being used in the code ([e76a68a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e76a68a782e5bce48d421cb620d0b7bffa412918))
* refactoring of gpt2 tokenizer ([44c3f9c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/44c3f9c98939c44caa86dc582242819a7c6a0f80))
## [1.26.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.4...v1.26.5) (2024-10-13)
### Bug Fixes
* async invocation ([c2179ab](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c2179abc60d1242f272067eaca4750019b6f1d7e))
## [1.26.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.3...v1.26.4) (2024-10-13)
### Bug Fixes
* csv_node ([b208ef7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b208ef792c9347ab608fdbe0913066343c3019ff))
## [1.26.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.2...v1.26.3) (2024-10-13)
### Bug Fixes
* generate answer node ([431b209](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/431b2093bee2ef5eea8292e804044b06c73585d7))
## [1.26.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.1...v1.26.2) (2024-10-13)
### Bug Fixes
* add new dipendency ([35c44e4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/35c44e4d2ca3f6f7f27c8c5efd3381e8fc3acc82))
## [1.26.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0...v1.26.1) (2024-10-13)
### Bug Fixes
* async tim ([7b07368](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7b073686ef1ff743defae5a2af3e740650f658d2))
* typo ([9c62f24](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9c62f24e7396c298f16470bac9f548e8fe51ca5f))
* typo ([c9d6ef5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c9d6ef5915b2155379fba5132c8640635eb7da06))
## [1.26.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.25.2...v1.26.0) (2024-10-13)
### Features
* add deep scraper implementation ([4b371f4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4b371f4d94dae47986aad751508813d89ce87b93))
* add google proxy support ([a986523](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a9865238847e2edccde579ace7ba226f7012e95d))
* add html_mode to smart_scraper ([bdcffd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bdcffd6360237b27797546a198ceece55ce4bc81))
* add reasoning integration ([b2822f6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b2822f620a610e61d295cbf4b670aa08fde9de24))
* async invocation ([257f393](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/257f393761e8ff823e37c72659c8b55925c4aecb))
* conditional_node ([f837dc1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f837dc16ce6db0f38fd181822748ca413b7ab4b0))
* finished basic version of deep scraper ([85cb957](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/85cb9572971719f9f7c66171f5e2246376b6aed2))
* prompt refactoring ([5a2f6d9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5a2f6d9a77a814d5c3756e85cabde8af978f4c06))
* refactoring fetch_node ([39a029e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/39a029ed9a8cd7c2277ba1386b976738e99d231b))
* refactoring of mdscraper ([3b7b701](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b7b701a89aad503dea771db3f043167f7203d46))
* refactoring of research web ([26f89d8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/26f89d895d547ef2463492f82da7ac21b57b9d1b))
* refactoring of the conditional node ([420c71b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/420c71ba2ca0fc77465dd533a807b887c6a87f52))
* undected_chromedriver support ([80ece21](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/80ece2179ac47a7ea42fbae4b61504a49ca18daa))
* update chromium loader ([4f816f3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f816f3b04974e90ca4208158f05724cfe68ffb8))
### Bug Fixes
* bugs ([026a70b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/026a70bd3a01b0ebab4d175ae4005e7f3ba3a833))
* import error ([37b6ba0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/37b6ba08ae9972240fc00a15efe43233fd093f3b))
* integration with html_mode ([f87ffa1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f87ffa1d8db32b38c47d9f5aa2ae88f1d7978a04))
* nodes prompt ([8753537](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8753537ecd2a0ba480cda482b6dc50c090b418d6))
* pyproject.toml ([3b27c5e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b27c5e88c0b0744438e8b604f40929e22d722bc))
* refactoring prompts ([c655642](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c65564257798a5ccdc2bdf92487cd9b069e6d951))
* removed pdf_scraper graph and created document scraper ([a57da96](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a57da96175a09a16d990eeee679988d10832ce13))
* search_on_web paremter ([7f03ec1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7f03ec15de20fc2d6c2aad2655cc5348cced1951))
* typo ([e285127](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e28512720c3d47917814cf388912aef0e2230188))
### Perf
* Proxy integration in googlesearch ([e828c70](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e828c7010acb1bd04498e027da69f35d53a37890))
### CI
* **release:** 1.22.0-beta.4 [skip ci] ([4330179](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4330179cb65674d65423c1763f90182e85c15a74))
* **release:** 1.22.0-beta.5 [skip ci] ([6d8f543](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6d8f5435d1ecd2d90b06aade50abc064f75c9d78))
* **release:** 1.22.0-beta.6 [skip ci] ([39f7815](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/39f78154a6f1123fa8aca5e169c803111c175473))
* **release:** 1.26.0-beta.1 [skip ci] ([ac31d7f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ac31d7f7101ba6d7251131aa010d9ef948fa611f))
* **release:** 1.26.0-beta.10 [skip ci] ([0c7ebe2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c7ebe28ac32abeab9b55bca2bceb7c4e591028e))
* **release:** 1.26.0-beta.11 [skip ci] ([6d8828a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6d8828aa62a8026cc874d84169a5bcb600b1a389))
* **release:** 1.26.0-beta.12 [skip ci] ([44d10aa](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/44d10aa1c035efe5b71d4394e702ff2592eac18d))
* **release:** 1.26.0-beta.13 [skip ci] ([12f2b99](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/12f2b9946be0b68b59a25cbd71f675ac705198cc))
* **release:** 1.26.0-beta.14 [skip ci] ([eb25725](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eb257259f8880466bf9a01416e0c9366d3d55a3b))
* **release:** 1.26.0-beta.15 [skip ci] ([528a974](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/528a9746fed50c1ca1c1a572951d6a7044bf85fc))
* **release:** 1.26.0-beta.16 [skip ci] ([04bd2a8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/04bd2a87fbd482c92cf35398127835205d8191f0))
* **release:** 1.26.0-beta.17 [skip ci] ([f17089c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f17089c123d96ae9e1407e2c008209dc630b45da))
* **release:** 1.26.0-beta.2 [skip ci] ([5cedeb8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5cedeb8486f5ca30586876be0c26f81b43ce8031))
* **release:** 1.26.0-beta.3 [skip ci] ([4f65be4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f65be44b50b314a96bb746830070e79095b713c))
* **release:** 1.26.0-beta.4 [skip ci] ([84d7937](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/84d7937472513d140d1a2334f974a571cbf42a45))
* **release:** 1.26.0-beta.5 [skip ci] ([ea9ed1a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ea9ed1a9819f1c931297743fb69ee4ee1bf6665a))
* **release:** 1.26.0-beta.6 [skip ci] ([4cd21f5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4cd21f500d545852a7a17328586a45306eac7419))
* **release:** 1.26.0-beta.7 [skip ci] ([482f060](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/482f060c9ad2a0fd203a4e47ac7103bf8040550d))
* **release:** 1.26.0-beta.8 [skip ci] ([38b795e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/38b795e48a1e568a823571a3c2f9fdeb95d0266e))
* **release:** 1.26.0-beta.9 [skip ci] ([4dc0699](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4dc06994832c561eeebca172c965a42aee661f3e))
## [1.26.0-beta.17](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.16...v1.26.0-beta.17) (2024-10-12)
### Features
* async invocation ([257f393](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/257f393761e8ff823e37c72659c8b55925c4aecb))
* refactoring of mdscraper ([3b7b701](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b7b701a89aad503dea771db3f043167f7203d46))
### Bug Fixes
* bugs ([026a70b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/026a70bd3a01b0ebab4d175ae4005e7f3ba3a833))
* search_on_web paremter ([7f03ec1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7f03ec15de20fc2d6c2aad2655cc5348cced1951))
## [1.26.0-beta.16](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.15...v1.26.0-beta.16) (2024-10-11)
### Features
* add google proxy support ([a986523](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a9865238847e2edccde579ace7ba226f7012e95d))
### Bug Fixes
* typo ([e285127](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e28512720c3d47917814cf388912aef0e2230188))
### Perf
* Proxy integration in googlesearch ([e828c70](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e828c7010acb1bd04498e027da69f35d53a37890))
## [1.26.0-beta.15](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.14...v1.26.0-beta.15) (2024-10-11)
### Features
* prompt refactoring ([5a2f6d9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5a2f6d9a77a814d5c3756e85cabde8af978f4c06))
## [1.26.0-beta.14](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.13...v1.26.0-beta.14) (2024-10-10)
### Features
* refactoring fetch_node ([39a029e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/39a029ed9a8cd7c2277ba1386b976738e99d231b))
## [1.26.0-beta.13](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.12...v1.26.0-beta.13) (2024-10-10)
### Features
* update chromium loader ([4f816f3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f816f3b04974e90ca4208158f05724cfe68ffb8))
## [1.26.0-beta.12](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.11...v1.26.0-beta.12) (2024-10-09)
### Bug Fixes
* nodes prompt ([8753537](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8753537ecd2a0ba480cda482b6dc50c090b418d6))
## [1.26.0-beta.11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.10...v1.26.0-beta.11) (2024-10-09)
### Bug Fixes
* refactoring prompts ([c655642](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c65564257798a5ccdc2bdf92487cd9b069e6d951))
## [1.26.0-beta.10](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.9...v1.26.0-beta.10) (2024-10-09)
### Bug Fixes
* removed pdf_scraper graph and created document scraper ([a57da96](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a57da96175a09a16d990eeee679988d10832ce13))
## [1.26.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.8...v1.26.0-beta.9) (2024-10-08)
### Bug Fixes
* pyproject.toml ([3b27c5e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b27c5e88c0b0744438e8b604f40929e22d722bc))
## [1.26.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.7...v1.26.0-beta.8) (2024-10-08)
### Features
* undected_chromedriver support ([80ece21](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/80ece2179ac47a7ea42fbae4b61504a49ca18daa))
## [1.26.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.6...v1.26.0-beta.7) (2024-10-07)
### Bug Fixes
* import error ([37b6ba0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/37b6ba08ae9972240fc00a15efe43233fd093f3b))
## [1.26.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.5...v1.26.0-beta.6) (2024-10-07)
### Features
* refactoring of the conditional node ([420c71b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/420c71ba2ca0fc77465dd533a807b887c6a87f52))
## [1.26.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.4...v1.26.0-beta.5) (2024-10-05)
### Features
* conditional_node ([f837dc1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f837dc16ce6db0f38fd181822748ca413b7ab4b0))
## [1.26.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.3...v1.26.0-beta.4) (2024-10-05)
### Bug Fixes
* update dependencies ([7579d0e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7579d0e2599d63c0003b1b7a0918132511a9c8f1))
### CI
* **release:** 1.25.2 [skip ci] ([5db4c51](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5db4c518056e9946c00f2fdab612786e0db9ce95))
## [1.25.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.25.1...v1.25.2) (2024-10-03)
### Bug Fixes
* update dependencies ([7579d0e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7579d0e2599d63c0003b1b7a0918132511a9c8f1))
## [1.25.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.25.0...v1.25.1) (2024-09-29)
## [1.26.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.2...v1.26.0-beta.3) (2024-10-04)
### Features
* add deep scraper implementation ([4b371f4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4b371f4d94dae47986aad751508813d89ce87b93))
* finished basic version of deep scraper ([85cb957](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/85cb9572971719f9f7c66171f5e2246376b6aed2))
## [1.26.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.26.0-beta.1...v1.26.0-beta.2) (2024-10-01)
### Features
* refactoring of research web ([26f89d8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/26f89d895d547ef2463492f82da7ac21b57b9d1b))
### CI
* **release:** 1.25.1 [skip ci] ([a98328c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a98328c7f2f39bdd609615247cb71ecf912a3bd8))
## [1.26.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.25.0...v1.26.0-beta.1) (2024-09-29)
* add html_mode to smart_scraper ([bdcffd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bdcffd6360237b27797546a198ceece55ce4bc81))
* add reasoning integration ([b2822f6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b2822f620a610e61d295cbf4b670aa08fde9de24))
### Bug Fixes
* removed deep scraper ([9aa8c88](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9aa8c889fb32f2eb2005a2fb04f05dc188092279))
* integration with html_mode ([f87ffa1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f87ffa1d8db32b38c47d9f5aa2ae88f1d7978a04))
* removed deep scraper ([9aa8c88](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9aa8c889fb32f2eb2005a2fb04f05dc188092279))
### CI
* **release:** 1.22.0-beta.4 [skip ci] ([4330179](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4330179cb65674d65423c1763f90182e85c15a74))
* **release:** 1.22.0-beta.5 [skip ci] ([6d8f543](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6d8f5435d1ecd2d90b06aade50abc064f75c9d78))
* **release:** 1.22.0-beta.6 [skip ci] ([39f7815](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/39f78154a6f1123fa8aca5e169c803111c175473))
## [1.25.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.24.1...v1.25.0) (2024-09-27)
### Features
* add llama 3.2 ([90e6d07](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/90e6d077dc55b498b71928181065fc088acf943e))
## [1.24.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.24.0...v1.24.1) (2024-09-26)
### Bug Fixes
* script creator multi ([9905be8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9905be8a37dc1ff4b90fe9b8be987887253be8bd))
## [1.24.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.23.1...v1.24.0) (2024-09-26)
* integration with html_mode ([f87ffa1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f87ffa1d8db32b38c47d9f5aa2ae88f1d7978a04))
## [1.22.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.22.0-beta.4...v1.22.0-beta.5) (2024-09-27)
### Features
* add info to the dictionary for toghtherai ([3b5ee76](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b5ee767cbb91cb0ca8e4691195d16c3b57140bb))
* update exception ([3876cb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3876cb7be86e081065ca18c443647261a4b205d1))
### Bug Fixes
* chat for bedrock ([f9b121f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f9b121f7657e9eaf0b1b0e4a8574b8f1cbbd7c36))
* graph Iterator node ([8ce08ba](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8ce08baf01d7757c6fdcab0333405787c67d2dbc))
* issue about parser ([7eda6bc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7eda6bc06bc4c32850029f54b9b4c22f3124296e))
* node refiner + examples ([d55f6be](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d55f6bee4766f174abb2fdcd598542a9ca108a25))
* update to pydantic documentation ([76ce257](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/76ce257efb9d9f46c0693472a1fe54b39e4eb1ef))
### CI
* **release:** 1.21.2-beta.1 [skip ci] ([dd0f260](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/dd0f260e75aad97019fad49b09fed1b03d755d37))
* **release:** 1.21.2-beta.2 [skip ci] ([ba4e863](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba4e863f1448564c3446ed4bb327f0eb5df50287))
* **release:** 1.22.0-beta.1 [skip ci] ([f42a95f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f42a95faa05de39bd9cfc05e377d4b3da372e482))
* **release:** 1.22.0-beta.2 [skip ci] ([431c09f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/431c09f551ac28581674c6061f055fde0350ed4c))
* **release:** 1.22.0-beta.3 [skip ci] ([e5ac020](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e5ac0205d1e04a8b31e86166c3673915b70fd1e3))
* add reasoning integration ([b2822f6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b2822f620a610e61d295cbf4b670aa08fde9de24))
## [1.22.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.22.0-beta.3...v1.22.0-beta.4) (2024-09-27)
### Features
* add html_mode to smart_scraper ([bdcffd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bdcffd6360237b27797546a198ceece55ce4bc81))
## [1.22.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.22.0-beta.2...v1.22.0-beta.3) (2024-09-25)
### Bug Fixes
* update to pydantic documentation ([76ce257](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/76ce257efb9d9f46c0693472a1fe54b39e4eb1ef))
## [1.22.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.22.0-beta.1...v1.22.0-beta.2) (2024-09-25)
### Bug Fixes
* node refiner + examples ([d55f6be](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d55f6bee4766f174abb2fdcd598542a9ca108a25))
## [1.22.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.21.2-beta.2...v1.22.0-beta.1) (2024-09-24)
### Features
* add info to the dictionary for toghtherai ([3b5ee76](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3b5ee767cbb91cb0ca8e4691195d16c3b57140bb))
* update exception ([3876cb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3876cb7be86e081065ca18c443647261a4b205d1))
## [1.21.2-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.21.2-beta.1...v1.21.2-beta.2) (2024-09-23)
### Bug Fixes
* graph Iterator node ([8ce08ba](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8ce08baf01d7757c6fdcab0333405787c67d2dbc))
* issue about parser ([7eda6bc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7eda6bc06bc4c32850029f54b9b4c22f3124296e))
## [1.21.2-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.21.1...v1.21.2-beta.1) (2024-09-22)
### Bug Fixes
* chat for bedrock ([f9b121f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f9b121f7657e9eaf0b1b0e4a8574b8f1cbbd7c36))
## [1.21.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.21.0...v1.21.1) (2024-09-21)
### Bug Fixes
* removed faiss ([86f6877](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/86f68770e920d800fb14d14ee34bf0d1a9cefd51))
## [1.21.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.20.1...v1.21.0) (2024-09-19)
### Features
* **AbstractGraph:** add adjustable rate limit ([2859fb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2859fb72d699f26b617ed2f949cdcfca1671c5c8))
* add copy for smart_scraper_multi_concat ([9e3171b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9e3171b9fa263aa4a5a6fba2d9c8079d4e918490))
* add scrape_do_integration ([94e69a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/94e69a051591aeec1e7268bf0d5e0338f90e9539))
* add togheterai ([8f615ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8f615adef320dacdd214a184981384dd05df8171))
* added Bedrock and Mistral to exec info ([8a37c6b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8a37c6b793c95fe957d41cdd7c3d64e808668d77))
* ConcatNode.py added for heavy merge operations ([bd4b26d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bd4b26d7d7c1a7953d1bc9d78b436007880028c9))
* fetch_node improved ([167f970](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/167f97040f081867cecff542c3af8aa122499ce8))
* refactoring of the tokenization function ([ec6b164](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ec6b164653250fdf01fd4db1454ea7534822f9cf))
* removed semchunk and used tikton ([1a7f21f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1a7f21fbf34dc9ef17bca683e2139a88eed70b16))
* return urls in searchgraph ([afb6eb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/afb6eb7e4796ab208a050ad04ad96a83406f7fa1))
* updated pydantic to v2 ([eb89549](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eb895492481192ac6b19a1b6714490e7b2ae3ef3))
### Bug Fixes
* Add mistral-common dependency ([7681a45](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7681a4586a68b164ca5c8a8aa0c11db0e54b503d))
* Added support for nested structure ([66ea166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66ea166438166a00a8b093c749f201694ab3a7be))
* **AbstractGraph:** Bedrock init issues ([63a5d18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/63a5d18486789ce1b4a8f5ea661fc83779fceca2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* correctly parsing output when using structured_output ([8e74ac5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8e74ac55a16ca012b52affbc754e4b04130e65db))
* Error in pyproject dependencies ([5b5cb5b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5b5cb5b8617605f93ecb6af425e426d1d90aa7bb))
* fetch_node condition ([3f45c17](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3f45c170229090e1658f1623148218a43aaa9c4f))
* Fixed pydantic error on SearchGraphs ([039ba2e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/039ba2e95a0067f37d421b348bad9775b2e76098))
* **ScreenshotScraper:** impose dynamic imports ([b8ef937](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b8ef93738ec4ae48c361fe5650df5194e845a2b1))
* **Ollama:** instance model from correct package ([398b2c5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/398b2c556faf518ca28ccc284bc8761a16281cf7))
* OmniScraerGraph working. ([c3d1b7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c3d1b7c200e6fd065bd5aea79b90ca3db4d42b16))
* parse node ([947ebd2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/947ebd2895408c5ebd00b9a3da1b220937553c4a))
* Parse Node scraping link and img urls allowing OmniScraper to work ([66a3b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66a3b6d6a3efdf1ee72b802fc9bf8175482c45bd))
* **SmartScraper:** pass llm_model to ParseNode ([5242166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52421665759032bcfad80ce540efebe5f47310f6))
* **DeepSeek:** proper model initialization ([74dfc69](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/74dfc693f6e487d20da58704284fe9f492d2b2aa))
* pyproject.toml ([812c73d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/812c73d8aaa6b1e13bb0dfdde81a31e03f0a139b))
* pyproject.toml dependencies ([b805aea](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b805aea1deb227e213bb9a027924d49058fefcc1))
* Refactor code to use CustomOpenAiCallbackManager for exclusive access to get_openai_callback ([e657113](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e657113ebc91336bb842f21e1ec74a952a0da6ba))
* Removed link_urls and img_ulrs from FetchNode output ([57337a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57337a0a8c86fb28c9ccbd70d41acfc9abea11f0))
* screenshot scraper ([388630c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/388630c0ffa2850c3d5ea47e62b71b41795203d8))
* screenshot_scraper ([ef7a589](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ef7a5891dcb1b4ed8a97947f5563fa78af917ecb))
* **ScreenShotScraper:** static import of optional dependencies ([52fe441](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52fe441c5af9c728983a2c3cd880fe9afcb5d428))
* temporary fix for parse_node ([f2bb22d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f2bb22d8e9b3ac5c1560793a6ec09f9ae4f257d3))
* update all nodes that were using MergeNode or IteratorNode ([a92dddb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a92dddb3e02549ee62ef6828fb55f5902470a3b4))
* update generate answernode ([c348f67](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c348f674ad0caae4f4dc04e194fae9634e01b621))
* update pyproject.toml ([932412e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/932412e325d552fb64104babd28ed56ba8fed00b))
### chore
* **examples:** create Together AI examples ([34942de](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/34942deca514df53e8aa1c7f96f812ee78b994bf))
### Docs
* Updated the graph_config in the documentation. ([57a58e1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57a58e162e254828d890e1a110cb5d3d4beb03df))
### Refactor
* Output parser code ([28b85a3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/28b85a3b16e0f07fce41b0ed27f8e337a5537c3c))
### CI
* **release:** 1.16.0-beta.1 [skip ci] ([d7f6036](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d7f6036f907eda8d1faa0944da4d1d168ca4c40e))
* **release:** 1.16.0-beta.2 [skip ci] ([1c37d5d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c37d5db1c637f791133df254838a0deade6d6be))
* **release:** 1.16.0-beta.3 [skip ci] ([886c987](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/886c987172bb57fb59863e4d7b494797bba16980))
* **release:** 1.16.0-beta.4 [skip ci] ([ba5c7ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba5c7adcea138d993005377f4cfe438795e1b124))
* **release:** 1.17.0-beta.1 [skip ci] ([13efd4e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/13efd4e3a4175e85e7c41f5d575a249c27ecbf1d))
* **release:** 1.17.0-beta.10 [skip ci] ([af28885](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/af2888539e4ce83ab5f52b5c605ecc3472b14aff))
* **release:** 1.17.0-beta.11 [skip ci] ([a73fec5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a73fec5a98f5e646dd8f7d08dfe2dd0dbe067a94))
* **release:** 1.17.0-beta.2 [skip ci] ([08afc92](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/08afc9292ea8ae227b75f640db3d4dd097265482))
* **release:** 1.17.0-beta.3 [skip ci] ([fc55418](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fc55418a4511389d053e8c6b9a28878a3bc91fe6))
* **release:** 1.17.0-beta.4 [skip ci] ([5e99071](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e990719cfc9e063fc2253fc70b3da14fae49360))
* **release:** 1.17.0-beta.5 [skip ci] ([16ab1bf](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/16ab1bf3d920ae8e3dbac372f075e4853200a0e9))
* **release:** 1.17.0-beta.6 [skip ci] ([50c9c6b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/50c9c6bd8ca67d3d4d83ca3717085042e8a51bc5))
* **release:** 1.17.0-beta.7 [skip ci] ([4347afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4347afb8d4d93f600221d8f77c2701361f0f96a2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* **release:** 1.17.0-beta.8 [skip ci] ([85c374e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/85c374e4b38f825af20e9e3d095c3a467025fdca))
* **release:** 1.17.0-beta.9 [skip ci] ([77d0fd3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/77d0fd3dba8d52aff8321ab5ff1a1cc8b92b0837))
* **release:** 1.19.0-beta.1 [skip ci] ([eddcb79](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eddcb79486af1bfebc28659d491e01bcb313f8ab)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633) [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* **release:** 1.19.0-beta.10 [skip ci] ([92f5df2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/92f5df2828b615f23ac3524f9328180a8029f8d0))
* **release:** 1.19.0-beta.11 [skip ci] ([edfb185](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/edfb1850edc9c1ef0ee139408b5d538366fd5941))
* **release:** 1.19.0-beta.12 [skip ci] ([bd2afef](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bd2afef87ee559cce9be9f0890c985491f836851))
* **release:** 1.19.0-beta.2 [skip ci] ([23a260c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/23a260c51e1ee64229af18bd292aa130d874fa66))
* **release:** 1.19.0-beta.3 [skip ci] ([38cba96](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/38cba96ea355dfc9280dfd004360b15e342e3839))
* **release:** 1.19.0-beta.4 [skip ci] ([24c38f9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/24c38f945a77ca321586409a8f83813f8f5fed81))
* **release:** 1.19.0-beta.5 [skip ci] ([7621a7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7621a7c7b74261fef25a68ee0eda36496a025ead))
* **release:** 1.19.0-beta.6 [skip ci] ([ed8e173](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ed8e1738c3aa750fae1d99d1370193a22391dc17))
* **release:** 1.19.0-beta.7 [skip ci] ([4ab26a2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4ab26a24a3b7738505ea43d11e247c8859a6c666))
* **release:** 1.19.0-beta.8 [skip ci] ([88b2c46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/88b2c469ae42d543ac8ab7adc3a10957fa3bacf3))
* **release:** 1.19.0-beta.9 [skip ci] ([7ad6f21](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7ad6f21ee28635f75c05038f1344d182c6ae7e3a))
* **release:** 1.20.0-beta.1 [skip ci] ([cc8392e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cc8392e032b23b800e3c6b1cf875427f26ed6763)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633) [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633) [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633) [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* **release:** 1.20.0-beta.2 [skip ci] ([4f8b55d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f8b55d7477f3e7f2fc19e3050eece163084e122))
* **release:** 1.20.0-beta.3 [skip ci] ([cca783c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cca783cfeb2af21f1d0ee6d7fe5cd7d0be424d6f))
* **release:** 1.20.0-beta.4 [skip ci] ([c81f970](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c81f970196258459b3775949ea5ebace2023ae1e))
* **release:** 1.20.0-beta.5 [skip ci] ([b0fef3f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b0fef3fda8c8107c425a79f7fe62bae14d63fad2))
## [1.20.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.20.0-beta.4...v1.20.0-beta.5) (2024-09-18)
### Features
* added Bedrock and Mistral to exec info ([8a37c6b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8a37c6b793c95fe957d41cdd7c3d64e808668d77))
### Bug Fixes
* fetch_node ([9e46b46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9e46b468c1447759986b87c34c5f89d945874572))
## [1.20.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0...v1.20.0) (2024-09-16)
### Features
* updated pydantic to v2 ([eb89549](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eb895492481192ac6b19a1b6714490e7b2ae3ef3))
### Refactor
* Output parser code ([28b85a3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/28b85a3b16e0f07fce41b0ed27f8e337a5537c3c))
## [1.20.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.20.0-beta.1...v1.20.0-beta.2) (2024-09-17)
### Bug Fixes
* Add mistral-common dependency ([7681a45](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7681a4586a68b164ca5c8a8aa0c11db0e54b503d))
* Error in pyproject dependencies ([5b5cb5b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5b5cb5b8617605f93ecb6af425e426d1d90aa7bb))
* fetch_node condition ([3f45c17](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3f45c170229090e1658f1623148218a43aaa9c4f))
## [1.20.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0...v1.20.0-beta.1) (2024-09-14)
### Features
* **AbstractGraph:** add adjustable rate limit ([2859fb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2859fb72d699f26b617ed2f949cdcfca1671c5c8))
* add copy for smart_scraper_multi_concat ([9e3171b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9e3171b9fa263aa4a5a6fba2d9c8079d4e918490))
* add scrape_do_integration ([94e69a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/94e69a051591aeec1e7268bf0d5e0338f90e9539))
* add togheterai ([8f615ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8f615adef320dacdd214a184981384dd05df8171))
* ConcatNode.py added for heavy merge operations ([bd4b26d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bd4b26d7d7c1a7953d1bc9d78b436007880028c9))
* fetch_node improved ([167f970](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/167f97040f081867cecff542c3af8aa122499ce8))
* refactoring of the tokenization function ([ec6b164](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ec6b164653250fdf01fd4db1454ea7534822f9cf))
* removed semchunk and used tikton ([1a7f21f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1a7f21fbf34dc9ef17bca683e2139a88eed70b16))
* return urls in searchgraph ([afb6eb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/afb6eb7e4796ab208a050ad04ad96a83406f7fa1))
### Bug Fixes
* Added support for nested structure ([66ea166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66ea166438166a00a8b093c749f201694ab3a7be))
* **AbstractGraph:** Bedrock init issues ([63a5d18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/63a5d18486789ce1b4a8f5ea661fc83779fceca2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* correctly parsing output when using structured_output ([8e74ac5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8e74ac55a16ca012b52affbc754e4b04130e65db))
* Fixed pydantic error on SearchGraphs ([039ba2e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/039ba2e95a0067f37d421b348bad9775b2e76098))
* **ScreenshotScraper:** impose dynamic imports ([b8ef937](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b8ef93738ec4ae48c361fe5650df5194e845a2b1))
* **Ollama:** instance model from correct package ([398b2c5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/398b2c556faf518ca28ccc284bc8761a16281cf7))
* OmniScraerGraph working. ([c3d1b7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c3d1b7c200e6fd065bd5aea79b90ca3db4d42b16))
* parse node ([947ebd2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/947ebd2895408c5ebd00b9a3da1b220937553c4a))
* Parse Node scraping link and img urls allowing OmniScraper to work ([66a3b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66a3b6d6a3efdf1ee72b802fc9bf8175482c45bd))
* **SmartScraper:** pass llm_model to ParseNode ([5242166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52421665759032bcfad80ce540efebe5f47310f6))
* **DeepSeek:** proper model initialization ([74dfc69](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/74dfc693f6e487d20da58704284fe9f492d2b2aa))
* pyproject.toml dependencies ([b805aea](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b805aea1deb227e213bb9a027924d49058fefcc1))
* Refactor code to use CustomOpenAiCallbackManager for exclusive access to get_openai_callback ([e657113](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e657113ebc91336bb842f21e1ec74a952a0da6ba))
* Removed link_urls and img_ulrs from FetchNode output ([57337a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57337a0a8c86fb28c9ccbd70d41acfc9abea11f0))
* screenshot scraper ([388630c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/388630c0ffa2850c3d5ea47e62b71b41795203d8))
* screenshot_scraper ([ef7a589](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ef7a5891dcb1b4ed8a97947f5563fa78af917ecb))
* **ScreenShotScraper:** static import of optional dependencies ([52fe441](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52fe441c5af9c728983a2c3cd880fe9afcb5d428))
* temporary fix for parse_node ([f2bb22d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f2bb22d8e9b3ac5c1560793a6ec09f9ae4f257d3))
* update all nodes that were using MergeNode or IteratorNode ([a92dddb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a92dddb3e02549ee62ef6828fb55f5902470a3b4))
* update generate answernode ([c348f67](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c348f674ad0caae4f4dc04e194fae9634e01b621))
### chore
* **examples:** create Together AI examples ([34942de](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/34942deca514df53e8aa1c7f96f812ee78b994bf))
### Docs
* Updated the graph_config in the documentation. ([57a58e1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57a58e162e254828d890e1a110cb5d3d4beb03df))
### CI
* **release:** 1.16.0-beta.1 [skip ci] ([d7f6036](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d7f6036f907eda8d1faa0944da4d1d168ca4c40e))
* **release:** 1.16.0-beta.2 [skip ci] ([1c37d5d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c37d5db1c637f791133df254838a0deade6d6be))
* **release:** 1.16.0-beta.3 [skip ci] ([886c987](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/886c987172bb57fb59863e4d7b494797bba16980))
* **release:** 1.16.0-beta.4 [skip ci] ([ba5c7ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba5c7adcea138d993005377f4cfe438795e1b124))
* **release:** 1.17.0-beta.1 [skip ci] ([13efd4e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/13efd4e3a4175e85e7c41f5d575a249c27ecbf1d))
* **release:** 1.17.0-beta.10 [skip ci] ([af28885](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/af2888539e4ce83ab5f52b5c605ecc3472b14aff))
* **release:** 1.17.0-beta.11 [skip ci] ([a73fec5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a73fec5a98f5e646dd8f7d08dfe2dd0dbe067a94))
* **release:** 1.17.0-beta.2 [skip ci] ([08afc92](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/08afc9292ea8ae227b75f640db3d4dd097265482))
* **release:** 1.17.0-beta.3 [skip ci] ([fc55418](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fc55418a4511389d053e8c6b9a28878a3bc91fe6))
* **release:** 1.17.0-beta.4 [skip ci] ([5e99071](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e990719cfc9e063fc2253fc70b3da14fae49360))
* **release:** 1.17.0-beta.5 [skip ci] ([16ab1bf](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/16ab1bf3d920ae8e3dbac372f075e4853200a0e9))
* **release:** 1.17.0-beta.6 [skip ci] ([50c9c6b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/50c9c6bd8ca67d3d4d83ca3717085042e8a51bc5))
* **release:** 1.17.0-beta.7 [skip ci] ([4347afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4347afb8d4d93f600221d8f77c2701361f0f96a2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* **release:** 1.17.0-beta.8 [skip ci] ([85c374e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/85c374e4b38f825af20e9e3d095c3a467025fdca))
* **release:** 1.17.0-beta.9 [skip ci] ([77d0fd3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/77d0fd3dba8d52aff8321ab5ff1a1cc8b92b0837))
* **release:** 1.19.0-beta.1 [skip ci] ([eddcb79](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/eddcb79486af1bfebc28659d491e01bcb313f8ab)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633) [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* **release:** 1.19.0-beta.10 [skip ci] ([92f5df2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/92f5df2828b615f23ac3524f9328180a8029f8d0))
* **release:** 1.19.0-beta.11 [skip ci] ([edfb185](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/edfb1850edc9c1ef0ee139408b5d538366fd5941))
* **release:** 1.19.0-beta.12 [skip ci] ([bd2afef](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bd2afef87ee559cce9be9f0890c985491f836851))
* **release:** 1.19.0-beta.2 [skip ci] ([23a260c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/23a260c51e1ee64229af18bd292aa130d874fa66))
* **release:** 1.19.0-beta.3 [skip ci] ([38cba96](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/38cba96ea355dfc9280dfd004360b15e342e3839))
* **release:** 1.19.0-beta.4 [skip ci] ([24c38f9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/24c38f945a77ca321586409a8f83813f8f5fed81))
* **release:** 1.19.0-beta.5 [skip ci] ([7621a7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7621a7c7b74261fef25a68ee0eda36496a025ead))
* **release:** 1.19.0-beta.6 [skip ci] ([ed8e173](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ed8e1738c3aa750fae1d99d1370193a22391dc17))
* **release:** 1.19.0-beta.7 [skip ci] ([4ab26a2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4ab26a24a3b7738505ea43d11e247c8859a6c666))
* **release:** 1.19.0-beta.8 [skip ci] ([88b2c46](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/88b2c469ae42d543ac8ab7adc3a10957fa3bacf3))
* **release:** 1.19.0-beta.9 [skip ci] ([7ad6f21](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7ad6f21ee28635f75c05038f1344d182c6ae7e3a))
* add grok integration for ollama ([59aa251](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/59aa2510e18a81e72ae28ed2a0c6870db359bfee))
## [1.19.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.18.3...v1.19.0) (2024-09-13)
### Features
* integration of o1 ([5c25da2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5c25da2fe64b4b64a00f1879f3d5dcfbf1512848))
## [1.19.0-beta.12](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.11...v1.19.0-beta.12) (2024-09-14)
### Bug Fixes
* Refactor code to use CustomOpenAiCallbackManager for exclusive access to get_openai_callback ([e657113](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e657113ebc91336bb842f21e1ec74a952a0da6ba))
### Docs
* added telemetry info ([62912c2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/62912c263ec7144e2d509925593027a60d258672))
## [1.19.0-beta.11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.10...v1.19.0-beta.11) (2024-09-13)
### Features
* add copy for smart_scraper_multi_concat ([9e3171b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9e3171b9fa263aa4a5a6fba2d9c8079d4e918490))
## [1.19.0-beta.10](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.9...v1.19.0-beta.10) (2024-09-13)
### Bug Fixes
* Added support for nested structure ([66ea166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66ea166438166a00a8b093c749f201694ab3a7be))
* Fixed pydantic error on SearchGraphs ([039ba2e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/039ba2e95a0067f37d421b348bad9775b2e76098))
* update all nodes that were using MergeNode or IteratorNode ([a92dddb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a92dddb3e02549ee62ef6828fb55f5902470a3b4))
## [1.19.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.8...v1.19.0-beta.9) (2024-09-13)
### Bug Fixes
* OmniScraerGraph working. ([c3d1b7c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c3d1b7c200e6fd065bd5aea79b90ca3db4d42b16))
## [1.19.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.7...v1.19.0-beta.8) (2024-09-12)
### Features
* refactoring of the tokenization function ([ec6b164](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ec6b164653250fdf01fd4db1454ea7534822f9cf))
## [1.19.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.6...v1.19.0-beta.7) (2024-09-12)
### Bug Fixes
* pyproject.toml dependencies ([b805aea](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b805aea1deb227e213bb9a027924d49058fefcc1))
## [1.19.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.5...v1.19.0-beta.6) (2024-09-12)
### Bug Fixes
* models tokens ([039fe3c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/039fe3c6d91978f70baedfef407bda912a285aed))
### Docs
* Updated the graph_config in the documentation. ([57a58e1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57a58e162e254828d890e1a110cb5d3d4beb03df))
### CI
* **release:** 1.18.2 [skip ci] ([e1a9caa](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e1a9caa905f2a62d5b245a0abbcf4d304bd24de3))
* **release:** 1.18.3 [skip ci] ([4bd4659](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4bd4659dc15ae5c7f71702ad6acab200c2a64921))
### Bug Fixes
* models tokens ([039fe3c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/039fe3c6d91978f70baedfef407bda912a285aed))
## [1.18.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.18.1...v1.18.2) (2024-09-10)
* models tokens ([b2be6b7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b2be6b739e0a6b71e16867f751012bc2d95f72c9))
## [1.19.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.3...v1.19.0-beta.4) (2024-09-10)
### Features
* removed semchunk and used tikton ([1a7f21f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1a7f21fbf34dc9ef17bca683e2139a88eed70b16))
## [1.19.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.2...v1.19.0-beta.3) (2024-09-10)
### Bug Fixes
* parse node ([947ebd2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/947ebd2895408c5ebd00b9a3da1b220937553c4a))
## [1.19.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.19.0-beta.1...v1.19.0-beta.2) (2024-09-09)
### Features
* return urls in searchgraph ([afb6eb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/afb6eb7e4796ab208a050ad04ad96a83406f7fa1))
### Bug Fixes
* temporary fix for parse_node ([f2bb22d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f2bb22d8e9b3ac5c1560793a6ec09f9ae4f257d3))
## [1.19.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.18.1...v1.19.0-beta.1) (2024-09-08)
### Features
* **AbstractGraph:** add adjustable rate limit ([2859fb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2859fb72d699f26b617ed2f949cdcfca1671c5c8))
* add scrape_do_integration ([94e69a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/94e69a051591aeec1e7268bf0d5e0338f90e9539))
* add togheterai ([8f615ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8f615adef320dacdd214a184981384dd05df8171))
* ConcatNode.py added for heavy merge operations ([bd4b26d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bd4b26d7d7c1a7953d1bc9d78b436007880028c9))
* fetch_node improved ([167f970](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/167f97040f081867cecff542c3af8aa122499ce8))
### Bug Fixes
* **AbstractGraph:** Bedrock init issues ([63a5d18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/63a5d18486789ce1b4a8f5ea661fc83779fceca2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* correctly parsing output when using structured_output ([8e74ac5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8e74ac55a16ca012b52affbc754e4b04130e65db))
* **ScreenshotScraper:** impose dynamic imports ([b8ef937](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b8ef93738ec4ae48c361fe5650df5194e845a2b1))
* **Ollama:** instance model from correct package ([398b2c5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/398b2c556faf518ca28ccc284bc8761a16281cf7))
* Parse Node scraping link and img urls allowing OmniScraper to work ([66a3b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66a3b6d6a3efdf1ee72b802fc9bf8175482c45bd))
* **SmartScraper:** pass llm_model to ParseNode ([5242166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52421665759032bcfad80ce540efebe5f47310f6))
* **DeepSeek:** proper model initialization ([74dfc69](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/74dfc693f6e487d20da58704284fe9f492d2b2aa))
* Removed link_urls and img_ulrs from FetchNode output ([57337a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57337a0a8c86fb28c9ccbd70d41acfc9abea11f0))
* screenshot scraper ([388630c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/388630c0ffa2850c3d5ea47e62b71b41795203d8))
* screenshot_scraper ([ef7a589](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ef7a5891dcb1b4ed8a97947f5563fa78af917ecb))
* **ScreenShotScraper:** static import of optional dependencies ([52fe441](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52fe441c5af9c728983a2c3cd880fe9afcb5d428))
* update generate answernode ([c348f67](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c348f674ad0caae4f4dc04e194fae9634e01b621))
### chore
* **examples:** create Together AI examples ([34942de](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/34942deca514df53e8aa1c7f96f812ee78b994bf))
### CI
* **release:** 1.16.0-beta.1 [skip ci] ([d7f6036](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d7f6036f907eda8d1faa0944da4d1d168ca4c40e))
* **release:** 1.16.0-beta.2 [skip ci] ([1c37d5d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c37d5db1c637f791133df254838a0deade6d6be))
* **release:** 1.16.0-beta.3 [skip ci] ([886c987](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/886c987172bb57fb59863e4d7b494797bba16980))
* **release:** 1.16.0-beta.4 [skip ci] ([ba5c7ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba5c7adcea138d993005377f4cfe438795e1b124))
* **release:** 1.17.0-beta.1 [skip ci] ([13efd4e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/13efd4e3a4175e85e7c41f5d575a249c27ecbf1d))
* **release:** 1.17.0-beta.10 [skip ci] ([af28885](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/af2888539e4ce83ab5f52b5c605ecc3472b14aff))
* **release:** 1.17.0-beta.11 [skip ci] ([a73fec5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a73fec5a98f5e646dd8f7d08dfe2dd0dbe067a94))
* **release:** 1.17.0-beta.2 [skip ci] ([08afc92](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/08afc9292ea8ae227b75f640db3d4dd097265482))
* **release:** 1.17.0-beta.3 [skip ci] ([fc55418](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fc55418a4511389d053e8c6b9a28878a3bc91fe6))
* **release:** 1.17.0-beta.4 [skip ci] ([5e99071](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e990719cfc9e063fc2253fc70b3da14fae49360))
* **release:** 1.17.0-beta.5 [skip ci] ([16ab1bf](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/16ab1bf3d920ae8e3dbac372f075e4853200a0e9))
* **release:** 1.17.0-beta.6 [skip ci] ([50c9c6b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/50c9c6bd8ca67d3d4d83ca3717085042e8a51bc5))
* **release:** 1.17.0-beta.7 [skip ci] ([4347afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4347afb8d4d93f600221d8f77c2701361f0f96a2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
* **release:** 1.17.0-beta.8 [skip ci] ([85c374e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/85c374e4b38f825af20e9e3d095c3a467025fdca))
* **release:** 1.17.0-beta.9 [skip ci] ([77d0fd3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/77d0fd3dba8d52aff8321ab5ff1a1cc8b92b0837))
## [1.18.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.18.0...v1.18.1) (2024-09-08)
### Bug Fixes
* **browser_base_fetch:** correct function signature and async_mode handling ([007ff08](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/007ff084c68d419fac040d9b5cca3980458cfabc))
## [1.18.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0...v1.18.0) (2024-09-08)
### Features
* **browser_base_fetch:** add async_mode to support both synchronous and asynchronous execution ([d56253d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d56253d183969584cacc0cb164daa0152462f21c))
## [1.17.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.16.0...v1.17.0) (2024-09-08)
### Features
* **docloaders:** Enhance browser_base_fetch function flexibility ([57fd01f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57fd01f9a76ea8ea69ec04b7238ab58ca72ac8f4))
### Docs
* **sponsor:** 🅱️ Browserbase sponsor 🅱️ ([a540139](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a5401394cc939d9a5fc58b8a9145141c2f047bab))
* **AbstractGraph:** add adjustable rate limit ([2859fb7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2859fb72d699f26b617ed2f949cdcfca1671c5c8))
## [1.17.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0-beta.6...v1.17.0-beta.7) (2024-09-05)
### Bug Fixes
* **AbstractGraph:** Bedrock init issues ([63a5d18](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/63a5d18486789ce1b4a8f5ea661fc83779fceca2)), closes [#633](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/633)
## [1.17.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0-beta.5...v1.17.0-beta.6) (2024-09-04)
### Bug Fixes
* **ScreenShotScraper:** static import of optional dependencies ([52fe441](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52fe441c5af9c728983a2c3cd880fe9afcb5d428))
## [1.17.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0-beta.4...v1.17.0-beta.5) (2024-09-02)
### Bug Fixes
* correctly parsing output when using structured_output ([8e74ac5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8e74ac55a16ca012b52affbc754e4b04130e65db))
## [1.17.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0-beta.3...v1.17.0-beta.4) (2024-09-02)
### Bug Fixes
* Parse Node scraping link and img urls allowing OmniScraper to work ([66a3b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66a3b6d6a3efdf1ee72b802fc9bf8175482c45bd))
* Removed link_urls and img_ulrs from FetchNode output ([57337a0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/57337a0a8c86fb28c9ccbd70d41acfc9abea11f0))
## [1.17.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0-beta.2...v1.17.0-beta.3) (2024-09-02)
### Bug Fixes
* **ScreenshotScraper:** impose dynamic imports ([b8ef937](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b8ef93738ec4ae48c361fe5650df5194e845a2b1))
* **SmartScraper:** pass llm_model to ParseNode ([5242166](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/52421665759032bcfad80ce540efebe5f47310f6))
## [1.17.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.17.0-beta.1...v1.17.0-beta.2) (2024-09-02)
### Bug Fixes
* **Ollama:** instance model from correct package ([398b2c5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/398b2c556faf518ca28ccc284bc8761a16281cf7))
* **DeepSeek:** proper model initialization ([74dfc69](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/74dfc693f6e487d20da58704284fe9f492d2b2aa))
* screenshot scraper ([388630c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/388630c0ffa2850c3d5ea47e62b71b41795203d8))
## [1.17.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.16.0...v1.17.0-beta.1) (2024-09-02)
### Features
* add togheterai ([8f615ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8f615adef320dacdd214a184981384dd05df8171))
### Bug Fixes
* update generate answernode ([c348f67](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c348f674ad0caae4f4dc04e194fae9634e01b621))
### chore
* **examples:** create Together AI examples ([34942de](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/34942deca514df53e8aa1c7f96f812ee78b994bf))
### CI
* **release:** 1.16.0-beta.1 [skip ci] ([d7f6036](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d7f6036f907eda8d1faa0944da4d1d168ca4c40e))
* **release:** 1.16.0-beta.2 [skip ci] ([1c37d5d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1c37d5db1c637f791133df254838a0deade6d6be))
* **release:** 1.16.0-beta.3 [skip ci] ([886c987](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/886c987172bb57fb59863e4d7b494797bba16980))
* **release:** 1.16.0-beta.4 [skip ci] ([ba5c7ad](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ba5c7adcea138d993005377f4cfe438795e1b124))
## [1.16.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.2...v1.16.0) (2024-09-01)
### Features
* add deepcopy error ([71b22d4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/71b22d48804c462798109bb47ec792a5a3c70b6e))
### Bug Fixes
* deepcopy fail for coping model_instance config ([cd07418](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cd07418474112cecd53ab47866262f2f31294223))
* fix pydantic object copy ([553527a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/553527a269cdd70c0c174ad5c78cbf35c00b22c1))
## [1.15.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.1...v1.15.2) (2024-09-01)
## [1.16.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.16.0-beta.2...v1.16.0-beta.3) (2024-09-01)
### Bug Fixes
* pyproject.toml ([360ce1c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/360ce1c0e468c959e63555120ac7cecf55563846))
### CI
* **release:** 1.15.2 [skip ci] ([d88730c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d88730ccc7190d09a54e6c24db1644512b576430))
## [1.15.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.1...v1.15.2) (2024-09-01)
### Bug Fixes
* pyproject.toml ([360ce1c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/360ce1c0e468c959e63555120ac7cecf55563846))
## [1.15.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0...v1.15.1) (2024-08-28)
### Bug Fixes
* abstract graph local model ([04128e7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/04128e7e9f585aaf774fabf646c4d9d3b96b8333))
* **models:** better DeepSeek and OneApi integration ([f7a85c2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f7a85c266ae758cc16297ebc5d98f8919a80c523))
* **docloaders:** BrowserBase dynamic import ([5c16ee9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5c16ee985b11948c6a8c1dbfd051d458fa193973))
* bug for abstract graph ([cf73883](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf73883451729b19034005ee7ebe618c1e256a11))
* **AbstractGraph:** correct and simplify instancing logic ([f73343f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f73343f19386b31878706963597c2565a023068d))
* **BurrBrige:** dynamic imports ([7789663](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7789663338a89d27fde322ae282ce07ccca16845))
* **AbstractGraph:** model selection bug ([4f120e2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f120e29c546373a2cc06c102cc9886cc5270c06))
* set up dynamic imports correctly ([83e71df](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/83e71df2e2cb3b6bfba11f8879d5c4917a3e1837))
### chore
* **examples:** update model names ([f6df9b7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f6df9b75125b4cacbef4af29faf3e17a13ff108c))
* update README.md ([5f562b8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5f562b89bd63eba1300afe98572f152a0621b370))
### Test
* **AbstractGraph:** add AbstractGraph tests ([229d74d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/229d74d4bd39befa3723fa2841e23d40007a9772))
### CI
* **release:** 1.15.0-beta.4 [skip ci] ([c1ce9c6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c1ce9c69d4ba746d488891d18fa64460e76124bf))
* **release:** 1.15.0-beta.5 [skip ci] ([22ab45f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/22ab45f6bda3a12ab01c743fd124448a2e26cd46))
* **release:** 1.15.0-beta.6 [skip ci] ([050fa3f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/050fa3faa02cb2a86ce7c0f61c99e4fa8cf3f9a5))
* **release:** 1.15.0-beta.7 [skip ci] ([be3f1ec](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/be3f1ec58d6354d583401f51f310f6aac987a393))
* **release:** 1.15.0-beta.8 [skip ci] ([dbec550](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/dbec55064feac8dfe01290bf82b5b47b013b589d))
* **release:** 1.15.1-beta.1 [skip ci] ([8f38a6b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8f38a6bf15c2138471d7bdb9e0236f02389d93bb))
## [1.15.1-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0...v1.15.1-beta.1) (2024-08-28)
### Bug Fixes
* abstract graph local model ([04128e7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/04128e7e9f585aaf774fabf646c4d9d3b96b8333))
* **models:** better DeepSeek and OneApi integration ([f7a85c2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f7a85c266ae758cc16297ebc5d98f8919a80c523))
* **docloaders:** BrowserBase dynamic import ([5c16ee9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5c16ee985b11948c6a8c1dbfd051d458fa193973))
* bug for abstract graph ([cf73883](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf73883451729b19034005ee7ebe618c1e256a11))
* **AbstractGraph:** correct and simplify instancing logic ([f73343f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f73343f19386b31878706963597c2565a023068d))
* **BurrBrige:** dynamic imports ([7789663](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7789663338a89d27fde322ae282ce07ccca16845))
* **AbstractGraph:** model selection bug ([4f120e2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f120e29c546373a2cc06c102cc9886cc5270c06))
* set up dynamic imports correctly ([83e71df](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/83e71df2e2cb3b6bfba11f8879d5c4917a3e1837))
### chore
* **examples:** update model names ([f6df9b7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f6df9b75125b4cacbef4af29faf3e17a13ff108c))
* update README.md ([5f562b8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5f562b89bd63eba1300afe98572f152a0621b370))
### Test
* **AbstractGraph:** add AbstractGraph tests ([229d74d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/229d74d4bd39befa3723fa2841e23d40007a9772))
### CI
* **release:** 1.15.0-beta.4 [skip ci] ([c1ce9c6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c1ce9c69d4ba746d488891d18fa64460e76124bf))
* **release:** 1.15.0-beta.5 [skip ci] ([22ab45f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/22ab45f6bda3a12ab01c743fd124448a2e26cd46))
* **release:** 1.15.0-beta.6 [skip ci] ([050fa3f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/050fa3faa02cb2a86ce7c0f61c99e4fa8cf3f9a5))
* **release:** 1.15.0-beta.7 [skip ci] ([be3f1ec](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/be3f1ec58d6354d583401f51f310f6aac987a393))
* **release:** 1.15.0-beta.8 [skip ci] ([dbec550](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/dbec55064feac8dfe01290bf82b5b47b013b589d))
## [1.15.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0-beta.7...v1.15.0-beta.8) (2024-08-28)
### Bug Fixes
* **models:** better DeepSeek and OneApi integration ([f7a85c2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f7a85c266ae758cc16297ebc5d98f8919a80c523))
* **AbstractGraph:** model selection bug ([4f120e2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4f120e29c546373a2cc06c102cc9886cc5270c06))
## [1.15.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0-beta.6...v1.15.0-beta.7) (2024-08-27)
### Bug Fixes
* bug for abstract graph ([cf73883](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf73883451729b19034005ee7ebe618c1e256a11))
## [1.15.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0-beta.5...v1.15.0-beta.6) (2024-08-27)
### Bug Fixes
* **docloaders:** BrowserBase dynamic import ([5c16ee9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5c16ee985b11948c6a8c1dbfd051d458fa193973))
* **AbstractGraph:** correct and simplify instancing logic ([f73343f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f73343f19386b31878706963597c2565a023068d))
* **BurrBrige:** dynamic imports ([7789663](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7789663338a89d27fde322ae282ce07ccca16845))
* set up dynamic imports correctly ([83e71df](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/83e71df2e2cb3b6bfba11f8879d5c4917a3e1837))
### chore
* **examples:** update model names ([f6df9b7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f6df9b75125b4cacbef4af29faf3e17a13ff108c))
### Test
* **AbstractGraph:** add AbstractGraph tests ([229d74d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/229d74d4bd39befa3723fa2841e23d40007a9772))
## [1.15.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0-beta.4...v1.15.0-beta.5) (2024-08-26)
### Bug Fixes
* abstract graph local model ([04128e7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/04128e7e9f585aaf774fabf646c4d9d3b96b8333))
## [1.15.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0-beta.3...v1.15.0-beta.4) (2024-08-26)
## [1.15.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.1...v1.15.0) (2024-08-26)
### Features
* ligthweigthing the library ([62f32e9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/62f32e994bcb748dfef4f7e1b2e5213a989c33cc))
### Bug Fixes
* abstract graph ([cf1fada](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf1fada36a6716cb0e24bbc5da7509446a964145))
* **models_tokens:** add llama2 and llama3 sizes explicitly ([b05ec16](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b05ec16b252d00c9c9ee7c6d4605b420851c7754))
* Azure OpenAI issue ([a92b9c6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a92b9c6970049a4ba9dbdf8eff3eeb7f98c6c639))
* update abstract graph ([86fe5fc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/86fe5fcaf1a6ba28786678874378f07fba1db40f))
### CI
* **release:** 1.14.1-beta.1 [skip ci] ([1b48871](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1b488715e698888423eb65f43fdf768bb0729602))
* **release:** 1.15.0-beta.1 [skip ci] ([06dc640](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/06dc640d44449d1b394829e546a64e38a3d3629e))
* **release:** 1.15.0-beta.2 [skip ci] ([ab21576](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ab215764353773c5303b88743c6cca4fa7e1b52e))
* **release:** 1.15.0-beta.3 [skip ci] ([132ee5b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/132ee5b7daf36ef376bfbc63bc6dc7f2332fdd6b))
### Bug Fixes
* add claude3.5 sonnet ([ee8f8b3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ee8f8b31ecfe4ffd311528d2f48cb055e4609d99))
### CI
* **release:** 1.14.1 [skip ci] ([88e76ce](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/88e76ceedb39dc1b41222e9a5cb8a6f0d81cadf4))
## [1.14.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0...v1.14.1) (2024-08-24)
### Bug Fixes
* update abstract graph ([86fe5fc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/86fe5fcaf1a6ba28786678874378f07fba1db40f))
## [1.15.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.15.0-beta.1...v1.15.0-beta.2) (2024-08-23)
### Bug Fixes
* abstract graph ([cf1fada](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf1fada36a6716cb0e24bbc5da7509446a964145))
### Docs
* added sponsors ([b3a2d0d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b3a2d0d65a41f6e645fac3fc84f702fdf64b951c))
#
## [1.14.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.3...v1.14.0) (2024-08-20)
### Features
* add async call ([f60aa3a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f60aa3acde3c9bead2250e81eb8fc77d2e1e450c))
* add integration for new module of gpt4o ([982150e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/982150e81fbaa4241c725aaa9dfcd553f8b86978))
* Add new feature to support gpt-4o variant models with different pricing ([8551448](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/855144876d796ceebb0930fec45ead6cc3834f14))
* add refactoring of default temperature ([6c3b37a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6c3b37ab001b80c09ea9ffb56d4c3df338e33a7a))
* add structured output format ([7d2fc67](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7d2fc672c8c3c05b0f0beac46316ce16c16bcd02))
* **GenerateAnswerNode:** built-in structured output through LangChain ([d29338b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d29338b7c2ef0b13535a2e4edae4a4aab08f1825))
* Implemented a filter logic in search_link_node.py ([08e9d9d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/08e9d9d6a09f450a9f512ac2789287819ced9641))
* refactoring of the code ([5eb3cff](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5eb3cff64f5becf7e107325117364b67b5fe7348))
* update abstract graph ([c77231c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c77231c983bd6e154eefd26422cd156da4c8b7bb))
* update model tokens dict ([0aca287](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0aca28732b249ffaedf5b665cbfb5b1255c0cc74))
### Bug Fixes
* broken node ([1272273](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/127227349915deeb0dede34aa575ad269ed7cbe3))
* browser-base integration ([1d7f30b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1d7f30b65b24b80113cd898c1cfbfd5de5f240b5))
* **models_tokens:** incorrect provider names ([cb6b353](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cb6b35397e56c6785553480200aa948053d9904b))
* **ParseNode:** leave room for LLM reply in context window ([683bf57](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/683bf57d895d8f6847fdd64e8936ffa1aa91926a))
* merge_anwser prompt import ([f17cef9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f17cef94bb39349d40cc520d93b51ac4e629db32))
* model count ([faef318](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/faef3186f795e950ade14bc8b6d8d1cea3afd327))
* **AbstractGraph:** pass kwargs to Ernie and Nvidia models ([e6bedb6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e6bedb6701601e87a6dff99eabec9c3494280411))
* **SearchNode:** prompt ([052f7d5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/052f7d5e66436c97e17491c00b86c382642490b6))
### chore
* **examples:** add vertex examples, rename genai examples ([1aa9c6e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1aa9c6e73bfa26b83010cf8d980cdf5f572cde5a))
* **examples:** fix import bug in image2text demo ([71438a1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/71438a1e8696aee51d054f9df7243665497fc35c))
* **examples:** update provider names to match tokens dictionary ([ee078cb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ee078cb102ad922a900228ebe5ea45724712a960))
* **requirements:** update requirements.txt ([7fe181f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7fe181f69b3178d2d9d41a00fd660a98e04b777e))
### CI
* **release:** 1.13.0-beta.8 [skip ci] ([b470d97](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b470d974cf3fdb3a75ead46fceb8c21525e2e616))
* **release:** 1.13.0-beta.9 [skip ci] ([d4c1a1c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d4c1a1c58a54740ff50aa87b1d1d3500b61ea088))
* **release:** 1.14.0-beta.1 [skip ci] ([40043f3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/40043f376e137474d1a2db5e88adaf2f582912a4))
* **release:** 1.14.0-beta.10 [skip ci] ([6a08cc8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6a08cc8a43b03d60417d97611bace5454ae0c05c))
* **release:** 1.14.0-beta.11 [skip ci] ([d617750](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d61775090a16c757e242822dbc9f2deeaac4fa36))
* **release:** 1.14.0-beta.12 [skip ci] ([fec3582](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fec358253bfc52fdc7824e70b22ac530973d5ccb))
* **release:** 1.14.0-beta.13 [skip ci] ([f4dbe5b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f4dbe5b84104981f9b3c005b4f65449df35fccb9))
* **release:** 1.14.0-beta.2 [skip ci] ([7fd921b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7fd921b99079c81d55d3911acd0efdb912f33466))
* **release:** 1.14.0-beta.3 [skip ci] ([3bf9c3c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3bf9c3c9e69cfac64d0a9e4f8286f841212d1839))
* **release:** 1.14.0-beta.4 [skip ci] ([7af1e45](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7af1e45565aa63d3e3d786373eb1c79adc971c9b))
* **release:** 1.14.0-beta.5 [skip ci] ([db3494d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/db3494d3779be20765cf1eb10dc37bffe3abbeaa))
* **release:** 1.14.0-beta.6 [skip ci] ([6730797](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6730797008c11d722a31db2098c816dc31c13d59))
* **release:** 1.14.0-beta.7 [skip ci] ([a6fcc1e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a6fcc1ea58cc08376dc71a8fdd08e419ce98feb8))
* **release:** 1.14.0-beta.8 [skip ci] ([d639a9e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d639a9e9cce72eb2efd4facafec557c2ed5890f9))
* **release:** 1.14.0-beta.9 [skip ci] ([2053693](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2053693eba74f328d27d3a9624ea9a68e97547d6))
## [1.14.0-beta.13](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.12...v1.14.0-beta.13) (2024-08-20)
### Features
* add async call ([f60aa3a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f60aa3acde3c9bead2250e81eb8fc77d2e1e450c))
* refactoring of the code ([5eb3cff](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5eb3cff64f5becf7e107325117364b67b5fe7348))
## [1.14.0-beta.12](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.11...v1.14.0-beta.12) (2024-08-20)
### Bug Fixes
* **SearchNode:** prompt ([052f7d5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/052f7d5e66436c97e17491c00b86c382642490b6))
## [1.14.0-beta.11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.10...v1.14.0-beta.11) (2024-08-19)
### Features
* add structured output format ([7d2fc67](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7d2fc672c8c3c05b0f0beac46316ce16c16bcd02))
* **GenerateAnswerNode:** built-in structured output through LangChain ([d29338b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d29338b7c2ef0b13535a2e4edae4a4aab08f1825))
### Bug Fixes
* **ParseNode:** leave room for LLM reply in context window ([683bf57](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/683bf57d895d8f6847fdd64e8936ffa1aa91926a))
## [1.14.0-beta.10](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.9...v1.14.0-beta.10) (2024-08-19)
### Features
* Implemented a filter logic in search_link_node.py ([08e9d9d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/08e9d9d6a09f450a9f512ac2789287819ced9641))
## [1.14.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.8...v1.14.0-beta.9) (2024-08-17)
### Features
* update model tokens dict ([0aca287](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0aca28732b249ffaedf5b665cbfb5b1255c0cc74))
## [1.14.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.7...v1.14.0-beta.8) (2024-08-17)
### Bug Fixes
* browser-base integration ([1d7f30b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1d7f30b65b24b80113cd898c1cfbfd5de5f240b5))
## [1.14.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.6...v1.14.0-beta.7) (2024-08-16)
### Bug Fixes
* model count ([faef318](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/faef3186f795e950ade14bc8b6d8d1cea3afd327))
## [1.14.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.5...v1.14.0-beta.6) (2024-08-16)
### Features
* add integration for new module of gpt4o ([982150e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/982150e81fbaa4241c725aaa9dfcd553f8b86978))
## [1.14.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.4...v1.14.0-beta.5) (2024-08-16)
### Features
* Add new feature to support gpt-4o variant models with different pricing ([8551448](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/855144876d796ceebb0930fec45ead6cc3834f14))
## [1.14.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.3...v1.14.0-beta.4) (2024-08-15)
### Features
* update abstract graph ([c77231c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/c77231c983bd6e154eefd26422cd156da4c8b7bb))
## [1.14.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.2...v1.14.0-beta.3) (2024-08-13)
### Bug Fixes
* **models_tokens:** incorrect provider names ([cb6b353](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cb6b35397e56c6785553480200aa948053d9904b))
### chore
* **examples:** add vertex examples, rename genai examples ([1aa9c6e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1aa9c6e73bfa26b83010cf8d980cdf5f572cde5a))
* **examples:** update provider names to match tokens dictionary ([ee078cb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ee078cb102ad922a900228ebe5ea45724712a960))
## [1.14.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.14.0-beta.1...v1.14.0-beta.2) (2024-08-12)
### Bug Fixes
* **AbstractGraph:** pass kwargs to Ernie and Nvidia models ([e6bedb6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e6bedb6701601e87a6dff99eabec9c3494280411))
### chore
* **examples:** fix import bug in image2text demo ([71438a1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/71438a1e8696aee51d054f9df7243665497fc35c))
* **requirements:** update requirements.txt ([7fe181f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7fe181f69b3178d2d9d41a00fd660a98e04b777e))
## [1.14.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.3...v1.14.0-beta.1) (2024-08-11)
### Features
* add refactoring of default temperature ([6c3b37a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6c3b37ab001b80c09ea9ffb56d4c3df338e33a7a))
### Bug Fixes
* broken node ([1272273](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/127227349915deeb0dede34aa575ad269ed7cbe3))
* merge_anwser prompt import ([f17cef9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f17cef94bb39349d40cc520d93b51ac4e629db32))
### CI
* **release:** 1.13.0-beta.8 [skip ci] ([b470d97](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b470d974cf3fdb3a75ead46fceb8c21525e2e616))
* **release:** 1.13.0-beta.9 [skip ci] ([d4c1a1c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d4c1a1c58a54740ff50aa87b1d1d3500b61ea088))
## [1.13.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.2...v1.13.3) (2024-08-10)
### Bug Fixes
* conditional node ([778efd4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/778efd4c87c69754bfbbf7a80d652f4cfd31a361))
## [1.13.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.1...v1.13.2) (2024-08-10)
### Bug Fixes
* fetch node ([f01b55e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f01b55e89b1365760f0dce4fa15ac0e74d280c57))
### chore
* update gemini model to "gemini-pro" ([a7264ce](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a7264cebd28857b4a13e7db2f27e80e5b57e4407))
## [1.13.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0...v1.13.1) (2024-08-09)
### Bug Fixes
* conditional node ([ce00345](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ce003454953e5785d4746223c252de38cd5d07ea))
## [1.13.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.12.2...v1.13.0) (2024-08-09)
## [1.13.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.8...v1.13.0-beta.9) (2024-08-10)
### Features
* add grok integration ([fa651d4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fa651d4cd9ab8ae9cf58280f1256ceb4171ef088))
* add mistral support ([17f2707](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/17f2707313f65a1e96443b3c8a1f5137892f2c5a))
* update base_graph ([0571b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0571b6da55920bfe691feef2e1ecb5f3760dabf7))
### Bug Fixes
* **chunking:** count tokens from words instead of characters ([5ec2de9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5ec2de9e1a14def5596738b6cdf769f5039a246d)), closes [#513](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/513)
* **FetchNode:** handling of missing browser_base key ([07720b6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/07720b6e0ca10ba6ce3c1359706a09baffcc4ad0))
* **AbstractGraph:** LangChain warnings handling, Mistral tokens ([786af99](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/786af992f8fbdadfdc3d2d6a06c0cfd81289f8f2))
* **FetchNode:** missing bracket syntax error ([50edbcc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/50edbcc7f80e419f72f3f69249fec4a37597ef9a))
* refactoring of fetch_node ([29ad140](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/29ad140fa399e9cdd98289a70506269db25fb599))
* refactoring of fetch_node adding comment ([bfc6852](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bfc6852b77b643e34543f7e436349f73d4ba1b5a))
* refactoring of fetch_node qixed error ([1ea2ad8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1ea2ad8e79e9777c60f86565ed4930ee46e1ca53))
* refactoring of merge_answer_node ([898e5a7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/898e5a7af504fbf4c1cabb14103e66184037de49))
### chore
* **models_tokens:** add mistral models ([5e82432](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e824327c3acb69d53f3519344d0f8c2e3defa8b))
* **mistral:** create examples ([f8ad616](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f8ad616e10c271443e2dcb4123c8ddb91de2ff69))
* **examples:** fix Mistral examples ([b0ffc51](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b0ffc51e5415caec562a565710f5195afe1fbcb2))
* update requirements for mistral ([9868555](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/986855512319541d1d02356df9ad61ab7fc5d807))
### CI
* **release:** 1.11.0-beta.11 [skip ci] ([579d3f3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/579d3f394b54636673baf8e9f619f1c57a2ecce4))
* **release:** 1.11.0-beta.12 [skip ci] ([cf2a17e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf2a17ed5d79c62271fd9ea8ec89793884b04b56))
* **release:** 1.13.0-beta.1 [skip ci] ([8eb66f6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/8eb66f6e22d6b53f0fb73d0da18302e7b00b99e3))
* **release:** 1.13.0-beta.2 [skip ci] ([684d01a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/684d01a2cb979c076a0f9d64855debd79b32ad58))
* **release:** 1.13.0-beta.3 [skip ci] ([6b053cf](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6b053cfc95655f122baef999325888c13f4af883))
* **release:** 1.13.0-beta.4 [skip ci] ([7f1f750](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7f1f7503f7c83c2e4d41a906fb3aa6012a2e0f52))
* **release:** 1.13.0-beta.5 [skip ci] ([2eba73b](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2eba73b784ee443260117e98ab7c943934b3018d)), closes [#513](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/513)
* **release:** 1.13.0-beta.6 [skip ci] ([e75b574](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e75b574b67040e127599da9ee1b0eee13d234cb9))
* **release:** 1.13.0-beta.7 [skip ci] ([6e56925](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6e56925355c424edae290c70fd98646ab5f420ee))
* add refactoring of default temperature ([6c3b37a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/6c3b37ab001b80c09ea9ffb56d4c3df338e33a7a))
## [1.13.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.7...v1.13.0-beta.8) (2024-08-09)
### Bug Fixes
* broken node ([1272273](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/127227349915deeb0dede34aa575ad269ed7cbe3))
## [1.13.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.6...v1.13.0-beta.7) (2024-08-09)
### Bug Fixes
* generate answer node omni ([b52e4a3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b52e4a390bb23ca55922e47046db558e1969a047))
* generate answer node pdf has a bug ([625ca9f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/625ca9f22a91a292a844ddb45e0edc767bf24711))
### CI
* **release:** 1.12.1 [skip ci] ([928f704](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/928f7040ab1ef3a87f1cbad599b888940fa835c4))
* **release:** 1.12.2 [skip ci] ([ece605e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ece605e3ee0aa110501f6642eb687831a4d0660b))
## [1.12.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.12.1...v1.12.2) (2024-08-07)
### Bug Fixes
* generate answer node omni ([b52e4a3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b52e4a390bb23ca55922e47046db558e1969a047))
## [1.12.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.12.0...v1.12.1) (2024-08-07)
* **FetchNode:** missing bracket syntax error ([50edbcc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/50edbcc7f80e419f72f3f69249fec4a37597ef9a))
## [1.13.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.4...v1.13.0-beta.5) (2024-08-08)
### Bug Fixes
* generate answer node pdf has a bug ([625ca9f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/625ca9f22a91a292a844ddb45e0edc767bf24711))
* **chunking:** count tokens from words instead of characters ([5ec2de9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5ec2de9e1a14def5596738b6cdf769f5039a246d)), closes [#513](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/513)
## [1.13.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.3...v1.13.0-beta.4) (2024-08-07)
### Bug Fixes
* refactoring of merge_answer_node ([898e5a7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/898e5a7af504fbf4c1cabb14103e66184037de49))
## [1.13.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.2...v1.13.0-beta.3) (2024-08-07)
### Features
* add mistral support ([17f2707](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/17f2707313f65a1e96443b3c8a1f5137892f2c5a))
### Bug Fixes
* **FetchNode:** handling of missing browser_base key ([07720b6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/07720b6e0ca10ba6ce3c1359706a09baffcc4ad0))
* **AbstractGraph:** LangChain warnings handling, Mistral tokens ([786af99](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/786af992f8fbdadfdc3d2d6a06c0cfd81289f8f2))
### chore
* **models_tokens:** add mistral models ([5e82432](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e824327c3acb69d53f3519344d0f8c2e3defa8b))
* **mistral:** create examples ([f8ad616](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f8ad616e10c271443e2dcb4123c8ddb91de2ff69))
* **examples:** fix Mistral examples ([b0ffc51](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b0ffc51e5415caec562a565710f5195afe1fbcb2))
* update requirements for mistral ([9868555](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/986855512319541d1d02356df9ad61ab7fc5d807))
## [1.13.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.13.0-beta.1...v1.13.0-beta.2) (2024-08-07)
### Bug Fixes
* refactoring of fetch_node ([29ad140](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/29ad140fa399e9cdd98289a70506269db25fb599))
* refactoring of fetch_node adding comment ([bfc6852](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bfc6852b77b643e34543f7e436349f73d4ba1b5a))
* refactoring of fetch_node qixed error ([1ea2ad8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1ea2ad8e79e9777c60f86565ed4930ee46e1ca53))
## [1.13.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.12.0...v1.13.0-beta.1) (2024-08-06)
### Features
* add grok integration ([fa651d4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fa651d4cd9ab8ae9cf58280f1256ceb4171ef088))
* update base_graph ([0571b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0571b6da55920bfe691feef2e1ecb5f3760dabf7))
### CI
* **release:** 1.11.0-beta.11 [skip ci] ([579d3f3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/579d3f394b54636673baf8e9f619f1c57a2ecce4))
* **release:** 1.11.0-beta.12 [skip ci] ([cf2a17e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cf2a17ed5d79c62271fd9ea8ec89793884b04b56))
## [1.12.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.3...v1.12.0) (2024-08-06)
### Features
* add generate_answer node paralellization ([0c4b290](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c4b2908d98efbb2b0a6faf68618a801d726bb5f))
* add integration in the abstract grapgh ([5ecdbe7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5ecdbe715f4bb223fa1be834fda07ccea2a51cb9))
* fix tests ([1db164e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1db164e9e682eefbc1414989a043fefa2e9009c2))
* intregration of firebase ([4caed54](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4caed545e5030460b2d5e46f9ad90546ce36f0ee))
* pdate models_tokens.py ([377d679](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/377d679eecd62611c0c9a3cba8202c6f0719ed31))
* refactoring of the code ([9355507](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9355507a2dc73342f325b6649e871df48ae13567))
### Bug Fixes
* abstract_graph and removed unused embeddings ([0b4cfd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0b4cfd6522dcad0eb418f0badd0f7824a1efd534))
* add llama 3.1 ([f336c95](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f336c95c2d1833d1f829d61ae7fa415ac2caf250))
* fixed bug on fetch_node ([968c69e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/968c69e217d9c180b9b8c2aa52ca59b9a1733525))
* **AbstractGraph:** instantiation of Azure GPT models ([ade28fc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ade28fca2c3fdf40f28a80854e3b8435a52a6930)), closes [#498](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/498)
* pyproject.toml ([e90fad4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e90fad44ce53e34a73270619255cc392eed81a06))
* rebuild pyproject, requirements and lockfiles ([1193984](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1193984434dea0ad70ff6b975ac778d56d2e1688))
### chore
* rebuild requirements ([2edad66](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2edad66788cbd92f197e3b37db13c44bfa39e36a))
* remove unused import ([88710f1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/88710f1a7c7d50f57108456112da30d1a12a1ba1))
* set dependency version for vertexai ([971cc2d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/971cc2da04e331ebca1f93048c78bc58b452d30a))
* update pyproject, rebuild lockfiles ([d6312bf](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d6312bfc9b2d68370727645b1ce5010ff7a626c0))
### Refactor
* **Ollama:** integrate new LangChain chat init ([d177afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d177afb68be036465ede1f567d2562b145d77d36))
* **OpenAI:** integrate new LangChain chat init ([5e3eb6e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e3eb6e43df4bd4c452d34b49f254235e9ff1b22))
* move embeddings code from AbstractGraph to RAGNode ([a94ebcd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a94ebcde0078d66d33e67f7e0a87850efb92d408))
* remove LangChain wrappers ([2c5f934](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2c5f934f101e319ec4e61009d4c464ca4626c1ff))
* remove LangChain wrappers for Ollama ([25066b2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/25066b2bc51517e50058231664230b8edef365b9))
* remove redundant LangChain wrappers ([9275486](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/927548624034b3c30eca60011d216720102d1815))
* remove redundant wrappers for Ernie and Nvidia ([bc2c996](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bc2c9967d2f13ade6eeb7b23e9b423f6e79aa890))
* reuse code for common interface models ([bb73d91](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bb73d916a1a7b378438038ec928eeda6d8f6ac9d))
### CI
* **release:** 1.11.0-beta.1 [skip ci] ([7080a0a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/7080a0afd527a34ada33ee2d3ace8e724d879df7))
* **release:** 1.11.0-beta.10 [skip ci] ([ee30a83](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ee30a83f8a77958be6881ca0a94b02d278f37a61)), closes [#498](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/498)
* **release:** 1.11.0-beta.2 [skip ci] ([bf6d487](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bf6d487bbb26187b32f5985433b54025f6437af5))
* **release:** 1.11.0-beta.3 [skip ci] ([66f9421](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/66f9421fc216f0984d5a393101d1c109b08eaa33))
* **release:** 1.11.0-beta.4 [skip ci] ([51db43a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/51db43a129ef05c050b6de017598a664119594ba))
* **release:** 1.11.0-beta.5 [skip ci] ([b15fd9f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/b15fd9f4dc3643c9904a2cbaa5f392a6805c9762))
* **release:** 1.11.0-beta.6 [skip ci] ([74ed8d0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/74ed8d06c5db4f9734521c2f84f4379b18b7308f))
* **release:** 1.11.0-beta.7 [skip ci] ([55f706f](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/55f706f3d5f4a8afe9dd8fc9ce9bd527f8a11894))
* **release:** 1.11.0-beta.8 [skip ci] ([3e07f62](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/3e07f6273fae667b2f663be1cdd5e9c068f4c59f))
* **release:** 1.11.0-beta.9 [skip ci] ([4440790](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4440790f00c1ddd416add7af895756ab42c30bf3))
## [1.11.0-beta.12](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.11...v1.11.0-beta.12) (2024-08-06)
### Features
* add grok integration ([fa651d4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fa651d4cd9ab8ae9cf58280f1256ceb4171ef088))
## [1.11.0-beta.11](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.10...v1.11.0-beta.11) (2024-08-06)
### Features
* update base_graph ([0571b6d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0571b6da55920bfe691feef2e1ecb5f3760dabf7))
## [1.11.0-beta.10](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.9...v1.11.0-beta.10) (2024-08-02)
### Bug Fixes
* **AbstractGraph:** instantiation of Azure GPT models ([ade28fc](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/ade28fca2c3fdf40f28a80854e3b8435a52a6930)), closes [#498](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/498)
## [1.11.0-beta.9](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.8...v1.11.0-beta.9) (2024-08-02)
### Features
* refactoring of the code ([9355507](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9355507a2dc73342f325b6649e871df48ae13567))
## [1.11.0-beta.8](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.7...v1.11.0-beta.8) (2024-08-01)
### Features
* add integration in the abstract grapgh ([5ecdbe7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5ecdbe715f4bb223fa1be834fda07ccea2a51cb9))
### Bug Fixes
* fixed bug on fetch_node ([968c69e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/968c69e217d9c180b9b8c2aa52ca59b9a1733525))
## [1.11.0-beta.7](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.6...v1.11.0-beta.7) (2024-08-01)
### Bug Fixes
* abstract_graph and removed unused embeddings ([0b4cfd6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0b4cfd6522dcad0eb418f0badd0f7824a1efd534))
### Refactor
* move embeddings code from AbstractGraph to RAGNode ([a94ebcd](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/a94ebcde0078d66d33e67f7e0a87850efb92d408))
* reuse code for common interface models ([bb73d91](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bb73d916a1a7b378438038ec928eeda6d8f6ac9d))
## [1.11.0-beta.6](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.5...v1.11.0-beta.6) (2024-07-31)
### Features
* intregration of firebase ([4caed54](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/4caed545e5030460b2d5e46f9ad90546ce36f0ee))
## [1.11.0-beta.5](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.4...v1.11.0-beta.5) (2024-07-30)
### Features
* fix tests ([1db164e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1db164e9e682eefbc1414989a043fefa2e9009c2))
### chore
* remove unused import ([88710f1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/88710f1a7c7d50f57108456112da30d1a12a1ba1))
### Refactor
* **Ollama:** integrate new LangChain chat init ([d177afb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/d177afb68be036465ede1f567d2562b145d77d36))
* **OpenAI:** integrate new LangChain chat init ([5e3eb6e](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/5e3eb6e43df4bd4c452d34b49f254235e9ff1b22))
* remove LangChain wrappers ([2c5f934](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2c5f934f101e319ec4e61009d4c464ca4626c1ff))
* remove LangChain wrappers for Ollama ([25066b2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/25066b2bc51517e50058231664230b8edef365b9))
* remove redundant LangChain wrappers ([9275486](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/927548624034b3c30eca60011d216720102d1815))
* remove redundant wrappers for Ernie and Nvidia ([bc2c996](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/bc2c9967d2f13ade6eeb7b23e9b423f6e79aa890))
## [1.11.0-beta.4](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.3...v1.11.0-beta.4) (2024-07-25)
### Features
* add generate_answer node paralellization ([0c4b290](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/0c4b2908d98efbb2b0a6faf68618a801d726bb5f))
### chore
* rebuild requirements ([2edad66](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2edad66788cbd92f197e3b37db13c44bfa39e36a))
## [1.11.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.2...v1.11.0-beta.3) (2024-07-25)
### Bug Fixes
* add llama 3.1 ([f336c95](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/f336c95c2d1833d1f829d61ae7fa415ac2caf250))
## [1.11.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.11.0-beta.1...v1.11.0-beta.2) (2024-07-24)
### Features
* pdate models_tokens.py ([377d679](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/377d679eecd62611c0c9a3cba8202c6f0719ed31))
## [1.11.0-beta.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.10.4...v1.11.0-beta.1) (2024-07-23)
### Features
* add new toml ([fcb3220](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fcb3220868e7ef1127a7a47f40d0379be282e6eb))
* add nvidia connection ([fc0dadb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/fc0dadb8f812dfd636dec856921a971b58695ce3))
### Bug Fixes
* **md_conversion:** add absolute links md, added missing dependency ([12b5ead](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/12b5eada6ea783770afd630ede69b8cf867a7ded))
### chore
* **dependecies:** add script to auto-updat
gitextract_4wh_v0jg/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── custom.md
│ │ └── feature_request.md
│ └── workflows/
│ ├── code-quality.yml
│ ├── codeql.yml
│ ├── dependency-review.yml
│ ├── release.yml
│ └── test-suite.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .readthedocs.yaml
├── .releaserc.yml
├── .semantic-commits-applied
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── PullRequests/
│ └── PR_1027_reviews.md
├── README.md
├── SECURITY.md
├── SEMANTIC_COMMITS.md
├── TESTING_INFRASTRUCTURE.md
├── citation.cff
├── codebeaver.yml
├── docker-compose.yml
├── docs/
│ ├── Makefile
│ ├── assets/
│ │ └── project_overview_diagram.fig
│ ├── chinese.md
│ ├── japanese.md
│ ├── korean.md
│ ├── make.bat
│ ├── portuguese.md
│ ├── requirements-dev.txt
│ ├── requirements.txt
│ ├── russian.md
│ ├── source/
│ │ ├── conf.py
│ │ ├── getting_started/
│ │ │ ├── examples.rst
│ │ │ └── installation.rst
│ │ ├── index.rst
│ │ ├── introduction/
│ │ │ ├── contributing.rst
│ │ │ └── overview.rst
│ │ ├── modules/
│ │ │ ├── modules.rst
│ │ │ ├── scrapegraphai.builders.rst
│ │ │ ├── scrapegraphai.docloaders.rst
│ │ │ ├── scrapegraphai.graphs.rst
│ │ │ ├── scrapegraphai.helpers.models_tokens.rst
│ │ │ ├── scrapegraphai.helpers.rst
│ │ │ ├── scrapegraphai.integrations.rst
│ │ │ ├── scrapegraphai.models.rst
│ │ │ ├── scrapegraphai.nodes.rst
│ │ │ ├── scrapegraphai.rst
│ │ │ └── scrapegraphai.utils.rst
│ │ └── scrapers/
│ │ ├── graph_config.rst
│ │ ├── graphs.rst
│ │ ├── llm.rst
│ │ ├── telemetry.rst
│ │ └── types.rst
│ ├── timeout_configuration.md
│ └── turkish.md
├── examples/
│ ├── ScrapegraphAI_cookbook.ipynb
│ ├── code_generator_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ └── code_generator_graph_ollama.py
│ │ └── openai/
│ │ └── code_generator_graph_openai.py
│ ├── csv_scraper_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── csv_scraper_graph_multi_ollama.py
│ │ │ ├── csv_scraper_ollama.py
│ │ │ └── inputs/
│ │ │ └── username.csv
│ │ └── openai/
│ │ ├── csv_scraper_graph_multi_openai.py
│ │ ├── csv_scraper_openai.py
│ │ └── inputs/
│ │ └── username.csv
│ ├── custom_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ └── custom_graph_ollama.py
│ │ └── openai/
│ │ └── custom_graph_openai.py
│ ├── depth_search_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ └── depth_search_graph_ollama.py
│ │ └── openai/
│ │ └── depth_search_graph_openai.py
│ ├── document_scraper_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── document_scraper_ollama.py
│ │ │ └── inputs/
│ │ │ └── plain_html_example.txt
│ │ └── openai/
│ │ ├── document_scraper_openai.py
│ │ └── inputs/
│ │ ├── markdown_example.md
│ │ └── plain_html_example.txt
│ ├── extras/
│ │ ├── authenticated_playwright.py
│ │ ├── browser_base_integration.py
│ │ ├── chromium_selenium.py
│ │ ├── cond_smartscraper_usage.py
│ │ ├── conditional_usage.py
│ │ ├── custom_prompt.py
│ │ ├── example.yml
│ │ ├── force_mode.py
│ │ ├── html_mode.py
│ │ ├── load_yml.py
│ │ ├── no_cut.py
│ │ ├── proxy_rotation.py
│ │ ├── rag_caching.py
│ │ ├── reasoning.py
│ │ ├── scrape_do.py
│ │ ├── screenshot_scaping.py
│ │ ├── serch_graph_scehma.py
│ │ ├── slow_mo.py
│ │ └── undected_playwright.py
│ ├── json_scraper_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── inputs/
│ │ │ │ └── example.json
│ │ │ ├── json_scraper_multi_ollama.py
│ │ │ └── json_scraper_ollama.py
│ │ └── openai/
│ │ ├── inputs/
│ │ │ └── example.json
│ │ ├── json_scraper_multi_openai.py
│ │ ├── json_scraper_openai.py
│ │ ├── md_scraper_openai.py
│ │ └── omni_scraper_openai.py
│ ├── markdownify/
│ │ ├── markdownify_scrapegraphai.py
│ │ └── readme.md
│ ├── omni_scraper_graph/
│ │ ├── README.md
│ │ └── omni_search_openai.py
│ ├── readme.md
│ ├── script_generator_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── script_generator_ollama.py
│ │ │ └── script_multi_generator_ollama.py
│ │ └── openai/
│ │ ├── script_generator_multi_openai.py
│ │ ├── script_generator_openai.py
│ │ └── script_generator_schema_openai.py
│ ├── search_graph/
│ │ ├── README.md
│ │ ├── ollama/
│ │ │ ├── search_graph_ollama.py
│ │ │ └── search_graph_schema_ollama.py
│ │ ├── openai/
│ │ │ ├── search_graph_openai.py
│ │ │ ├── search_graph_schema_openai.py
│ │ │ └── search_link_graph_openai.py
│ │ └── scrapegraphai/
│ │ ├── readme.md
│ │ └── searchscraper_scrapegraphai.py
│ ├── smart_scraper_graph/
│ │ ├── nvidia/
│ │ │ └── smart_scraper_nvidia.py
│ │ ├── ollama/
│ │ │ ├── smart_scraper_lite_ollama.py
│ │ │ ├── smart_scraper_multi_concat_ollama.py
│ │ │ ├── smart_scraper_multi_lite_ollama.py
│ │ │ ├── smart_scraper_multi_ollama.py
│ │ │ ├── smart_scraper_ollama.py
│ │ │ └── smart_scraper_schema_ollama.py
│ │ ├── openai/
│ │ │ ├── smart_scraper_lite_openai.py
│ │ │ ├── smart_scraper_multi_concat_openai.py
│ │ │ ├── smart_scraper_multi_lite_openai.py
│ │ │ ├── smart_scraper_multi_openai.py
│ │ │ ├── smart_scraper_openai.py
│ │ │ └── smart_scraper_schema_openai.py
│ │ └── scrapegraphai/
│ │ ├── readme.md
│ │ └── smartscraper_scrapegraphai.py
│ ├── speech_graph/
│ │ ├── README.md
│ │ └── speech_graph_openai.py
│ └── xml_scraper_graph/
│ ├── README.md
│ ├── ollama/
│ │ ├── inputs/
│ │ │ └── books.xml
│ │ ├── xml_scraper_graph_multi_ollama.py
│ │ └── xml_scraper_ollama.py
│ └── openai/
│ ├── inputs/
│ │ └── books.xml
│ ├── xml_scraper_graph_multi_openai.py
│ └── xml_scraper_openai.py
├── pyproject.toml
├── pytest.ini
├── readthedocs.yml
├── requirements-dev.txt
├── requirements.txt
├── scrapegraphai/
│ ├── __init__.py
│ ├── builders/
│ │ ├── __init__.py
│ │ └── graph_builder.py
│ ├── docloaders/
│ │ ├── __init__.py
│ │ ├── browser_base.py
│ │ ├── chromium.py
│ │ └── scrape_do.py
│ ├── graphs/
│ │ ├── __init__.py
│ │ ├── abstract_graph.py
│ │ ├── base_graph.py
│ │ ├── code_generator_graph.py
│ │ ├── csv_scraper_graph.py
│ │ ├── csv_scraper_multi_graph.py
│ │ ├── depth_search_graph.py
│ │ ├── document_scraper_graph.py
│ │ ├── document_scraper_multi_graph.py
│ │ ├── json_scraper_graph.py
│ │ ├── json_scraper_multi_graph.py
│ │ ├── markdownify_graph.py
│ │ ├── omni_scraper_graph.py
│ │ ├── omni_search_graph.py
│ │ ├── screenshot_scraper_graph.py
│ │ ├── script_creator_graph.py
│ │ ├── script_creator_multi_graph.py
│ │ ├── search_graph.py
│ │ ├── search_link_graph.py
│ │ ├── smart_scraper_graph.py
│ │ ├── smart_scraper_lite_graph.py
│ │ ├── smart_scraper_multi_concat_graph.py
│ │ ├── smart_scraper_multi_graph.py
│ │ ├── smart_scraper_multi_lite_graph.py
│ │ ├── speech_graph.py
│ │ ├── xml_scraper_graph.py
│ │ └── xml_scraper_multi_graph.py
│ ├── helpers/
│ │ ├── __init__.py
│ │ ├── default_filters.py
│ │ ├── models_tokens.py
│ │ ├── nodes_metadata.py
│ │ ├── robots.py
│ │ └── schemas.py
│ ├── integrations/
│ │ ├── __init__.py
│ │ ├── burr_bridge.py
│ │ └── indexify_node.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── clod.py
│ │ ├── deepseek.py
│ │ ├── minimax.py
│ │ ├── nvidia.py
│ │ ├── oneapi.py
│ │ ├── openai_itt.py
│ │ ├── openai_tts.py
│ │ └── xai.py
│ ├── nodes/
│ │ ├── __init__.py
│ │ ├── base_node.py
│ │ ├── concat_answers_node.py
│ │ ├── conditional_node.py
│ │ ├── description_node.py
│ │ ├── fetch_node.py
│ │ ├── fetch_node_level_k.py
│ │ ├── fetch_screen_node.py
│ │ ├── generate_answer_csv_node.py
│ │ ├── generate_answer_from_image_node.py
│ │ ├── generate_answer_node.py
│ │ ├── generate_answer_node_k_level.py
│ │ ├── generate_answer_omni_node.py
│ │ ├── generate_code_node.py
│ │ ├── generate_scraper_node.py
│ │ ├── get_probable_tags_node.py
│ │ ├── graph_iterator_node.py
│ │ ├── html_analyzer_node.py
│ │ ├── image_to_text_node.py
│ │ ├── markdownify_node.py
│ │ ├── merge_answers_node.py
│ │ ├── merge_generated_scripts_node.py
│ │ ├── parse_node.py
│ │ ├── parse_node_depth_k_node.py
│ │ ├── prompt_refiner_node.py
│ │ ├── rag_node.py
│ │ ├── reasoning_node.py
│ │ ├── robots_node.py
│ │ ├── search_internet_node.py
│ │ ├── search_link_node.py
│ │ ├── search_node_with_context.py
│ │ └── text_to_speech_node.py
│ ├── prompts/
│ │ ├── __init__.py
│ │ ├── description_node_prompts.py
│ │ ├── generate_answer_node_csv_prompts.py
│ │ ├── generate_answer_node_omni_prompts.py
│ │ ├── generate_answer_node_pdf_prompts.py
│ │ ├── generate_answer_node_prompts.py
│ │ ├── generate_code_node_prompts.py
│ │ ├── get_probable_tags_node_prompts.py
│ │ ├── html_analyzer_node_prompts.py
│ │ ├── merge_answer_node_prompts.py
│ │ ├── merge_generated_scripts_prompts.py
│ │ ├── prompt_refiner_node_prompts.py
│ │ ├── reasoning_node_prompts.py
│ │ ├── robots_node_prompts.py
│ │ ├── search_internet_node_prompts.py
│ │ ├── search_link_node_prompts.py
│ │ └── search_node_with_context_prompts.py
│ ├── telemetry/
│ │ ├── __init__.py
│ │ └── telemetry.py
│ └── utils/
│ ├── __init__.py
│ ├── cleanup_code.py
│ ├── cleanup_html.py
│ ├── code_error_analysis.py
│ ├── code_error_correction.py
│ ├── convert_to_md.py
│ ├── copy.py
│ ├── custom_callback.py
│ ├── data_export.py
│ ├── dict_content_compare.py
│ ├── llm_callback_manager.py
│ ├── logging.py
│ ├── model_costs.py
│ ├── output_parser.py
│ ├── parse_state_keys.py
│ ├── prettify_exec_info.py
│ ├── proxy_rotation.py
│ ├── research_web.py
│ ├── save_audio_from_bytes.py
│ ├── save_code_to_file.py
│ ├── schema_trasform.py
│ ├── screenshot_scraping/
│ │ ├── __init__.py
│ │ ├── screenshot_preparation.py
│ │ └── text_detection.py
│ ├── split_text_into_chunks.py
│ ├── sys_dynamic_import.py
│ ├── tokenizer.py
│ └── tokenizers/
│ ├── tokenizer_mistral.py
│ ├── tokenizer_ollama.py
│ └── tokenizer_openai.py
├── test
└── tests/
├── QUICKSTART.md
├── README_TESTING.md
├── Readme.md
├── conftest.py
├── fixtures/
│ ├── benchmarking.py
│ ├── helpers.py
│ └── mock_server/
│ ├── __init__.py
│ └── server.py
├── graphs/
│ ├── abstract_graph_test.py
│ ├── code_generator_graph_openai_test.py
│ ├── depth_search_graph_openai_test.py
│ ├── inputs/
│ │ ├── books.xml
│ │ ├── example.json
│ │ ├── plain_html_example.txt
│ │ └── username.csv
│ ├── scrape_plain_text_mistral_test.py
│ ├── scrape_xml_ollama_test.py
│ ├── screenshot_scraper_test.py
│ ├── script_generator_test.py
│ ├── search_graph_openai_test.py
│ ├── search_link_ollama.py
│ ├── smart_scraper_clod_test.py
│ ├── smart_scraper_ernie_test.py
│ ├── smart_scraper_fireworks_test.py
│ ├── smart_scraper_multi_lite_graph_openai_test.py
│ ├── smart_scraper_ollama_test.py
│ ├── smart_scraper_openai_test.py
│ └── xml_scraper_openai_test.py
├── inputs/
│ ├── books.xml
│ ├── example.json
│ ├── plain_html_example.txt
│ └── username.csv
├── integration/
│ ├── __init__.py
│ ├── test_file_formats_integration.py
│ ├── test_multi_graph_integration.py
│ └── test_smart_scraper_integration.py
├── nodes/
│ ├── fetch_node_test.py
│ ├── inputs/
│ │ ├── books.xml
│ │ ├── example.json
│ │ ├── plain_html_example.txt
│ │ └── username.csv
│ ├── robot_node_test.py
│ ├── search_internet_node_test.py
│ └── search_link_node_test.py
├── test_chromium.py
├── test_cleanup_html.py
├── test_csv_scraper_multi_graph.py
├── test_depth_search_graph.py
├── test_fetch_node_timeout.py
├── test_generate_answer_node.py
├── test_json_scraper_graph.py
├── test_json_scraper_multi_graph.py
├── test_minimax_models.py
├── test_models_tokens.py
├── test_omni_search_graph.py
├── test_scrape_do.py
├── test_script_creator_multi_graph.py
├── test_search_graph.py
├── test_smart_scraper_multi_concat_graph.py
└── utils/
├── convert_to_md_test.py
├── copy_utils_test.py
├── parse_state_keys_test.py
├── research_web_test.py
├── test_proxy_rotation.py
└── test_sys_dynamic_import.py
SYMBOL INDEX (926 symbols across 158 files)
FILE: examples/code_generator_graph/ollama/code_generator_graph_ollama.py
class Project (line 19) | class Project(BaseModel):
class Projects (line 24) | class Projects(BaseModel):
FILE: examples/code_generator_graph/openai/code_generator_graph_openai.py
class Project (line 20) | class Project(BaseModel):
class Projects (line 25) | class Projects(BaseModel):
FILE: examples/extras/authenticated_playwright.py
function do_login (line 28) | async def do_login():
function main (line 48) | async def main():
FILE: examples/extras/chromium_selenium.py
function analyze_content_with_scrapegraph (line 20) | async def analyze_content_with_scrapegraph(content: str):
function test_scraper_with_analysis (line 53) | async def test_scraper_with_analysis(scraper: ChromiumLoader, urls: list):
function main (line 88) | async def main():
FILE: examples/extras/serch_graph_scehma.py
class CeoName (line 19) | class CeoName(BaseModel):
class Ceos (line 23) | class Ceos(BaseModel):
FILE: examples/markdownify/markdownify_scrapegraphai.py
function main (line 10) | def main():
FILE: examples/script_generator_graph/openai/script_generator_schema_openai.py
class Project (line 21) | class Project(BaseModel):
class Projects (line 26) | class Projects(BaseModel):
FILE: examples/search_graph/ollama/search_graph_schema_ollama.py
class Dish (line 17) | class Dish(BaseModel):
class Dishes (line 22) | class Dishes(BaseModel):
FILE: examples/search_graph/openai/search_graph_schema_openai.py
class Dish (line 21) | class Dish(BaseModel):
class Dishes (line 26) | class Dishes(BaseModel):
FILE: examples/search_graph/scrapegraphai/searchscraper_scrapegraphai.py
function format_response (line 12) | def format_response(response: Dict[str, Any]) -> None:
function main (line 52) | def main():
FILE: examples/smart_scraper_graph/ollama/smart_scraper_schema_ollama.py
class Project (line 16) | class Project(BaseModel):
class Projects (line 21) | class Projects(BaseModel):
FILE: examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py
class Project (line 20) | class Project(BaseModel):
class Projects (line 25) | class Projects(BaseModel):
FILE: examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai.py
function main (line 10) | def main():
FILE: scrapegraphai/builders/graph_builder.py
class GraphBuilder (line 13) | class GraphBuilder:
method __init__ (line 44) | def __init__(self, prompt: str, config: dict):
method _create_llm (line 54) | def _create_llm(self, llm_config: dict):
method _generate_nodes_description (line 83) | def _generate_nodes_description(self):
method _create_extraction_chain (line 99) | def _create_extraction_chain(self):
method build_graph (line 126) | def build_graph(self):
method convert_json_to_graphviz (line 137) | def convert_json_to_graphviz(json_data, format: str = "pdf"):
FILE: scrapegraphai/docloaders/browser_base.py
function browser_base_fetch (line 9) | def browser_base_fetch(
FILE: scrapegraphai/docloaders/chromium.py
class ChromiumLoader (line 14) | class ChromiumLoader(BaseLoader):
method __init__ (line 27) | def __init__(
method scrape (line 76) | async def scrape(self, url: str) -> str:
method ascrape_undetected_chromedriver (line 87) | async def ascrape_undetected_chromedriver(self, url: str) -> str:
method ascrape_playwright_scroll (line 166) | async def ascrape_playwright_scroll(
method ascrape_playwright (line 323) | async def ascrape_playwright(self, url: str, browser_name: str = "chro...
method ascrape_with_js_support (line 382) | async def ascrape_with_js_support(
method lazy_load (line 439) | def lazy_load(self) -> Iterator[Document]:
method alazy_load (line 460) | async def alazy_load(self) -> AsyncIterator[Document]:
FILE: scrapegraphai/docloaders/scrape_do.py
function scrape_do_fetch (line 14) | def scrape_do_fetch(
FILE: scrapegraphai/graphs/abstract_graph.py
class AbstractGraph (line 27) | class AbstractGraph(ABC):
method __init__ (line 56) | def __init__(
method set_common_params (line 107) | def set_common_params(self, params: dict, overwrite=False):
method _create_llm (line 118) | def _create_llm(self, llm_config: dict) -> object:
method get_state (line 278) | def get_state(self, key=None) -> dict:
method append_node (line 293) | def append_node(self, node):
method get_execution_info (line 303) | def get_execution_info(self):
method _create_graph (line 314) | def _create_graph(self):
method run (line 320) | def run(self) -> str:
method run_safe_async (line 329) | async def run_safe_async(self) -> str:
FILE: scrapegraphai/graphs/base_graph.py
class BaseGraph (line 18) | class BaseGraph:
method __init__ (line 56) | def __init__(
method _create_edges (line 83) | def _create_edges(self, edges: list) -> dict:
method _set_conditional_node_edges (line 100) | def _set_conditional_node_edges(self):
method _get_node_by_name (line 126) | def _get_node_by_name(self, node_name: str):
method _update_source_info (line 130) | def _update_source_info(self, current_node, state):
method _get_model_info (line 157) | def _get_model_info(self, current_node):
method _get_schema (line 181) | def _get_schema(self, current_node):
method _execute_node (line 198) | def _execute_node(self, current_node, state, llm_model, llm_model_name):
method _get_next_node (line 222) | def _get_next_node(self, current_node, result):
method _execute_standard (line 236) | def _execute_standard(self, initial_state: dict) -> Tuple[dict, list]:
method execute (line 344) | def execute(self, initial_state: dict) -> Tuple[dict, list]:
method append_node (line 380) | def append_node(self, node):
FILE: scrapegraphai/graphs/code_generator_graph.py
class CodeGeneratorGraph (line 22) | class CodeGeneratorGraph(AbstractGraph):
method __init__ (line 58) | def __init__(
method _create_graph (line 69) | def _create_graph(self) -> BaseGraph:
method run (line 170) | def run(self) -> str:
FILE: scrapegraphai/graphs/csv_scraper_graph.py
class CSVScraperGraph (line 14) | class CSVScraperGraph(AbstractGraph):
method __init__ (line 51) | def __init__(
method _create_graph (line 65) | def _create_graph(self):
method run (line 95) | def run(self) -> str:
FILE: scrapegraphai/graphs/csv_scraper_multi_graph.py
class CSVScraperMultiGraph (line 17) | class CSVScraperMultiGraph(AbstractGraph):
method __init__ (line 45) | def __init__(
method _create_graph (line 57) | def _create_graph(self) -> BaseGraph:
method run (line 92) | def run(self) -> str:
FILE: scrapegraphai/graphs/depth_search_graph.py
class DepthSearchGraph (line 20) | class DepthSearchGraph(AbstractGraph):
method __init__ (line 56) | def __init__(
method _create_graph (line 67) | def _create_graph(self) -> BaseGraph:
method run (line 143) | def run(self) -> str:
FILE: scrapegraphai/graphs/document_scraper_graph.py
class DocumentScraperGraph (line 14) | class DocumentScraperGraph(AbstractGraph):
method __init__ (line 46) | def __init__(
method _create_graph (line 57) | def _create_graph(self) -> BaseGraph:
method run (line 103) | def run(self) -> str:
FILE: scrapegraphai/graphs/document_scraper_multi_graph.py
class DocumentScraperMultiGraph (line 17) | class DocumentScraperMultiGraph(AbstractGraph):
method __init__ (line 45) | def __init__(
method _create_graph (line 57) | def _create_graph(self) -> BaseGraph:
method run (line 93) | def run(self) -> str:
FILE: scrapegraphai/graphs/json_scraper_graph.py
class JSONScraperGraph (line 14) | class JSONScraperGraph(AbstractGraph):
method __init__ (line 44) | def __init__(
method _create_graph (line 55) | def _create_graph(self) -> BaseGraph:
method run (line 88) | def run(self) -> str:
FILE: scrapegraphai/graphs/json_scraper_multi_graph.py
class JSONScraperMultiGraph (line 17) | class JSONScraperMultiGraph(AbstractGraph):
method __init__ (line 45) | def __init__(
method _create_graph (line 57) | def _create_graph(self) -> BaseGraph:
method run (line 93) | def run(self) -> str:
FILE: scrapegraphai/graphs/markdownify_graph.py
class MarkdownifyGraph (line 14) | class MarkdownifyGraph(BaseGraph):
method __init__ (line 37) | def __init__(
method execute (line 67) | def execute(self, initial_state: Dict) -> Tuple[Dict, List[Dict]]:
FILE: scrapegraphai/graphs/omni_scraper_graph.py
class OmniScraperGraph (line 15) | class OmniScraperGraph(AbstractGraph):
method __init__ (line 49) | def __init__(
method _create_graph (line 62) | def _create_graph(self) -> BaseGraph:
method run (line 124) | def run(self) -> str:
FILE: scrapegraphai/graphs/omni_search_graph.py
class OmniSearchGraph (line 17) | class OmniSearchGraph(AbstractGraph):
method __init__ (line 44) | def __init__(
method _create_graph (line 55) | def _create_graph(self) -> BaseGraph:
method run (line 98) | def run(self) -> str:
FILE: scrapegraphai/graphs/screenshot_scraper_graph.py
class ScreenshotScraperGraph (line 14) | class ScreenshotScraperGraph(AbstractGraph):
method __init__ (line 35) | def __init__(
method _create_graph (line 44) | def _create_graph(self) -> BaseGraph:
method run (line 71) | def run(self) -> str:
FILE: scrapegraphai/graphs/script_creator_graph.py
class ScriptCreatorGraph (line 14) | class ScriptCreatorGraph(AbstractGraph):
method __init__ (line 46) | def __init__(
method _create_graph (line 59) | def _create_graph(self) -> BaseGraph:
method run (line 114) | def run(self) -> str:
FILE: scrapegraphai/graphs/script_creator_multi_graph.py
class ScriptCreatorMultiGraph (line 17) | class ScriptCreatorMultiGraph(AbstractGraph):
method __init__ (line 44) | def __init__(
method _create_graph (line 55) | def _create_graph(self) -> BaseGraph:
method run (line 90) | def run(self) -> str:
FILE: scrapegraphai/graphs/search_graph.py
class SearchGraph (line 17) | class SearchGraph(AbstractGraph):
method __init__ (line 45) | def __init__(
method _create_graph (line 56) | def _create_graph(self) -> BaseGraph:
method run (line 103) | def run(self) -> str:
method get_considered_urls (line 120) | def get_considered_urls(self) -> List[str]:
FILE: scrapegraphai/graphs/search_link_graph.py
class SearchLinkGraph (line 14) | class SearchLinkGraph(AbstractGraph):
method __init__ (line 39) | def __init__(
method _create_graph (line 46) | def _create_graph(self) -> BaseGraph:
method run (line 92) | def run(self) -> str:
FILE: scrapegraphai/graphs/smart_scraper_graph.py
class SmartScraperGraph (line 25) | class SmartScraperGraph(AbstractGraph):
method __init__ (line 58) | def __init__(
method _create_graph (line 72) | def _create_graph(self) -> BaseGraph:
method run (line 294) | def run(self) -> str:
FILE: scrapegraphai/graphs/smart_scraper_lite_graph.py
class SmartScraperLiteGraph (line 14) | class SmartScraperLiteGraph(AbstractGraph):
method __init__ (line 42) | def __init__(
method _create_graph (line 53) | def _create_graph(self) -> BaseGraph:
method run (line 92) | def run(self) -> str:
FILE: scrapegraphai/graphs/smart_scraper_multi_concat_graph.py
class SmartScraperMultiConcatGraph (line 22) | class SmartScraperMultiConcatGraph(AbstractGraph):
method __init__ (line 49) | def __init__(
method _create_graph (line 61) | def _create_graph(self) -> BaseGraph:
method run (line 117) | def run(self) -> str:
FILE: scrapegraphai/graphs/smart_scraper_multi_graph.py
class SmartScraperMultiGraph (line 17) | class SmartScraperMultiGraph(AbstractGraph):
method __init__ (line 51) | def __init__(
method _create_graph (line 64) | def _create_graph(self) -> BaseGraph:
method run (line 100) | def run(self) -> str:
FILE: scrapegraphai/graphs/smart_scraper_multi_lite_graph.py
class SmartScraperMultiLiteGraph (line 17) | class SmartScraperMultiLiteGraph(AbstractGraph):
method __init__ (line 51) | def __init__(
method _create_graph (line 62) | def _create_graph(self) -> BaseGraph:
method run (line 95) | def run(self) -> str:
FILE: scrapegraphai/graphs/speech_graph.py
class SpeechGraph (line 16) | class SpeechGraph(AbstractGraph):
method __init__ (line 46) | def __init__(
method _create_graph (line 57) | def _create_graph(self) -> BaseGraph:
method run (line 100) | def run(self) -> str:
FILE: scrapegraphai/graphs/xml_scraper_graph.py
class XMLScraperGraph (line 14) | class XMLScraperGraph(AbstractGraph):
method __init__ (line 46) | def __init__(
method _create_graph (line 57) | def _create_graph(self) -> BaseGraph:
method run (line 87) | def run(self) -> str:
FILE: scrapegraphai/graphs/xml_scraper_multi_graph.py
class XMLScraperMultiGraph (line 17) | class XMLScraperMultiGraph(AbstractGraph):
method __init__ (line 45) | def __init__(
method _create_graph (line 56) | def _create_graph(self) -> BaseGraph:
method run (line 91) | def run(self) -> str:
FILE: scrapegraphai/integrations/burr_bridge.py
class PrintLnHook (line 29) | class PrintLnHook(PostRunStepHook, PreRunStepHook):
method pre_run_step (line 34) | def pre_run_step(self, *, state: "State", action: "Action", **future_k...
method post_run_step (line 37) | def post_run_step(self, *, state: "State", action: "Action", **future_...
class BurrNodeBridge (line 41) | class BurrNodeBridge(Action):
method __init__ (line 47) | def __init__(self, node):
method reads (line 53) | def reads(self) -> list[str]:
method run (line 56) | def run(self, state: State, **run_kwargs) -> dict:
method writes (line 62) | def writes(self) -> list[str]:
method update (line 65) | def update(self, result: dict, state: State) -> State:
method get_source (line 68) | def get_source(self) -> str:
function parse_boolean_expression (line 72) | def parse_boolean_expression(expression: str) -> List[str]:
class BurrBridge (line 89) | class BurrBridge:
method __init__ (line 110) | def __init__(self, base_graph, burr_config):
method _initialize_burr_app (line 118) | def _initialize_burr_app(self, initial_state: Dict[str, Any] = None) -...
method _create_actions (line 163) | def _create_actions(self) -> Dict[str, Any]:
method _create_transitions (line 178) | def _create_transitions(self) -> List[Tuple[str, str, Any]]:
method _convert_state_from_burr (line 191) | def _convert_state_from_burr(self, burr_state: State) -> Dict[str, Any]:
method execute (line 207) | def execute(self, initial_state: Dict[str, Any] = {}) -> Dict[str, Any]:
FILE: scrapegraphai/integrations/indexify_node.py
class IndexifyNode (line 10) | class IndexifyNode(BaseNode):
method __init__ (line 24) | def __init__(
method execute (line 37) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/models/clod.py
class CLoD (line 8) | class CLoD(ChatOpenAI):
method __init__ (line 18) | def __init__(self, **llm_config):
FILE: scrapegraphai/models/deepseek.py
class DeepSeek (line 8) | class DeepSeek(ChatOpenAI):
method __init__ (line 18) | def __init__(self, **llm_config):
FILE: scrapegraphai/models/minimax.py
class MiniMax (line 8) | class MiniMax(ChatOpenAI):
method __init__ (line 18) | def __init__(self, **llm_config):
FILE: scrapegraphai/models/nvidia.py
class Nvidia (line 6) | class Nvidia:
method __new__ (line 20) | def __new__(cls, **llm_config):
FILE: scrapegraphai/models/oneapi.py
class OneApi (line 8) | class OneApi(ChatOpenAI):
method __init__ (line 17) | def __init__(self, **llm_config):
FILE: scrapegraphai/models/openai_itt.py
class OpenAIImageToText (line 9) | class OpenAIImageToText(ChatOpenAI):
method __init__ (line 20) | def __init__(self, llm_config: dict):
method run (line 23) | def run(self, image_url: str) -> str:
FILE: scrapegraphai/models/openai_tts.py
class OpenAITextToSpeech (line 8) | class OpenAITextToSpeech:
method __init__ (line 21) | def __init__(self, tts_config: dict):
method run (line 28) | def run(self, text: str) -> bytes:
FILE: scrapegraphai/models/xai.py
class XAI (line 8) | class XAI(ChatOpenAI):
method __init__ (line 18) | def __init__(self, **llm_config):
FILE: scrapegraphai/nodes/base_node.py
class BaseNode (line 12) | class BaseNode(ABC):
method __init__ (line 48) | def __init__(
method execute (line 71) | def execute(self, state: dict) -> dict:
method update_config (line 84) | def update_config(self, params: dict, overwrite: bool = False):
method get_input_keys (line 98) | def get_input_keys(self, state: dict) -> List[str]:
method _validate_input_keys (line 119) | def _validate_input_keys(self, input_keys):
method _parse_input_keys (line 136) | def _parse_input_keys(self, state: dict, expression: str) -> List[str]:
FILE: scrapegraphai/nodes/concat_answers_node.py
class ConcatAnswersNode (line 10) | class ConcatAnswersNode(BaseNode):
method __init__ (line 25) | def __init__(
method _merge_dict (line 38) | def _merge_dict(self, items):
method execute (line 41) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/conditional_node.py
class ConditionalNode (line 12) | class ConditionalNode(BaseNode):
method __init__ (line 36) | def __init__(
method execute (line 61) | def execute(self, state: dict) -> dict:
method _evaluate_condition (line 86) | def _evaluate_condition(self, state: dict, condition: str) -> bool:
FILE: scrapegraphai/nodes/description_node.py
class DescriptionNode (line 15) | class DescriptionNode(BaseNode):
method __init__ (line 33) | def __init__(
method execute (line 47) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/fetch_node.py
class FetchNode (line 20) | class FetchNode(BaseNode):
method __init__ (line 40) | def __init__(
method execute (line 90) | def execute(self, state):
method handle_directory (line 125) | def handle_directory(self, state, input_type, source):
method handle_file (line 142) | def handle_file(self, state, input_type, source):
method load_file_content (line 168) | def load_file_content(self, source, input_type):
method handle_local_source (line 219) | def handle_local_source(self, state, source):
method handle_web_source (line 262) | def handle_web_source(self, state, source):
FILE: scrapegraphai/nodes/fetch_node_level_k.py
class FetchNodeLevelK (line 15) | class FetchNodeLevelK(BaseNode):
method __init__ (line 40) | def __init__(
method execute (line 72) | def execute(self, state: dict) -> dict:
method fetch_content (line 104) | def fetch_content(self, source: str, loader_kwargs) -> Optional[str]:
method extract_links (line 150) | def extract_links(self, html_content: str) -> list:
method get_full_links (line 165) | def get_full_links(self, base_url: str, links: list) -> list:
method obtain_content (line 234) | def obtain_content(self, documents: List, loader_kwargs) -> List:
method process_links (line 275) | def process_links(
FILE: scrapegraphai/nodes/fetch_screen_node.py
class FetchScreenNode (line 12) | class FetchScreenNode(BaseNode):
method __init__ (line 17) | def __init__(
method execute (line 27) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/generate_answer_csv_node.py
class GenerateAnswerCSVNode (line 22) | class GenerateAnswerCSVNode(BaseNode):
method __init__ (line 47) | def __init__(
method execute (line 70) | def execute(self, state):
FILE: scrapegraphai/nodes/generate_answer_from_image_node.py
class GenerateAnswerFromImageNode (line 14) | class GenerateAnswerFromImageNode(BaseNode):
method __init__ (line 20) | def __init__(
method process_image (line 29) | async def process_image(self, session, api_key, image_data, user_prompt):
method execute_async (line 69) | async def execute_async(self, state: dict) -> dict:
method execute (line 112) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/generate_answer_node.py
class GenerateAnswerNode (line 30) | class GenerateAnswerNode(BaseNode):
method __init__ (line 52) | def __init__(
method invoke_with_timeout (line 75) | def invoke_with_timeout(self, chain, inputs, timeout):
method process (line 90) | def process(self, state: dict) -> dict:
method execute (line 118) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/generate_answer_node_k_level.py
class GenerateAnswerNodeKLevel (line 31) | class GenerateAnswerNodeKLevel(BaseNode):
method __init__ (line 49) | def __init__(
method execute (line 73) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/generate_answer_omni_node.py
class GenerateAnswerOmniNode (line 27) | class GenerateAnswerOmniNode(BaseNode):
method __init__ (line 45) | def __init__(
method execute (line 64) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/generate_code_node.py
class GenerateCodeNode (line 37) | class GenerateCodeNode(BaseNode):
method __init__ (line 53) | def __init__(
method execute (line 93) | def execute(self, state: dict) -> dict:
method overall_reasoning_loop (line 145) | def overall_reasoning_loop(self, state: dict) -> dict:
method syntax_reasoning_loop (line 206) | def syntax_reasoning_loop(self, state: dict) -> dict:
method execution_reasoning_loop (line 235) | def execution_reasoning_loop(self, state: dict) -> dict:
method validation_reasoning_loop (line 264) | def validation_reasoning_loop(self, state: dict) -> dict:
method semantic_comparison_loop (line 298) | def semantic_comparison_loop(self, state: dict) -> dict:
method generate_initial_code (line 335) | def generate_initial_code(self, state: dict) -> str:
method semantic_comparison (line 362) | def semantic_comparison(
method syntax_check (line 419) | def syntax_check(self, code):
method create_sandbox_and_execute (line 435) | def create_sandbox_and_execute(self, function_code):
method validate_dict (line 472) | def validate_dict(self, data: dict, schema):
FILE: scrapegraphai/nodes/generate_scraper_node.py
class GenerateScraperNode (line 13) | class GenerateScraperNode(BaseNode):
method __init__ (line 34) | def __init__(
method execute (line 55) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/get_probable_tags_node.py
class GetProbableTagsNode (line 14) | class GetProbableTagsNode(BaseNode):
method __init__ (line 31) | def __init__(
method execute (line 45) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/graph_iterator_node.py
class GraphIteratorNode (line 16) | class GraphIteratorNode(BaseNode):
method __init__ (line 31) | def __init__(
method execute (line 46) | def execute(self, state: dict) -> dict:
method _async_execute (line 81) | async def _async_execute(self, state: dict, batchsize: int) -> dict:
FILE: scrapegraphai/nodes/html_analyzer_node.py
class HtmlAnalyzerNode (line 16) | class HtmlAnalyzerNode(BaseNode):
method __init__ (line 31) | def __init__(
method execute (line 58) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/image_to_text_node.py
class ImageToTextNode (line 12) | class ImageToTextNode(BaseNode):
method __init__ (line 28) | def __init__(
method execute (line 43) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/markdownify_node.py
class MarkdownifyNode (line 11) | class MarkdownifyNode(BaseNode):
method __init__ (line 28) | def __init__(
method execute (line 41) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/merge_answers_node.py
class MergeAnswersNode (line 21) | class MergeAnswersNode(BaseNode):
method __init__ (line 36) | def __init__(
method execute (line 57) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/merge_generated_scripts_node.py
class MergeGeneratedScriptsNode (line 14) | class MergeGeneratedScriptsNode(BaseNode):
method __init__ (line 27) | def __init__(
method execute (line 41) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/parse_node.py
class ParseNode (line 17) | class ParseNode(BaseNode):
method __init__ (line 40) | def __init__(
method execute (line 62) | def execute(self, state: dict) -> dict:
method _extract_urls (line 131) | def _extract_urls(self, text: str, source: str) -> Tuple[List[str], Li...
method _clean_urls (line 179) | def _clean_urls(self, urls: List[str]) -> List[str]:
method _is_valid_url (line 207) | def _is_valid_url(url: str) -> bool:
FILE: scrapegraphai/nodes/parse_node_depth_k_node.py
class ParseNodeDepthK (line 12) | class ParseNodeDepthK(BaseNode):
method __init__ (line 29) | def __init__(
method execute (line 42) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/prompt_refiner_node.py
class PromptRefinerNode (line 16) | class PromptRefinerNode(BaseNode):
method __init__ (line 33) | def __init__(
method execute (line 62) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/rag_node.py
class RAGNode (line 10) | class RAGNode(BaseNode):
method __init__ (line 28) | def __init__(
method execute (line 43) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/reasoning_node.py
class ReasoningNode (line 16) | class ReasoningNode(BaseNode):
method __init__ (line 33) | def __init__(
method execute (line 56) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/robots_node.py
class RobotsNode (line 17) | class RobotsNode(BaseNode):
method __init__ (line 40) | def __init__(
method execute (line 58) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/search_internet_node.py
class SearchInternetNode (line 16) | class SearchInternetNode(BaseNode):
method __init__ (line 34) | def __init__(
method execute (line 60) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/search_link_node.py
class SearchLinkNode (line 18) | class SearchLinkNode(BaseNode):
method __init__ (line 35) | def __init__(
method _is_same_domain (line 58) | def _is_same_domain(self, url, domain):
method _is_image_url (line 67) | def _is_image_url(self, url):
method _is_language_url (line 73) | def _is_language_url(self, url):
method _is_potentially_irrelevant (line 86) | def _is_potentially_irrelevant(self, url):
method execute (line 93) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/search_node_with_context.py
class SearchLinksWithContext (line 18) | class SearchLinksWithContext(BaseNode):
method __init__ (line 37) | def __init__(
method execute (line 50) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/nodes/text_to_speech_node.py
class TextToSpeechNode (line 10) | class TextToSpeechNode(BaseNode):
method __init__ (line 25) | def __init__(
method execute (line 39) | def execute(self, state: dict) -> dict:
FILE: scrapegraphai/telemetry/telemetry.py
function _load_config (line 18) | def _load_config(config_location: str) -> configparser.ConfigParser:
function _check_config_and_environ_for_telemetry_flag (line 39) | def _check_config_and_environ_for_telemetry_flag(default_value: bool, co...
function disable_telemetry (line 65) | def disable_telemetry():
function is_telemetry_enabled (line 70) | def is_telemetry_enabled() -> bool:
function _build_telemetry_payload (line 80) | def _build_telemetry_payload(
function _send_telemetry (line 125) | def _send_telemetry(payload: dict):
function _send_telemetry_threaded (line 145) | def _send_telemetry_threaded(payload: dict):
function log_event (line 155) | def log_event(event: str, properties: Dict[str, any]):
function log_graph_execution (line 159) | def log_graph_execution(
function capture_function_usage (line 195) | def capture_function_usage(call_fn: Callable) -> Callable:
FILE: scrapegraphai/utils/cleanup_code.py
function extract_code (line 8) | def extract_code(code: str) -> str:
FILE: scrapegraphai/utils/cleanup_html.py
function extract_from_script_tags (line 13) | def extract_from_script_tags(soup):
function cleanup_html (line 48) | def cleanup_html(html_content: str, base_url: str) -> str:
function minify_html (line 104) | def minify_html(html):
function reduce_html (line 124) | def reduce_html(html, reduction):
FILE: scrapegraphai/utils/code_error_analysis.py
class AnalysisError (line 29) | class AnalysisError(Exception):
class InvalidStateError (line 35) | class InvalidStateError(AnalysisError):
class CodeAnalysisState (line 41) | class CodeAnalysisState(BaseModel):
method validate_errors (line 50) | def validate_errors(cls, v):
class ExecutionAnalysisState (line 57) | class ExecutionAnalysisState(CodeAnalysisState):
method validate_execution_errors (line 64) | def validate_execution_errors(cls, v):
class ValidationAnalysisState (line 72) | class ValidationAnalysisState(CodeAnalysisState):
method validate_validation_errors (line 79) | def validate_validation_errors(cls, v):
function get_optimal_analysis_template (line 87) | def get_optimal_analysis_template(error_type: str) -> str:
function syntax_focused_analysis (line 106) | def syntax_focused_analysis(state: Dict[str, Any], llm_model) -> str:
function execution_focused_analysis (line 159) | def execution_focused_analysis(state: Dict[str, Any], llm_model) -> str:
function validation_focused_analysis (line 214) | def validation_focused_analysis(state: Dict[str, Any], llm_model) -> str:
function semantic_focused_analysis (line 275) | def semantic_focused_analysis(
FILE: scrapegraphai/utils/code_error_correction.py
class CodeGenerationError (line 29) | class CodeGenerationError(Exception):
class InvalidCorrectionStateError (line 35) | class InvalidCorrectionStateError(CodeGenerationError):
class CorrectionState (line 41) | class CorrectionState(BaseModel):
class Config (line 48) | class Config:
class ValidationCorrectionState (line 52) | class ValidationCorrectionState(CorrectionState):
class SemanticCorrectionState (line 58) | class SemanticCorrectionState(CorrectionState):
function get_optimal_correction_template (line 66) | def get_optimal_correction_template(error_type: str) -> str:
function syntax_focused_code_generation (line 86) | def syntax_focused_code_generation(
function execution_focused_code_generation (line 139) | def execution_focused_code_generation(
function validation_focused_code_generation (line 192) | def validation_focused_code_generation(
function semantic_focused_code_generation (line 251) | def semantic_focused_code_generation(
FILE: scrapegraphai/utils/convert_to_md.py
function convert_to_md (line 10) | def convert_to_md(html: str, url: str = None) -> str:
FILE: scrapegraphai/utils/copy.py
class DeepCopyError (line 9) | class DeepCopyError(Exception):
function is_boto3_client (line 17) | def is_boto3_client(obj):
function safe_deepcopy (line 35) | def safe_deepcopy(obj: Any) -> Any:
FILE: scrapegraphai/utils/custom_callback.py
function get_token_cost_for_model (line 21) | def get_token_cost_for_model(
class CustomCallbackHandler (line 43) | class CustomCallbackHandler(BaseCallbackHandler):
method __init__ (line 52) | def __init__(self, llm_model_name: str) -> None:
method __repr__ (line 57) | def __repr__(self) -> str:
method always_verbose (line 67) | def always_verbose(self) -> bool:
method on_llm_start (line 71) | def on_llm_start(
method on_llm_new_token (line 77) | def on_llm_new_token(self, token: str, **kwargs: Any) -> None:
method on_llm_end (line 81) | def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None:
method __copy__ (line 134) | def __copy__(self) -> "CustomCallbackHandler":
method __deepcopy__ (line 138) | def __deepcopy__(self, memo: Any) -> "CustomCallbackHandler":
function get_custom_callback (line 150) | def get_custom_callback(llm_model_name: str):
FILE: scrapegraphai/utils/data_export.py
function export_to_json (line 12) | def export_to_json(data: List[Dict[str, Any]], filename: str) -> None:
function export_to_csv (line 24) | def export_to_csv(data: List[Dict[str, Any]], filename: str) -> None:
function export_to_xml (line 43) | def export_to_xml(
FILE: scrapegraphai/utils/dict_content_compare.py
function normalize_dict (line 15) | def normalize_dict(d: Dict[str, Any]) -> Dict[str, Any]:
function normalize_list (line 39) | def normalize_list(lst: List[Any]) -> List[Any]:
function are_content_equal (line 65) | def are_content_equal(
FILE: scrapegraphai/utils/llm_callback_manager.py
class CustomLLMCallbackManager (line 21) | class CustomLLMCallbackManager:
method exclusive_get_callback (line 37) | def exclusive_get_callback(self, llm_model, llm_model_name):
FILE: scrapegraphai/utils/logging.py
function _get_library_root_logger (line 25) | def _get_library_root_logger() -> logging.Logger:
function _set_library_root_logger (line 35) | def _set_library_root_logger() -> None:
function get_logger (line 62) | def get_logger(name: Optional[str] = None) -> logging.Logger:
function get_verbosity (line 79) | def get_verbosity() -> int:
function set_verbosity (line 90) | def set_verbosity(verbosity: int) -> None:
function set_verbosity_debug (line 101) | def set_verbosity_debug() -> None:
function set_verbosity_info (line 108) | def set_verbosity_info() -> None:
function set_verbosity_warning (line 115) | def set_verbosity_warning() -> None:
function set_verbosity_error (line 122) | def set_verbosity_error() -> None:
function set_verbosity_fatal (line 129) | def set_verbosity_fatal() -> None:
function set_handler (line 136) | def set_handler(handler: logging.Handler) -> None:
function setDEFAULT_HANDLER (line 150) | def setDEFAULT_HANDLER() -> None:
function unset_handler (line 157) | def unset_handler(handler: logging.Handler) -> None:
function unsetDEFAULT_HANDLER (line 171) | def unsetDEFAULT_HANDLER() -> None:
function set_propagation (line 178) | def set_propagation() -> None:
function unset_propagation (line 185) | def unset_propagation() -> None:
function set_formatting (line 192) | def set_formatting() -> None:
function unset_formatting (line 206) | def unset_formatting() -> None:
function warning_once (line 215) | def warning_once(self, *args, **kwargs):
FILE: scrapegraphai/utils/output_parser.py
function get_structured_output_parser (line 12) | def get_structured_output_parser(
function get_pydantic_output_parser (line 30) | def get_pydantic_output_parser(
function _base_model_v1_output_parser (line 54) | def _base_model_v1_output_parser(x: BaseModelV1) -> dict:
function _base_model_v2_output_parser (line 77) | def _base_model_v2_output_parser(x: BaseModelV2) -> dict:
function _dict_output_parser (line 90) | def _dict_output_parser(x: dict) -> dict:
FILE: scrapegraphai/utils/parse_state_keys.py
function parse_expression (line 8) | def parse_expression(expression, state: dict) -> list:
FILE: scrapegraphai/utils/prettify_exec_info.py
function prettify_exec_info (line 8) | def prettify_exec_info(
FILE: scrapegraphai/utils/proxy_rotation.py
class ProxyBrokerCriteria (line 16) | class ProxyBrokerCriteria(TypedDict, total=False):
class ProxySettings (line 28) | class ProxySettings(TypedDict, total=False):
class Proxy (line 39) | class Proxy(ProxySettings):
function search_proxy_servers (line 47) | def search_proxy_servers(
function _parse_proxy (line 134) | def _parse_proxy(proxy: ProxySettings) -> ProxySettings:
function _search_proxy (line 163) | def _search_proxy(proxy: Proxy) -> ProxySettings:
function is_ipv4_address (line 182) | def is_ipv4_address(address: str) -> bool:
function parse_or_search_proxy (line 191) | def parse_or_search_proxy(proxy: Proxy) -> ProxySettings:
FILE: scrapegraphai/utils/research_web.py
class ResearchWebError (line 18) | class ResearchWebError(Exception):
class SearchConfigError (line 24) | class SearchConfigError(ResearchWebError):
class SearchRequestError (line 30) | class SearchRequestError(ResearchWebError):
class ProxyConfig (line 36) | class ProxyConfig(BaseModel):
class SearchConfig (line 48) | class SearchConfig(BaseModel):
method validate_search_engine (line 64) | def validate_search_engine(cls, v):
method validate_query (line 74) | def validate_query(cls, v):
method validate_max_results (line 81) | def validate_max_results(cls, v):
function rate_limited (line 93) | def rate_limited(calls: int, period: int = 60):
function sanitize_search_query (line 123) | def sanitize_search_query(query: str) -> str:
function get_random_user_agent (line 150) | def get_random_user_agent() -> str:
function search_on_web (line 161) | def search_on_web(
function _search_bing (line 250) | def _search_bing(
function _search_searxng (line 297) | def _search_searxng(query: str, max_results: int, port: int, timeout: in...
function _search_serper (line 338) | def _search_serper(
function format_proxy (line 384) | def format_proxy(proxy_config: Union[str, Dict, ProxyConfig]) -> str:
function filter_pdf_links (line 408) | def filter_pdf_links(urls: List[str]) -> List[str]:
function verify_request_signature (line 421) | def verify_request_signature(
FILE: scrapegraphai/utils/save_audio_from_bytes.py
function save_audio_from_bytes (line 9) | def save_audio_from_bytes(byte_response: bytes, output_path: Union[str, ...
FILE: scrapegraphai/utils/save_code_to_file.py
function save_code_to_file (line 6) | def save_code_to_file(code: str, filename: str) -> None:
FILE: scrapegraphai/utils/schema_trasform.py
function transform_schema (line 6) | def transform_schema(pydantic_schema):
FILE: scrapegraphai/utils/screenshot_scraping/screenshot_preparation.py
function take_screenshot (line 11) | async def take_screenshot(url: str, save_path: str = None, quality: int ...
function select_area_with_opencv (line 40) | def select_area_with_opencv(image):
function select_area_with_ipywidget (line 133) | def select_area_with_ipywidget(image):
function crop_image (line 218) | def crop_image(
FILE: scrapegraphai/utils/screenshot_scraping/text_detection.py
function detect_text (line 6) | def detect_text(image, languages: list = ["en"]):
FILE: scrapegraphai/utils/split_text_into_chunks.py
function split_text_into_chunks (line 10) | def split_text_into_chunks(text: str, chunk_size: int, use_semchunk=True...
FILE: scrapegraphai/utils/sys_dynamic_import.py
function srcfile_import (line 15) | def srcfile_import(modpath: str, modname: str) -> "types.ModuleType":
function dynamic_import (line 48) | def dynamic_import(modname: str, message: str = "") -> None:
FILE: scrapegraphai/utils/tokenizer.py
function num_tokens_calculus (line 8) | def num_tokens_calculus(string: str) -> int:
FILE: scrapegraphai/utils/tokenizers/tokenizer_mistral.py
function num_tokens_mistral (line 10) | def num_tokens_mistral(text: str, llm_model: BaseChatModel) -> int:
FILE: scrapegraphai/utils/tokenizers/tokenizer_ollama.py
function num_tokens_ollama (line 10) | def num_tokens_ollama(text: str, llm_model: BaseChatModel) -> int:
FILE: scrapegraphai/utils/tokenizers/tokenizer_openai.py
function num_tokens_openai (line 10) | def num_tokens_openai(text: str) -> int:
FILE: tests/conftest.py
function openai_config (line 34) | def openai_config() -> Dict[str, Any]:
function openai_gpt4_config (line 49) | def openai_gpt4_config() -> Dict[str, Any]:
function ollama_config (line 64) | def ollama_config() -> Dict[str, Any]:
function anthropic_config (line 78) | def anthropic_config() -> Dict[str, Any]:
function groq_config (line 93) | def groq_config() -> Dict[str, Any]:
function azure_config (line 108) | def azure_config() -> Dict[str, Any]:
function gemini_config (line 124) | def gemini_config() -> Dict[str, Any]:
function multi_llm_config (line 144) | def multi_llm_config(request):
function mock_llm_model (line 155) | def mock_llm_model():
function mock_embedder_model (line 165) | def mock_embedder_model():
function sample_html (line 179) | def sample_html() -> str:
function sample_json_data (line 211) | def sample_json_data() -> Dict[str, Any]:
function sample_xml (line 226) | def sample_xml() -> str:
function sample_csv (line 246) | def sample_csv() -> str:
function temp_json_file (line 260) | def temp_json_file(tmp_path, sample_json_data):
function temp_html_file (line 268) | def temp_html_file(tmp_path, sample_html):
function temp_xml_file (line 276) | def temp_xml_file(tmp_path, sample_xml):
function temp_csv_file (line 284) | def temp_csv_file(tmp_path, sample_csv):
function benchmark_config (line 297) | def benchmark_config():
function performance_tracker (line 307) | def performance_tracker():
function mock_server (line 323) | def mock_server():
function mock_server_url (line 334) | def mock_server_url(mock_server):
function mock_website_url (line 340) | def mock_website_url():
function pytest_configure (line 354) | def pytest_configure(config):
function pytest_collection_modifyitems (line 373) | def pytest_collection_modifyitems(config, items):
function pytest_addoption (line 400) | def pytest_addoption(parser):
FILE: tests/fixtures/benchmarking.py
class BenchmarkResult (line 23) | class BenchmarkResult:
class BenchmarkSummary (line 37) | class BenchmarkSummary:
class BenchmarkTracker (line 52) | class BenchmarkTracker:
method __init__ (line 55) | def __init__(self, output_dir: Optional[Path] = None):
method record (line 65) | def record(self, result: BenchmarkResult):
method get_summary (line 69) | def get_summary(self, test_name: str) -> Optional[BenchmarkSummary]:
method save_results (line 100) | def save_results(self, filename: str = "benchmark_results.json"):
method generate_report (line 126) | def generate_report(self) -> str:
function benchmark (line 163) | def benchmark(
function benchmark_tracker (line 226) | def benchmark_tracker():
function pytest_benchmark_compare (line 234) | def pytest_benchmark_compare(baseline_file: Path, current_file: Path) ->...
FILE: tests/fixtures/helpers.py
function assert_valid_scrape_result (line 22) | def assert_valid_scrape_result(result: Any, expected_keys: Optional[List...
function assert_execution_info_valid (line 37) | def assert_execution_info_valid(exec_info: Dict[str, Any]):
function assert_response_time_acceptable (line 47) | def assert_response_time_acceptable(execution_time: float, max_time: flo...
function assert_no_errors_in_result (line 59) | def assert_no_errors_in_result(result: Union[Dict, str]):
function create_mock_llm_response (line 85) | def create_mock_llm_response(content: str, **kwargs) -> Mock:
function create_mock_graph_result (line 102) | def create_mock_graph_result(
function generate_test_html (line 133) | def generate_test_html(
function generate_test_json (line 164) | def generate_test_json(num_records: int = 3) -> Dict[str, Any]:
function generate_test_csv (line 187) | def generate_test_csv(num_rows: int = 3) -> str:
function validate_schema_match (line 206) | def validate_schema_match(data: Dict, schema_class) -> bool:
function validate_extracted_fields (line 223) | def validate_extracted_fields(
function load_test_fixture (line 252) | def load_test_fixture(fixture_name: str, fixture_dir: Optional[Path] = N...
function save_test_output (line 269) | def save_test_output(
function compare_results (line 292) | def compare_results(result1: Dict, result2: Dict, ignore_keys: Optional[...
function fuzzy_match_strings (line 312) | def fuzzy_match_strings(str1: str, str2: str, threshold: float = 0.8) ->...
class RateLimitHelper (line 345) | class RateLimitHelper:
method __init__ (line 348) | def __init__(self, max_requests: int, time_window: float):
method can_make_request (line 359) | def can_make_request(self) -> bool:
method record_request (line 374) | def record_request(self):
function retry_with_backoff (line 386) | def retry_with_backoff(
FILE: tests/fixtures/mock_server/server.py
class MockHTTPRequestHandler (line 20) | class MockHTTPRequestHandler(BaseHTTPRequestHandler):
method log_message (line 26) | def log_message(self, format, *args):
method do_GET (line 30) | def do_GET(self):
method _serve_home (line 64) | def _serve_home(self):
method _serve_products (line 85) | def _serve_products(self):
method _serve_projects (line 121) | def _serve_projects(self):
method _serve_json_data (line 149) | def _serve_json_data(self):
method _serve_xml_data (line 164) | def _serve_xml_data(self):
method _serve_csv_data (line 184) | def _serve_csv_data(self):
method _serve_slow_response (line 192) | def _serve_slow_response(self):
method _serve_404 (line 197) | def _serve_404(self):
method _serve_500 (line 204) | def _serve_500(self):
method _serve_rate_limited (line 211) | def _serve_rate_limited(self):
method _serve_dynamic_content (line 225) | def _serve_dynamic_content(self):
method _serve_pagination (line 244) | def _serve_pagination(self, query_params):
method _send_html_response (line 282) | def _send_html_response(self, html: str, status: int = 200):
method _send_json_response (line 289) | def _send_json_response(self, data: dict, status: int = 200):
method _send_xml_response (line 296) | def _send_xml_response(self, xml: str, status: int = 200):
method _send_csv_response (line 303) | def _send_csv_response(self, csv: str, status: int = 200):
class MockHTTPServer (line 311) | class MockHTTPServer:
method __init__ (line 314) | def __init__(self, host: str = "localhost", port: int = 8888):
method start (line 320) | def start(self):
method stop (line 327) | def stop(self):
method get_url (line 335) | def get_url(self, path: str = "") -> str:
method __enter__ (line 339) | def __enter__(self):
method __exit__ (line 344) | def __exit__(self, exc_type, exc_val, exc_tb):
FILE: tests/graphs/abstract_graph_test.py
function test_llm_missing_tokens (line 17) | def test_llm_missing_tokens(monkeypatch, capsys):
function test_burr_kwargs (line 35) | def test_burr_kwargs():
function test_set_common_params (line 51) | def test_set_common_params():
class TestGraph (line 78) | class TestGraph(AbstractGraph):
method __init__ (line 79) | def __init__(self, prompt: str, config: dict):
method _create_graph (line 82) | def _create_graph(self) -> BaseGraph:
method run (line 108) | def run(self) -> str:
class TestAbstractGraph (line 115) | class TestAbstractGraph:
method test_create_llm (line 148) | def test_create_llm(self, llm_config, expected_model):
method test_create_llm_unknown_provider (line 152) | def test_create_llm_unknown_provider(self):
method test_create_llm_with_rate_limit (line 208) | def test_create_llm_with_rate_limit(self, llm_config, expected_model):
method test_run_safe_async (line 213) | async def test_run_safe_async(self):
method test_create_llm_with_custom_model_instance (line 228) | def test_create_llm_with_custom_model_instance(self):
method test_set_common_params (line 249) | def test_set_common_params(self):
method test_get_state (line 276) | def test_get_state(self):
method test_append_node (line 294) | def test_append_node(self):
method test_get_execution_info (line 307) | def test_get_execution_info(self):
FILE: tests/graphs/code_generator_graph_openai_test.py
class Project (line 21) | class Project(BaseModel):
class Projects (line 26) | class Projects(BaseModel):
function graph_config (line 31) | def graph_config():
function test_code_generator_graph (line 55) | def test_code_generator_graph(graph_config: dict):
function test_code_generator_execution_info (line 71) | def test_code_generator_execution_info(graph_config: dict):
FILE: tests/graphs/depth_search_graph_openai_test.py
function graph_config (line 16) | def graph_config():
function test_depth_search_graph (line 33) | def test_depth_search_graph(graph_config: dict):
function test_depth_search_execution_info (line 48) | def test_depth_search_execution_info(graph_config: dict):
FILE: tests/graphs/scrape_plain_text_mistral_test.py
function sample_text (line 13) | def sample_text():
function graph_config (line 28) | def graph_config():
function test_scraping_pipeline (line 42) | def test_scraping_pipeline(sample_text, graph_config):
FILE: tests/graphs/scrape_xml_ollama_test.py
function sample_xml (line 13) | def sample_xml():
function graph_config (line 28) | def graph_config():
function test_scraping_pipeline (line 42) | def test_scraping_pipeline(sample_xml: str, graph_config: dict):
FILE: tests/graphs/screenshot_scraper_test.py
function graph_config (line 15) | def graph_config():
function test_screenshot_scraper_graph (line 29) | def test_screenshot_scraper_graph(graph_config):
FILE: tests/graphs/script_generator_test.py
function graph_config (line 11) | def graph_config():
function test_script_creator_graph (line 27) | def test_script_creator_graph(graph_config: dict):
FILE: tests/graphs/search_graph_openai_test.py
function graph_config (line 20) | def graph_config():
function test_search_graph (line 40) | def test_search_graph(graph_config: dict):
function test_search_graph_execution_info (line 54) | def test_search_graph_execution_info(graph_config: dict):
FILE: tests/graphs/search_link_ollama.py
function test_smart_scraper_pipeline (line 4) | def test_smart_scraper_pipeline():
FILE: tests/graphs/smart_scraper_clod_test.py
function graph_config (line 16) | def graph_config():
function test_scraping_pipeline (line 29) | def test_scraping_pipeline(graph_config):
function test_get_execution_info (line 43) | def test_get_execution_info(graph_config):
FILE: tests/graphs/smart_scraper_ernie_test.py
function graph_config (line 11) | def graph_config():
function test_scraping_pipeline (line 25) | def test_scraping_pipeline(graph_config: dict):
function test_get_execution_info (line 40) | def test_get_execution_info(graph_config: dict):
FILE: tests/graphs/smart_scraper_fireworks_test.py
function graph_config (line 16) | def graph_config():
function test_scraping_pipeline (line 29) | def test_scraping_pipeline(graph_config):
function test_get_execution_info (line 43) | def test_get_execution_info(graph_config):
FILE: tests/graphs/smart_scraper_multi_lite_graph_openai_test.py
function graph_config (line 16) | def graph_config():
function test_scraping_pipeline (line 30) | def test_scraping_pipeline(graph_config):
function test_get_execution_info (line 44) | def test_get_execution_info(graph_config):
FILE: tests/graphs/smart_scraper_ollama_test.py
function graph_config (line 11) | def graph_config():
function test_scraping_pipeline (line 25) | def test_scraping_pipeline(graph_config: dict):
function test_get_execution_info (line 40) | def test_get_execution_info(graph_config: dict):
FILE: tests/graphs/smart_scraper_openai_test.py
function graph_config (line 17) | def graph_config():
function test_scraping_pipeline (line 30) | def test_scraping_pipeline(graph_config):
function test_get_execution_info (line 44) | def test_get_execution_info(graph_config):
function test_get_execution_info_with_schema (line 59) | def test_get_execution_info_with_schema(graph_config):
FILE: tests/graphs/xml_scraper_openai_test.py
function graph_config (line 21) | def graph_config():
function xml_content (line 36) | def xml_content():
function test_xml_scraper_graph (line 53) | def test_xml_scraper_graph(graph_config: dict, xml_content: str):
function test_xml_scraper_execution_info (line 68) | def test_xml_scraper_execution_info(graph_config: dict, xml_content: str):
function test_xml_scraper_save_results (line 86) | def test_xml_scraper_save_results(graph_config: dict, xml_content: str):
FILE: tests/integration/test_file_formats_integration.py
class TestJSONScraperIntegration (line 22) | class TestJSONScraperIntegration:
method test_scrape_json_file (line 25) | def test_scrape_json_file(self, openai_config, temp_json_file):
method test_scrape_json_url (line 37) | def test_scrape_json_url(self, openai_config, mock_server):
class TestXMLScraperIntegration (line 54) | class TestXMLScraperIntegration:
method test_scrape_xml_file (line 57) | def test_scrape_xml_file(self, openai_config, temp_xml_file):
method test_scrape_xml_url (line 69) | def test_scrape_xml_url(self, openai_config, mock_server):
class TestCSVScraperIntegration (line 86) | class TestCSVScraperIntegration:
method test_scrape_csv_file (line 89) | def test_scrape_csv_file(self, openai_config, temp_csv_file):
method test_scrape_csv_url (line 101) | def test_scrape_csv_url(self, openai_config, mock_server):
class TestFileFormatPerformance (line 118) | class TestFileFormatPerformance:
method test_json_scraping_performance (line 122) | def test_json_scraping_performance(
FILE: tests/integration/test_multi_graph_integration.py
class TestMultiGraphIntegration (line 18) | class TestMultiGraphIntegration:
method test_scrape_multiple_pages (line 21) | def test_scrape_multiple_pages(self, openai_config, mock_server):
method test_concurrent_scraping_performance (line 39) | def test_concurrent_scraping_performance(
class TestSearchGraphIntegration (line 80) | class TestSearchGraphIntegration:
method test_search_and_scrape (line 85) | def test_search_and_scrape(self, openai_config):
FILE: tests/integration/test_smart_scraper_integration.py
class ProjectSchema (line 20) | class ProjectSchema(BaseModel):
class ProjectListSchema (line 27) | class ProjectListSchema(BaseModel):
class TestSmartScraperIntegration (line 35) | class TestSmartScraperIntegration:
method test_scrape_with_openai (line 38) | def test_scrape_with_openai(self, openai_config, mock_server):
method test_scrape_with_schema (line 54) | def test_scrape_with_schema(self, openai_config, mock_server):
method test_scrape_products_page (line 75) | def test_scrape_products_page(self, openai_config, mock_server):
method test_scrape_with_timeout (line 90) | def test_scrape_with_timeout(self, openai_config, mock_server):
method test_error_handling_404 (line 107) | def test_error_handling_404(self, openai_config, mock_server):
class TestMultiProviderIntegration (line 130) | class TestMultiProviderIntegration:
method test_consistent_results_across_providers (line 134) | def test_consistent_results_across_providers(
class TestRealWebsiteIntegration (line 157) | class TestRealWebsiteIntegration:
method test_scrape_test_website (line 161) | def test_scrape_test_website(self, openai_config, mock_website_url):
class TestSmartScraperPerformance (line 177) | class TestSmartScraperPerformance:
method test_scraping_performance (line 181) | def test_scraping_performance(
FILE: tests/nodes/fetch_node_test.py
function test_fetch_html (line 6) | def test_fetch_html(mocker):
function test_fetch_json (line 42) | def test_fetch_json():
function test_fetch_xml (line 51) | def test_fetch_xml():
function test_fetch_csv (line 60) | def test_fetch_csv():
function test_fetch_txt (line 69) | def test_fetch_txt():
FILE: tests/nodes/robot_node_test.py
function mock_llm_model (line 9) | def mock_llm_model():
function robots_node (line 17) | def robots_node(mock_llm_model):
function test_robots_node_scrapable (line 25) | def test_robots_node_scrapable(robots_node):
function test_robots_node_not_scrapable (line 41) | def test_robots_node_not_scrapable(robots_node):
function test_robots_node_force_scrapable (line 59) | def test_robots_node_force_scrapable(robots_node):
FILE: tests/nodes/search_internet_node_test.py
class TestSearchInternetNode (line 8) | class TestSearchInternetNode(unittest.TestCase):
method setUp (line 9) | def setUp(self):
method test_execute_search_node (line 33) | def test_execute_search_node(self):
FILE: tests/nodes/search_link_node_test.py
function setup (line 10) | def setup():
function test_search_link_node (line 42) | def test_search_link_node(setup):
FILE: tests/test_chromium.py
class MockPlaywright (line 13) | class MockPlaywright:
method __init__ (line 14) | def __init__(self):
class MockBrowser (line 19) | class MockBrowser:
method __init__ (line 20) | def __init__(self):
class MockContext (line 24) | class MockContext:
method __init__ (line 25) | def __init__(self):
class MockPage (line 29) | class MockPage:
method __init__ (line 30) | def __init__(self):
function mock_playwright (line 40) | def mock_playwright():
function dummy_scraper (line 56) | async def dummy_scraper(url):
function loader_with_dummy (line 62) | def loader_with_dummy(monkeypatch):
function test_lazy_load (line 72) | def test_lazy_load(loader_with_dummy):
function test_alazy_load (line 83) | async def test_alazy_load(loader_with_dummy):
function test_scrape_method_unsupported_backend (line 94) | async def test_scrape_method_unsupported_backend():
function test_scrape_method_selenium (line 102) | async def test_scrape_method_selenium(monkeypatch):
function test_ascrape_playwright_scroll (line 117) | async def test_ascrape_playwright_scroll(mock_playwright):
function test_ascrape_with_js_support (line 146) | async def test_ascrape_with_js_support(mock_playwright):
function test_scrape_method_playwright (line 171) | async def test_scrape_method_playwright(mock_playwright):
function test_scrape_method_retry_logic (line 189) | async def test_scrape_method_retry_logic(mock_playwright):
function test_ascrape_playwright_scroll_invalid_params (line 216) | async def test_ascrape_playwright_scroll_invalid_params():
function test_ascrape_with_js_support_retry_failure (line 236) | async def test_ascrape_with_js_support_retry_failure(monkeypatch):
function test_ascrape_undetected_chromedriver_success (line 293) | async def test_ascrape_undetected_chromedriver_success(monkeypatch):
function test_lazy_load_exception (line 319) | async def test_lazy_load_exception(loader_with_dummy, monkeypatch):
function test_ascrape_undetected_chromedriver_unsupported_browser (line 333) | async def test_ascrape_undetected_chromedriver_unsupported_browser(monke...
function test_alazy_load_partial_failure (line 351) | async def test_alazy_load_partial_failure(monkeypatch):
function test_ascrape_playwright_retry_failure (line 368) | async def test_ascrape_playwright_retry_failure(monkeypatch):
function test_init_overrides (line 420) | async def test_init_overrides():
function test_lazy_load_with_js_support (line 452) | async def test_lazy_load_with_js_support(monkeypatch):
function test_no_retry_returns_none (line 470) | async def test_no_retry_returns_none(monkeypatch):
function test_alazy_load_empty_urls (line 486) | async def test_alazy_load_empty_urls():
function test_lazy_load_empty_urls (line 493) | def test_lazy_load_empty_urls():
function test_ascrape_undetected_chromedriver_missing_import (line 501) | async def test_ascrape_undetected_chromedriver_missing_import(monkeypatch):
function test_ascrape_undetected_chromedriver_quit_called (line 518) | async def test_ascrape_undetected_chromedriver_quit_called(monkeypatch):
function test_dynamic_import_failure (line 562) | def test_dynamic_import_failure(monkeypatch, backend):
function test_ascrape_with_js_support_retry_success (line 576) | async def test_ascrape_with_js_support_retry_success(monkeypatch):
function test_proxy_parsing_in_init (line 636) | async def test_proxy_parsing_in_init(monkeypatch):
function test_scrape_method_selenium_firefox (line 650) | async def test_scrape_method_selenium_firefox(monkeypatch):
function test_init_with_no_proxy (line 664) | def test_init_with_no_proxy():
function test_ascrape_playwright_negative_retry (line 672) | async def test_ascrape_playwright_negative_retry(monkeypatch):
function test_ascrape_with_js_support_negative_retry (line 697) | async def test_ascrape_with_js_support_negative_retry(monkeypatch):
function test_ascrape_with_js_support_storage_state (line 726) | async def test_ascrape_with_js_support_storage_state(monkeypatch):
function test_ascrape_playwright_browser_config (line 804) | async def test_ascrape_playwright_browser_config(monkeypatch):
function test_scrape_method_js_support (line 868) | async def test_scrape_method_js_support(monkeypatch):
function test_ascrape_playwright_scroll_retry_failure (line 882) | async def test_ascrape_playwright_scroll_retry_failure(monkeypatch):
function test_alazy_load_order (line 942) | async def test_alazy_load_order(monkeypatch):
function test_ascrape_with_js_support_calls_close (line 969) | async def test_ascrape_with_js_support_calls_close(monkeypatch):
function test_lazy_load_invalid_backend (line 1024) | async def test_lazy_load_invalid_backend(monkeypatch):
function test_ascrape_undetected_chromedriver_failure (line 1034) | async def test_ascrape_undetected_chromedriver_failure(monkeypatch):
function test_ascrape_playwright_scroll_constant_height (line 1070) | async def test_ascrape_playwright_scroll_constant_height(mock_playwright):
function test_lazy_load_empty_content (line 1085) | def test_lazy_load_empty_content(monkeypatch):
function test_lazy_load_scraper_returns_none (line 1105) | async def test_lazy_load_scraper_returns_none(monkeypatch):
function test_alazy_load_mixed_none_and_content (line 1125) | async def test_alazy_load_mixed_none_and_content(monkeypatch):
function test_ascrape_with_js_support_exception_cleanup (line 1146) | async def test_ascrape_with_js_support_exception_cleanup(monkeypatch):
function test_init_dynamic_import_called (line 1204) | def test_init_dynamic_import_called(mock_dynamic_import):
function test_alazy_load_selenium_backend (line 1212) | async def test_alazy_load_selenium_backend(monkeypatch):
function test_ascrape_undetected_chromedriver_zero_retry (line 1228) | async def test_ascrape_undetected_chromedriver_zero_retry(monkeypatch):
function test_scrape_selenium_exception (line 1247) | async def test_scrape_selenium_exception(monkeypatch):
function test_ascrape_playwright_scroll_exception_cleanup (line 1264) | async def test_ascrape_playwright_scroll_exception_cleanup(monkeypatch):
function test_ascrape_with_js_support_non_timeout_retry (line 1330) | async def test_ascrape_with_js_support_non_timeout_retry(monkeypatch):
function test_scrape_uses_js_support_flag (line 1387) | async def test_scrape_uses_js_support_flag(monkeypatch):
function test_ascrape_playwright_calls_apply_stealth (line 1405) | async def test_ascrape_playwright_calls_apply_stealth(monkeypatch):
function test_lazy_load_non_string_scraper (line 1463) | async def test_lazy_load_non_string_scraper(monkeypatch):
function test_alazy_load_non_string_scraper (line 1485) | async def test_alazy_load_non_string_scraper(monkeypatch):
function test_ascrape_playwright_scroll_timeout_none (line 1506) | async def test_ascrape_playwright_scroll_timeout_none(monkeypatch, mock_...
function test_ascrape_with_js_support_browser_error_cleanup (line 1527) | async def test_ascrape_with_js_support_browser_error_cleanup(monkeypatch):
function dummy_non_async_scraper (line 1584) | def dummy_non_async_scraper(url):
function test_lazy_load_with_non_async_scraper (line 1589) | def test_lazy_load_with_non_async_scraper(monkeypatch, loader_with_dummy):
function test_ascrape_playwright_stealth_exception_cleanup (line 1603) | async def test_ascrape_playwright_stealth_exception_cleanup(monkeypatch):
function test_ascrape_with_js_support_value_error_success (line 1663) | async def test_ascrape_with_js_support_value_error_success(monkeypatch):
function test_ascrape_with_js_support_value_error_failure (line 1721) | async def test_ascrape_with_js_support_value_error_failure(monkeypatch):
function test_ascrape_playwright_scroll_scroll_to_bottom_false (line 1775) | async def test_ascrape_playwright_scroll_scroll_to_bottom_false(
function test_ascrape_with_js_support_browser_name_override_new (line 1800) | async def test_ascrape_with_js_support_browser_name_override_new(monkeyp...
function test_ascrape_playwright_scroll_load_state (line 1855) | async def test_ascrape_playwright_scroll_load_state(mock_playwright):
function test_alazy_load_concurrency (line 1877) | async def test_alazy_load_concurrency(monkeypatch):
function test_scrape_playwright_value_error_retry_failure (line 1905) | async def test_scrape_playwright_value_error_retry_failure(monkeypatch):
function test_invalid_proxy_raises_error (line 1922) | async def test_invalid_proxy_raises_error(monkeypatch):
function test_alazy_load_with_single_url_string (line 1937) | async def test_alazy_load_with_single_url_string(monkeypatch):
function test_lazy_load_with_single_url_string (line 1956) | def test_lazy_load_with_single_url_string(monkeypatch):
function test_ascrape_playwright_scroll_invalid_type (line 1974) | async def test_ascrape_playwright_scroll_invalid_type(monkeypatch):
function test_alazy_load_non_iterable_urls (line 1987) | async def test_alazy_load_non_iterable_urls():
function test_lazy_load_non_iterable_urls (line 1995) | def test_lazy_load_non_iterable_urls():
function test_ascrape_playwright_caplog (line 2002) | async def test_ascrape_playwright_caplog(monkeypatch, caplog):
function test_ascrape_with_js_support_context_error_cleanup (line 2096) | async def test_ascrape_with_js_support_context_error_cleanup(monkeypatch):
function test_lazy_load_with_none_urls (line 2139) | async def test_lazy_load_with_none_urls(monkeypatch):
function test_lazy_load_sequential_timing (line 2147) | def test_lazy_load_sequential_timing(monkeypatch):
function test_lazy_load_with_tuple_urls (line 2170) | def test_lazy_load_with_tuple_urls(monkeypatch):
FILE: tests/test_cleanup_html.py
function test_extract_from_script_tags (line 13) | def test_extract_from_script_tags():
function test_cleanup_html_success (line 32) | def test_cleanup_html_success():
function test_cleanup_html_no_body (line 61) | def test_cleanup_html_no_body():
function test_minify_html (line 70) | def test_minify_html():
function test_reduce_html_reduction_0 (line 86) | def test_reduce_html_reduction_0():
function test_reduce_html_reduction_1 (line 101) | def test_reduce_html_reduction_1():
function test_reduce_html_reduction_2 (line 120) | def test_reduce_html_reduction_2():
function test_reduce_html_no_body (line 142) | def test_reduce_html_no_body():
FILE: tests/test_csv_scraper_multi_graph.py
class DummyGraph (line 12) | class DummyGraph:
method __init__ (line 15) | def __init__(self, answer):
method execute (line 18) | def execute(self, inputs):
class DummyGraphNoAnswer (line 23) | class DummyGraphNoAnswer:
method execute (line 26) | def execute(self, inputs):
class DummyBaseGraph (line 31) | class DummyBaseGraph:
method __init__ (line 34) | def __init__(self, nodes, edges, entry_point, graph_name):
function test_run_no_answer (line 58) | def test_run_no_answer():
function test_create_graph_structure (line 74) | def test_create_graph_structure(monkeypatch):
function test_config_deepcopy (line 103) | def test_config_deepcopy():
function test_run_argument_passing (line 119) | def test_run_argument_passing():
function test_run_with_exception_in_execute (line 146) | def test_run_with_exception_in_execute():
FILE: tests/test_depth_search_graph.py
class TestDepthSearchGraph (line 9) | class TestDepthSearchGraph:
method test_depth_search_graph_initialization (line 19) | def test_depth_search_graph_initialization(self, source, expected_inpu...
FILE: tests/test_fetch_node_timeout.py
class TestFetchNodeTimeout (line 20) | class TestFetchNodeTimeout(unittest.TestCase):
method setUp (line 23) | def setUp(self):
method tearDown (line 57) | def tearDown(self):
method test_timeout_default_value (line 65) | def test_timeout_default_value(self):
method test_timeout_custom_value (line 74) | def test_timeout_custom_value(self):
method test_timeout_none_value (line 83) | def test_timeout_none_value(self):
method test_timeout_no_config (line 92) | def test_timeout_no_config(self):
method test_requests_get_with_timeout (line 102) | def test_requests_get_with_timeout(self, mock_requests):
method test_requests_get_without_timeout_when_none (line 125) | def test_requests_get_without_timeout_when_none(self, mock_requests):
method test_pdf_parsing_with_timeout (line 147) | def test_pdf_parsing_with_timeout(self):
method test_pdf_parsing_timeout_exceeded (line 163) | def test_pdf_parsing_timeout_exceeded(self):
method test_timeout_propagated_to_chromium_loader (line 189) | def test_timeout_propagated_to_chromium_loader(self, mock_loader_class):
method test_timeout_not_overridden_in_loader_kwargs (line 213) | def test_timeout_not_overridden_in_loader_kwargs(self, mock_loader_cla...
FILE: tests/test_generate_answer_node.py
class DummyLLM (line 19) | class DummyLLM:
method __call__ (line 20) | def __call__(self, *args, **kwargs):
class DummyLogger (line 24) | class DummyLogger:
method info (line 25) | def info(self, msg):
method error (line 28) | def error(self, msg):
function dummy_node (line 33) | def dummy_node():
function test_process_missing_content_and_user_prompt (line 45) | def test_process_missing_content_and_user_prompt(dummy_node):
class DummyLLMWithPipe (line 59) | class DummyLLMWithPipe:
method __or__ (line 64) | def __or__(self, other):
method __call__ (line 67) | def __call__(self, *args, **kwargs):
function dummy_node_with_pipe (line 72) | def dummy_node_with_pipe():
function test_execute_multiple_chunks (line 84) | def test_execute_multiple_chunks(dummy_node_with_pipe):
function test_execute_single_chunk (line 109) | def test_execute_single_chunk(dummy_node_with_pipe):
function test_execute_merge_json_decode_error (line 125) | def test_execute_merge_json_decode_error(dummy_node_with_pipe):
class DummyChain (line 152) | class DummyChain:
method invoke (line 156) | def invoke(self, inputs):
function dummy_node_for_process (line 161) | def dummy_node_for_process():
function test_process_success (line 174) | def test_process_success(dummy_node_for_process):
function test_execute_timeout_single_chunk (line 190) | def test_execute_timeout_single_chunk(dummy_node_with_pipe):
function test_execute_script_creator_single_chunk (line 206) | def test_execute_script_creator_single_chunk():
class DummyChatOllama (line 238) | class DummyChatOllama(ChatOllama):
class DummySchema (line 242) | class DummySchema:
method model_json_schema (line 245) | def model_json_schema(self):
function test_init_chat_ollama_format (line 249) | def test_init_chat_ollama_format():
FILE: tests/test_json_scraper_graph.py
class TestJSONScraperGraph (line 9) | class TestJSONScraperGraph:
method mock_llm_model (line 11) | def mock_llm_model(self):
method mock_embedder_model (line 15) | def mock_embedder_model(self):
method test_json_scraper_graph_with_directory (line 21) | def test_json_scraper_graph_with_directory(
method test_json_scraper_graph_with_single_file (line 78) | def test_json_scraper_graph_with_single_file(
method test_json_scraper_graph_no_answer_found (line 135) | def test_json_scraper_graph_no_answer_found(
method test_json_scraper_graph_with_custom_schema (line 189) | def test_json_scraper_graph_with_custom_schema(
FILE: tests/test_minimax_models.py
function models_tokens (line 11) | def models_tokens():
function test_minimax_m27_in_model_list (line 28) | def test_minimax_m27_in_model_list(models_tokens):
function test_minimax_m27_listed_first (line 35) | def test_minimax_m27_listed_first(models_tokens):
function test_minimax_old_models_still_present (line 42) | def test_minimax_old_models_still_present(models_tokens):
function test_minimax_m27_token_limits (line 51) | def test_minimax_m27_token_limits(models_tokens):
FILE: tests/test_models_tokens.py
class TestModelsTokens (line 4) | class TestModelsTokens:
method test_openai_tokens (line 7) | def test_openai_tokens(self):
method test_azure_openai_tokens (line 18) | def test_azure_openai_tokens(self):
method test_google_providers (line 26) | def test_google_providers(self):
method test_non_existent_provider (line 41) | def test_non_existent_provider(self):
method test_total_model_keys (line 47) | def test_total_model_keys(self):
method test_specific_token_value (line 52) | def test_specific_token_value(self):
method test_non_empty_model_keys (line 58) | def test_non_empty_model_keys(self):
method test_token_limits_range (line 66) | def test_token_limits_range(self):
method test_provider_structure (line 74) | def test_provider_structure(self):
method test_non_empty_provider (line 81) | def test_non_empty_provider(self):
method test_specific_model_token_values (line 88) | def test_specific_model_token_values(self):
method test_providers_count (line 108) | def test_providers_count(self):
method test_non_existent_model (line 114) | def test_non_existent_model(self):
method test_no_whitespace_in_model_names (line 121) | def test_no_whitespace_in_model_names(self):
method test_specific_models_additional (line 130) | def test_specific_models_additional(self):
method test_nvidia_specific (line 159) | def test_nvidia_specific(self):
method test_groq_specific (line 168) | def test_groq_specific(self):
method test_togetherai_specific (line 177) | def test_togetherai_specific(self):
method test_ernie_all_values (line 187) | def test_ernie_all_values(self):
FILE: tests/test_omni_search_graph.py
class DummyGraph (line 8) | class DummyGraph:
method __init__ (line 9) | def __init__(self, final_state):
method execute (line 12) | def execute(self, inputs):
class DummySchema (line 18) | class DummySchema(BaseModel):
class TestOmniSearchGraph (line 22) | class TestOmniSearchGraph:
method test_run_with_answer (line 25) | def test_run_with_answer(self):
method test_run_without_answer (line 42) | def test_run_without_answer(self):
method test_create_graph_structure (line 58) | def test_create_graph_structure(self):
method test_config_deepcopy (line 81) | def test_config_deepcopy(self):
method test_schema_deepcopy (line 96) | def test_schema_deepcopy(self):
FILE: tests/test_scrape_do.py
function test_scrape_do_fetch_without_proxy (line 9) | def test_scrape_do_fetch_without_proxy():
function test_scrape_do_fetch_with_proxy_no_geo (line 36) | def test_scrape_do_fetch_with_proxy_no_geo():
function test_scrape_do_fetch_with_proxy_with_geo (line 70) | def test_scrape_do_fetch_with_proxy_with_geo():
function test_scrape_do_fetch_without_proxy_custom_env (line 107) | def test_scrape_do_fetch_without_proxy_custom_env():
function test_scrape_do_fetch_with_proxy_custom_env (line 131) | def test_scrape_do_fetch_with_proxy_custom_env():
function test_scrape_do_fetch_exception_propagation (line 161) | def test_scrape_do_fetch_exception_propagation():
function test_scrape_do_fetch_with_proxy_with_geo_and_super_false (line 174) | def test_scrape_do_fetch_with_proxy_with_geo_and_super_false():
function test_scrape_do_fetch_empty_token_without_proxy (line 208) | def test_scrape_do_fetch_empty_token_without_proxy():
function test_scrape_do_fetch_with_proxy_with_empty_geo (line 230) | def test_scrape_do_fetch_with_proxy_with_empty_geo():
function test_scrape_do_fetch_api_encoding_special_characters (line 265) | def test_scrape_do_fetch_api_encoding_special_characters():
FILE: tests/test_script_creator_multi_graph.py
function set_api_key_env (line 12) | def set_api_key_env(monkeypatch):
class DummyGraph (line 17) | class DummyGraph:
method __init__ (line 18) | def __init__(self, final_state, execution_info):
method execute (line 22) | def execute(self, inputs):
class DummySchema (line 26) | class DummySchema(BaseModel):
class TestScriptCreatorMultiGraph (line 30) | class TestScriptCreatorMultiGraph:
method test_run_success (line 33) | def test_run_success(self):
method test_run_failure (line 50) | def test_run_failure(self):
method test_create_graph_structure (line 65) | def test_create_graph_structure(self):
method test_config_deepcopy (line 84) | def test_config_deepcopy(self):
method test_init_attributes (line 98) | def test_init_attributes(self):
method test_run_no_schema (line 116) | def test_run_no_schema(self):
method test_create_graph_node_configs (line 130) | def test_create_graph_node_configs(self):
method test_entry_point_node (line 150) | def test_entry_point_node(self):
method test_run_exception (line 162) | def test_run_exception(self):
method test_run_with_empty_prompt (line 181) | def test_run_with_empty_prompt(self):
method test_run_called_twice (line 196) | def test_run_called_twice(self):
FILE: tests/test_search_graph.py
class TestSearchGraph (line 8) | class TestSearchGraph:
method test_get_considered_urls (line 17) | def test_get_considered_urls(self, mock_create_llm, mock_base_graph, u...
method test_run_no_answer_found (line 41) | def test_run_no_answer_found(self, mock_create_llm, mock_base_graph):
method test_max_results_config (line 68) | def test_max_results_config(
method test_custom_search_engine_config (line 97) | def test_custom_search_engine_config(
FILE: tests/utils/convert_to_md_test.py
function test_basic_html_to_md (line 4) | def test_basic_html_to_md():
function test_html_with_links_and_images (line 9) | def test_html_with_links_and_images():
function test_html_with_tables (line 14) | def test_html_with_tables():
function test_empty_html (line 25) | def test_empty_html():
function test_complex_html_structure (line 30) | def test_complex_html_structure():
FILE: tests/utils/copy_utils_test.py
class PydantObject (line 8) | class PydantObject(BaseModel):
class NormalObject (line 12) | class NormalObject:
method __init__ (line 13) | def __init__(self, value):
class NonDeepcopyable (line 18) | class NonDeepcopyable:
method __init__ (line 19) | def __init__(self, value):
method __deepcopy__ (line 22) | def __deepcopy__(self, memo):
class WithoutDict (line 26) | class WithoutDict:
method __init__ (line 29) | def __init__(self, value):
method __deepcopy__ (line 32) | def __deepcopy__(self, memo):
method __copy__ (line 35) | def __copy__(self):
class NonCopyableObject (line 39) | class NonCopyableObject:
method __init__ (line 42) | def __init__(self, value):
method __deepcopy__ (line 45) | def __deepcopy__(self, memo):
method __copy__ (line 48) | def __copy__(self):
function test_deepcopy_simple_dict (line 52) | def test_deepcopy_simple_dict():
function test_deepcopy_simple_list (line 60) | def test_deepcopy_simple_list():
function test_deepcopy_with_tuple (line 68) | def test_deepcopy_with_tuple():
function test_deepcopy_with_frozenset (line 76) | def test_deepcopy_with_frozenset():
function test_deepcopy_with_object (line 83) | def test_deepcopy_with_object():
function test_deepcopy_with_custom_deepcopy_fallback (line 91) | def test_deepcopy_with_custom_deepcopy_fallback():
function test_shallow_copy_fallback (line 98) | def test_shallow_copy_fallback():
function test_circular_reference (line 105) | def test_circular_reference():
function test_deepcopy_object_without_dict (line 113) | def test_deepcopy_object_without_dict():
function test_unhandled_type (line 152) | def test_unhandled_type():
function test_client (line 158) | def test_client():
function test_circular_reference_in_dict (line 174) | def test_circular_reference_in_dict():
function test_with_pydantic (line 185) | def test_with_pydantic():
function test_with_boto3 (line 192) | def test_with_boto3():
FILE: tests/utils/parse_state_keys_test.py
function test_parse_expression (line 8) | def test_parse_expression():
FILE: tests/utils/research_web_test.py
function test_google_search (line 8) | def test_google_search():
function test_bing_search (line 15) | def test_bing_search():
function test_invalid_search_engine (line 22) | def test_invalid_search_engine():
function test_max_results (line 28) | def test_max_results():
FILE: tests/utils/test_proxy_rotation.py
function test_search_proxy_servers_success (line 14) | def test_search_proxy_servers_success():
function test_search_proxy_servers_exception (line 28) | def test_search_proxy_servers_exception():
function test_parse_proxy_success (line 40) | def test_parse_proxy_success():
function test_parse_proxy_exception (line 52) | def test_parse_proxy_exception():
function test_search_proxy_success (line 61) | def test_search_proxy_success():
function test_is_ipv4_address (line 69) | def test_is_ipv4_address():
function test_parse_or_search_proxy_success (line 75) | def test_parse_or_search_proxy_success():
function test_parse_or_search_proxy_exception (line 101) | def test_parse_or_search_proxy_exception():
function test_parse_or_search_proxy_unknown_server (line 113) | def test_parse_or_search_proxy_unknown_server():
FILE: tests/utils/test_sys_dynamic_import.py
function _create_sample_file (line 9) | def _create_sample_file(filepath: str, content: str):
function _delete_sample_file (line 15) | def _delete_sample_file(filepath: str):
function test_srcfile_import_success (line 21) | def test_srcfile_import_success():
function test_srcfile_import_missing_spec (line 36) | def test_srcfile_import_missing_spec():
function test_srcfile_import_missing_spec_loader (line 44) | def test_srcfile_import_missing_spec_loader(mocker):
function test_dynamic_import_success (line 62) | def test_dynamic_import_success():
function test_dynamic_import_module_already_imported (line 74) | def test_dynamic_import_module_already_imported():
function test_dynamic_import_import_error_with_custom_message (line 86) | def test_dynamic_import_import_error_with_custom_message():
Condensed preview — 361 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,117K chars).
[
{
"path": ".gitattributes",
"chars": 66,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 750,
"preview": "# These are supported funding model platforms\n\ngithub: ScrapeGraphAI\npatreon: # Replace with a single Patreon username\no"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 834,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
},
{
"path": ".github/ISSUE_TEMPLATE/custom.md",
"chars": 124,
"preview": "---\nname: Custom issue template\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: ''\nassignees: ''\n\n"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 595,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
},
{
"path": ".github/workflows/code-quality.yml",
"chars": 992,
"preview": "name: Code Quality Checks\n\non:\n push:\n paths:\n - 'scrapegraphai/**'\n - '.github/workflows/pylint.yml'\n\njob"
},
{
"path": ".github/workflows/codeql.yml",
"chars": 2593,
"preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
},
{
"path": ".github/workflows/dependency-review.yml",
"chars": 1729,
"preview": "# Dependency Review Action\n#\n# This Action will scan dependency manifest files that change as part of a Pull Request,\n# "
},
{
"path": ".github/workflows/release.yml",
"chars": 2723,
"preview": "name: Release\non:\n push:\n branches:\n - main\n - pre/*\n\njobs:\n build:\n name: Build\n runs-on: ubuntu-l"
},
{
"path": ".github/workflows/test-suite.yml",
"chars": 5539,
"preview": "name: Test Suite\n\non:\n push:\n branches: [main, pre/beta, dev]\n pull_request:\n branches: [main, pre/beta]\n workf"
},
{
"path": ".gitignore",
"chars": 2139,
"preview": ".DS_Store\n.DS_Store?\n._*\n\n# Byte-compiled / optimized / DLL files\n**/__pycache__/\n*.py[cod]\n*$py.class\n\n# Distribution /"
},
{
"path": ".pre-commit-config.yaml",
"chars": 480,
"preview": "repos:\n - repo: https://github.com/psf/black\n rev: 24.8.0\n hooks:\n - id: black\n\n - repo: https://github.com"
},
{
"path": ".readthedocs.yaml",
"chars": 1035,
"preview": "\n# Read the Docs configuration file for Sphinx projects\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html "
},
{
"path": ".releaserc.yml",
"chars": 1402,
"preview": "plugins:\n - - \"@semantic-release/commit-analyzer\"\n - preset: conventionalcommits\n - - \"@semantic-release/release-no"
},
{
"path": ".semantic-commits-applied",
"chars": 461,
"preview": "This file marks that commits have been rewritten to follow Conventional Commits format.\n\nOriginal commits:\n- 9439fe5: Fi"
},
{
"path": "CHANGELOG.md",
"chars": 276014,
"preview": "## [1.75.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v1.74.0...v1.75.0) (2026-03-18)\n\n\n### Features\n\n* up"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 5221,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
},
{
"path": "CONTRIBUTING.md",
"chars": 1119,
"preview": "# Contributing to ScrapeGraphAI 🚀\n\nHey there! Thanks for checking out **ScrapeGraphAI**! We're excited to have you here!"
},
{
"path": "Dockerfile",
"chars": 266,
"preview": "FROM python:3.11-slim\n\nRUN apt-get update && apt-get upgrade -y && rm -rf /var/lib/apt/lists/*\n\nRUN pip install --no-cac"
},
{
"path": "LICENSE",
"chars": 1058,
"preview": "Copyright 2024 Scrapgraph-ai team\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this "
},
{
"path": "Makefile",
"chars": 954,
"preview": "# Makefile for Project Automation\n\n.PHONY: install lint type-check test build all clean\n\n# Variables\nPACKAGE_NAME = scra"
},
{
"path": "PullRequests/PR_1027_reviews.md",
"chars": 802,
"preview": "This PR adds a null check for document.body before referencing document.body.scrollHeight. The motivation is that in som"
},
{
"path": "README.md",
"chars": 12776,
"preview": "## 🚀 **Looking for an even faster and simpler way to scrape at scale (only 5 lines of code)?** Check out our enhanced ve"
},
{
"path": "SECURITY.md",
"chars": 116,
"preview": "# Security Policy\n\n## Reporting a Vulnerability\n\nFor reporting a vulnerability contact directly mvincig11@gmail.com\n"
},
{
"path": "SEMANTIC_COMMITS.md",
"chars": 3942,
"preview": "# Semantic Commit Format for This PR\n\n## Current Situation\n\nThis PR contains commits that need to be rewritten to follow"
},
{
"path": "TESTING_INFRASTRUCTURE.md",
"chars": 9777,
"preview": "# Enhanced Testing Infrastructure - Implementation Summary\n\n## Overview\n\nA comprehensive testing infrastructure has been"
},
{
"path": "citation.cff",
"chars": 398,
"preview": "cff-version: 0.0.1\nmessage: \"If you use Scrapegraph-ai in your research, please cite it using these metadata.\"\nauthors:\n"
},
{
"path": "codebeaver.yml",
"chars": 117,
"preview": "from: pytest\nsetup_commands: ['@merge', 'pip install -q selenium', 'pip install -q playwright', 'playwright install']"
},
{
"path": "docker-compose.yml",
"chars": 224,
"preview": "version: '3.8'\nservices:\n ollama:\n image: ollama/ollama\n container_name: ollama\n ports:\n - \"11434:11434\"\n"
},
{
"path": "docs/Makefile",
"chars": 638,
"preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the "
},
{
"path": "docs/chinese.md",
"chars": 10184,
"preview": "## 🚀 **正在寻找更快、更简单的规模化抓取方式(只需5行代码)?** 查看我们在 [**ScrapeGraphAI.com**](https://scrapegraphai.com/?utm_source=github&utm_medi"
},
{
"path": "docs/japanese.md",
"chars": 10823,
"preview": "## 🚀 **さらに高速でシンプルな大規模スクレイピング方法(わずか5行のコード)をお探しですか?** [**ScrapeGraphAI.com**](https://scrapegraphai.com/?utm_source=github"
},
{
"path": "docs/korean.md",
"chars": 10907,
"preview": "## 🚀 **더 빠르고 간단한 대규모 스크래핑 방법(단 5줄의 코드)을 찾고 계신가요?** [**ScrapeGraphAI.com**](https://scrapegraphai.com/?utm_source=github&"
},
{
"path": "docs/make.bat",
"chars": 769,
"preview": "@ECHO OFF\n\npushd %~dp0\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-bu"
},
{
"path": "docs/portuguese.md",
"chars": 13132,
"preview": "## 🚀 **Procurando uma forma ainda mais rápida e simples de fazer scraping em escala (apenas 5 linhas de código)?** Confi"
},
{
"path": "docs/requirements-dev.txt",
"chars": 158,
"preview": "sphinx>=7.1.2\nsphinx-rtd-theme>=1.3.0\nmyst-parser>=2.0.0\nsphinx-copybutton>=0.5.2\nsphinx-design>=0.5.0\nsphinx-autodoc-ty"
},
{
"path": "docs/requirements.txt",
"chars": 175,
"preview": "sphinx>=7.1.2\n\nsphinx-rtd-theme>=1.3.0\nmyst-parser>=2.0.0\nsphinx-copybutton>=0.5.2\nsphinx-design>=0.5.0\nsphinx-autodoc-t"
},
{
"path": "docs/russian.md",
"chars": 13309,
"preview": "## 🚀 **Ищете еще более быстрый и простой способ масштабного скрейпинга (всего 5 строк кода)?** Ознакомьтесь с нашей улуч"
},
{
"path": "docs/source/conf.py",
"chars": 1389,
"preview": "# Configuration file for the Sphinx documentation builder.\n#\n# For the full list of built-in configuration values, see t"
},
{
"path": "docs/source/getting_started/examples.rst",
"chars": 2676,
"preview": "Examples\n========\n\nLet's suppose you want to scrape a website to get a list of projects with their descriptions.\nYou can"
},
{
"path": "docs/source/getting_started/installation.rst",
"chars": 1371,
"preview": "Installation\n------------\n\nIn the following sections I will guide you through the installation process of the required c"
},
{
"path": "docs/source/index.rst",
"chars": 958,
"preview": ".. Scrapegraph-ai documentation master file, created by\n sphinx-quickstart on Wed Jan 31 15:38:23 2024.\n You can ada"
},
{
"path": "docs/source/introduction/contributing.rst",
"chars": 523,
"preview": "Contributing\n============\n\nHey, you want to contribute? Awesome!\nJust fork the repo, make your changes, and send a pull "
},
{
"path": "docs/source/introduction/overview.rst",
"chars": 7686,
"preview": ".. image:: ../../assets/scrapegraphai_logo.png\n :align: center\n :width: 50%\n :alt: ScrapegraphAI\n\nOverview\n======="
},
{
"path": "docs/source/modules/modules.rst",
"chars": 116,
"preview": "scrapegraphai\n=============\n\n.. toctree::\n :maxdepth: 4\n\n scrapegraphai\n\n scrapegraphai.helpers.models_tokens\n"
},
{
"path": "docs/source/modules/scrapegraphai.builders.rst",
"chars": 411,
"preview": "scrapegraphai.builders package\n==============================\n\nSubmodules\n----------\n\nscrapegraphai.builders.graph\\_buil"
},
{
"path": "docs/source/modules/scrapegraphai.docloaders.rst",
"chars": 406,
"preview": "scrapegraphai.docloaders package\n================================\n\nSubmodules\n----------\n\nscrapegraphai.docloaders.chrom"
},
{
"path": "docs/source/modules/scrapegraphai.graphs.rst",
"chars": 3325,
"preview": "scrapegraphai.graphs package\n============================\n\nSubmodules\n----------\n\nscrapegraphai.graphs.abstract\\_graph m"
},
{
"path": "docs/source/modules/scrapegraphai.helpers.models_tokens.rst",
"chars": 1115,
"preview": "scrapegraphai.helpers.models_tokens module\n==========================================\n\n.. automodule:: scrapegraphai.hel"
},
{
"path": "docs/source/modules/scrapegraphai.helpers.rst",
"chars": 953,
"preview": "scrapegraphai.helpers package\n=============================\n\nSubmodules\n----------\n\nscrapegraphai.helpers.models\\_tokens"
},
{
"path": "docs/source/modules/scrapegraphai.integrations.rst",
"chars": 429,
"preview": "scrapegraphai.integrations package\n==================================\n\nSubmodules\n----------\n\nscrapegraphai.integrations"
},
{
"path": "docs/source/modules/scrapegraphai.models.rst",
"chars": 2156,
"preview": "scrapegraphai.models package\n============================\n\nSubmodules\n----------\n\nscrapegraphai.models.anthropic module\n"
},
{
"path": "docs/source/modules/scrapegraphai.nodes.rst",
"chars": 4114,
"preview": "scrapegraphai.nodes package\n===========================\n\nSubmodules\n----------\n\nscrapegraphai.nodes.base\\_node module\n--"
},
{
"path": "docs/source/modules/scrapegraphai.rst",
"chars": 421,
"preview": "scrapegraphai package\n=====================\n\nSubpackages\n-----------\n\n.. toctree::\n :maxdepth: 4\n\n scrapegraphai.bui"
},
{
"path": "docs/source/modules/scrapegraphai.utils.rst",
"chars": 2195,
"preview": "scrapegraphai.utils package\n===========================\n\nSubmodules\n----------\n\nscrapegraphai.utils.cleanup\\_html module"
},
{
"path": "docs/source/scrapers/graph_config.rst",
"chars": 3040,
"preview": ".. _Configuration:\n\nAdditional Parameters\n=====================\n\nIt is possible to customize the behavior of the graphs "
},
{
"path": "docs/source/scrapers/graphs.rst",
"chars": 320,
"preview": "Graphs\n======\n\nGraphs are scraping pipelines aimed at solving specific tasks. They are composed by nodes which can be co"
},
{
"path": "docs/source/scrapers/llm.rst",
"chars": 6837,
"preview": ".. _llm:\n\nLLM\n===\n\nWe support many known LLM models and providers used to analyze the web pages and extract the informat"
},
{
"path": "docs/source/scrapers/telemetry.rst",
"chars": 2074,
"preview": "===============\nUsage Analytics\n===============\n\nScrapeGraphAI collects **anonymous** usage data by default to improve t"
},
{
"path": "docs/source/scrapers/types.rst",
"chars": 7658,
"preview": "Types\n=====\n\n\nThere are several types of graphs available in the library, each with its own purpose and functionality. T"
},
{
"path": "docs/timeout_configuration.md",
"chars": 6541,
"preview": "# FetchNode Timeout Configuration\n\n## Overview\n\nThe `FetchNode` in ScrapeGraphAI supports configurable timeouts for all "
},
{
"path": "docs/turkish.md",
"chars": 13298,
"preview": "## 🚀 **Daha hızlı ve daha basit bir ölçekli kazıma yöntemi (sadece 5 satır kod) mi arıyorsunuz?** [**ScrapeGraphAI.com**"
},
{
"path": "examples/ScrapegraphAI_cookbook.ipynb",
"chars": 1557977,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"id\": \"9_CQrFgOj78b\"\n },\n "
},
{
"path": "examples/code_generator_graph/README.md",
"chars": 662,
"preview": "# Code Generator Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai to generate code based on specificat"
},
{
"path": "examples/code_generator_graph/ollama/code_generator_graph_ollama.py",
"chars": 1589,
"preview": "\"\"\"\nBasic example of scraping pipeline using Code Generator with schema\n\"\"\"\n\nfrom typing import List\n\nfrom dotenv import"
},
{
"path": "examples/code_generator_graph/openai/code_generator_graph_openai.py",
"chars": 1577,
"preview": "\"\"\"\nBasic example of scraping pipeline using Code Generator with schema\n\"\"\"\n\nimport os\nfrom typing import List\n\nfrom dot"
},
{
"path": "examples/csv_scraper_graph/README.md",
"chars": 608,
"preview": "# CSV Scraper Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai to extract data from web sources and sa"
},
{
"path": "examples/csv_scraper_graph/ollama/csv_scraper_graph_multi_ollama.py",
"chars": 1705,
"preview": "\"\"\"\nBasic example of scraping pipeline using CSVScraperMultiGraph from CSV documents\n\"\"\"\n\nimport os\n\nfrom scrapegraphai."
},
{
"path": "examples/csv_scraper_graph/ollama/csv_scraper_ollama.py",
"chars": 1725,
"preview": "\"\"\"\nBasic example of scraping pipeline using CSVScraperGraph from CSV documents\n\"\"\"\n\nimport os\n\nfrom scrapegraphai.graph"
},
{
"path": "examples/csv_scraper_graph/ollama/inputs/username.csv",
"chars": 175,
"preview": "Username; Identifier;First name;Last name\nbooker12;9012;Rachel;Booker\ngrey07;2070;Laura;Grey\njohnson81;4081;Craig;Johnso"
},
{
"path": "examples/csv_scraper_graph/openai/csv_scraper_graph_multi_openai.py",
"chars": 1441,
"preview": "\"\"\"\nBasic example of scraping pipeline using CSVScraperMultiGraph from CSV documents\n\"\"\"\n\nimport os\n\nfrom dotenv import "
},
{
"path": "examples/csv_scraper_graph/openai/csv_scraper_openai.py",
"chars": 1463,
"preview": "\"\"\"\nBasic example of scraping pipeline using CSVScraperGraph from CSV documents\n\"\"\"\n\nimport os\n\nfrom dotenv import load_"
},
{
"path": "examples/csv_scraper_graph/openai/inputs/username.csv",
"chars": 175,
"preview": "Username; Identifier;First name;Last name\nbooker12;9012;Rachel;Booker\ngrey07;2070;Laura;Grey\njohnson81;4081;Craig;Johnso"
},
{
"path": "examples/custom_graph/README.md",
"chars": 608,
"preview": "# Custom Graph Example\n\nThis example demonstrates how to create and implement custom graphs using Scrapegraph-ai.\n\n## Fe"
},
{
"path": "examples/custom_graph/ollama/custom_graph_ollama.py",
"chars": 2469,
"preview": "\"\"\"\nExample of custom graph using existing nodes\n\"\"\"\n\nfrom langchain_openai import ChatOpenAI, OpenAIEmbeddings\n\nfrom sc"
},
{
"path": "examples/custom_graph/openai/custom_graph_openai.py",
"chars": 2629,
"preview": "\"\"\"\nExample of custom graph using existing nodes\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\nfrom langchain_openai im"
},
{
"path": "examples/depth_search_graph/README.md",
"chars": 598,
"preview": "# Depth Search Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai for deep web crawling and content expl"
},
{
"path": "examples/depth_search_graph/ollama/depth_search_graph_ollama.py",
"chars": 749,
"preview": "\"\"\"\ndepth_search_graph_opeani example\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai.graphs import D"
},
{
"path": "examples/depth_search_graph/openai/depth_search_graph_openai.py",
"chars": 601,
"preview": "\"\"\"\ndepth_search_graph_opeani example\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai.graphs import D"
},
{
"path": "examples/document_scraper_graph/README.md",
"chars": 633,
"preview": "# Document Scraper Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai to extract data from various docum"
},
{
"path": "examples/document_scraper_graph/ollama/document_scraper_ollama.py",
"chars": 1651,
"preview": "\"\"\"\ndocument_scraper example\n\"\"\"\n\nimport json\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai.graphs import Document"
},
{
"path": "examples/document_scraper_graph/ollama/inputs/plain_html_example.txt",
"chars": 7288,
"preview": "<body class=\"fixed-top-nav \" style=\"padding-top: 57px;\">\n <header>\n <nav id=\"navbar\" class=\"navbar navbar-light n"
},
{
"path": "examples/document_scraper_graph/openai/document_scraper_openai.py",
"chars": 1410,
"preview": "\"\"\"\ndocument_scraper example\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai.graphs impor"
},
{
"path": "examples/document_scraper_graph/openai/inputs/markdown_example.md",
"chars": 1035,
"preview": " Toggle navigation\n\n * About\n * Projects(current)\n\nProjects\n\nCompetitions\n\n * CV\n * ____\n\n# Projects\n\n ![project thu"
},
{
"path": "examples/document_scraper_graph/openai/inputs/plain_html_example.txt",
"chars": 7288,
"preview": "<body class=\"fixed-top-nav \" style=\"padding-top: 57px;\">\n <header>\n <nav id=\"navbar\" class=\"navbar navbar-light n"
},
{
"path": "examples/extras/authenticated_playwright.py",
"chars": 2950,
"preview": "\"\"\"\nExample leveraging a state file containing session cookies which\nmight be leveraged to authenticate to a website and"
},
{
"path": "examples/extras/browser_base_integration.py",
"chars": 1336,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/extras/chromium_selenium.py",
"chars": 4916,
"preview": "import asyncio\nimport json\nimport os\n\nfrom aiohttp import ClientError\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai"
},
{
"path": "examples/extras/cond_smartscraper_usage.py",
"chars": 1024,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraperMultiConcatGraph with Groq\n\"\"\"\n\nimport json\nimport os\n\nfrom dot"
},
{
"path": "examples/extras/conditional_usage.py",
"chars": 980,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraperMultiConcatGraph with Groq\n\"\"\"\n\nimport json\nimport os\n\nfrom dot"
},
{
"path": "examples/extras/custom_prompt.py",
"chars": 1341,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/extras/example.yml",
"chars": 346,
"preview": "{\n \"llm\": {\n \"model\": \"ollama/llama3\",\n \"temperature\": 0,\n \"format\": \"json\",\n # \"base_url"
},
{
"path": "examples/extras/force_mode.py",
"chars": 1569,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegra"
},
{
"path": "examples/extras/html_mode.py",
"chars": 1349,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\nBy default smart scraper converts in md format the\ncode. If yo"
},
{
"path": "examples/extras/load_yml.py",
"chars": 990,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport yaml\n\nfrom scrapegraphai.graphs import SmartScrape"
},
{
"path": "examples/extras/no_cut.py",
"chars": 1151,
"preview": "\"\"\"\nThis example shows how to do not process the html code in the fetch phase\n\"\"\"\n\nimport json\n\nfrom scrapegraphai.graph"
},
{
"path": "examples/extras/proxy_rotation.py",
"chars": 1317,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nfrom scrapegraphai.graphs import SmartScraperGraph\nfrom s"
},
{
"path": "examples/extras/rag_caching.py",
"chars": 1227,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegra"
},
{
"path": "examples/extras/reasoning.py",
"chars": 1216,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/extras/scrape_do.py",
"chars": 956,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/extras/screenshot_scaping.py",
"chars": 1057,
"preview": "\"\"\"\nexample of scraping with screenshots\n\"\"\"\n\nimport asyncio\n\nfrom scrapegraphai.utils.screenshot_scraping import (\n "
},
{
"path": "examples/extras/serch_graph_scehma.py",
"chars": 985,
"preview": "\"\"\"\nExample of Search Graph\n\"\"\"\n\nimport os\nfrom typing import List\n\nfrom dotenv import load_dotenv\nfrom pydantic import "
},
{
"path": "examples/extras/slow_mo.py",
"chars": 1473,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nfrom scrapegraphai.graphs import SmartScraperGraph\nfrom s"
},
{
"path": "examples/extras/undected_playwright.py",
"chars": 1255,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegra"
},
{
"path": "examples/json_scraper_graph/README.md",
"chars": 614,
"preview": "# JSON Scraper Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai to extract and process JSON data from "
},
{
"path": "examples/json_scraper_graph/ollama/inputs/example.json",
"chars": 6431,
"preview": "{\n \"kind\":\"youtube#searchListResponse\",\n \"etag\":\"q4ibjmYp1KA3RqMF4jFLl6PBwOg\",\n \"nextPageToken\":\"CAUQAA\",\n \"regi"
},
{
"path": "examples/json_scraper_graph/ollama/json_scraper_multi_ollama.py",
"chars": 879,
"preview": "\"\"\"\nModule for showing how PDFScraper multi works\n\"\"\"\n\nimport json\nimport os\n\nfrom scrapegraphai.graphs import JSONScrap"
},
{
"path": "examples/json_scraper_graph/ollama/json_scraper_ollama.py",
"chars": 1803,
"preview": "\"\"\"\nBasic example of scraping pipeline using JSONScraperGraph from JSON documents\n\"\"\"\n\nimport os\n\nfrom dotenv import loa"
},
{
"path": "examples/json_scraper_graph/openai/inputs/example.json",
"chars": 6431,
"preview": "{\n \"kind\":\"youtube#searchListResponse\",\n \"etag\":\"q4ibjmYp1KA3RqMF4jFLl6PBwOg\",\n \"nextPageToken\":\"CAUQAA\",\n \"regi"
},
{
"path": "examples/json_scraper_graph/openai/json_scraper_multi_openai.py",
"chars": 817,
"preview": "\"\"\"\nModule for showing how PDFScraper multi works\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrap"
},
{
"path": "examples/json_scraper_graph/openai/json_scraper_openai.py",
"chars": 1636,
"preview": "\"\"\"\nBasic example of scraping pipeline using JSONScraperGraph from JSON documents\n\"\"\"\n\nimport os\n\nfrom dotenv import loa"
},
{
"path": "examples/json_scraper_graph/openai/md_scraper_openai.py",
"chars": 1619,
"preview": "\"\"\"\nBasic example of scraping pipeline using DocumentScraperGraph from MD documents\n\"\"\"\n\nimport os\n\nfrom dotenv import l"
},
{
"path": "examples/json_scraper_graph/openai/omni_scraper_openai.py",
"chars": 1317,
"preview": "\"\"\"\nBasic example of scraping pipeline using OmniScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfro"
},
{
"path": "examples/markdownify/markdownify_scrapegraphai.py",
"chars": 1019,
"preview": "\"\"\"\nExample script demonstrating the markdownify functionality\n\"\"\"\n\nimport os\nfrom dotenv import load_dotenv\nfrom scrape"
},
{
"path": "examples/markdownify/readme.md",
"chars": 1907,
"preview": "# Markdownify Graph Example\n\nThis example demonstrates how to use the Markdownify graph to convert HTML content to Markd"
},
{
"path": "examples/omni_scraper_graph/README.md",
"chars": 656,
"preview": "# Omni Scraper Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai for universal web scraping across mult"
},
{
"path": "examples/omni_scraper_graph/omni_search_openai.py",
"chars": 1158,
"preview": "\"\"\"\nExample of OmniSearchGraph\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai.graphs imp"
},
{
"path": "examples/readme.md",
"chars": 2784,
"preview": "# 🕷️ Scrapegraph-ai Examples\n\nThis directory contains various example implementations of Scrapegraph-ai for different us"
},
{
"path": "examples/script_generator_graph/README.md",
"chars": 628,
"preview": "# Script Generator Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai to generate automation scripts bas"
},
{
"path": "examples/script_generator_graph/ollama/script_generator_ollama.py",
"chars": 1298,
"preview": "\"\"\"\nBasic example of scraping pipeline using ScriptCreatorGraph\n\"\"\"\n\nfrom scrapegraphai.graphs import ScriptCreatorGraph"
},
{
"path": "examples/script_generator_graph/ollama/script_multi_generator_ollama.py",
"chars": 1586,
"preview": "\"\"\"\nBasic example of scraping pipeline using ScriptCreatorGraph\n\"\"\"\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai."
},
{
"path": "examples/script_generator_graph/openai/script_generator_multi_openai.py",
"chars": 1499,
"preview": "\"\"\"\nBasic example of scraping pipeline using ScriptCreatorGraph\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scr"
},
{
"path": "examples/script_generator_graph/openai/script_generator_openai.py",
"chars": 1282,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/script_generator_graph/openai/script_generator_schema_openai.py",
"chars": 1683,
"preview": "\"\"\"\nBasic example of scraping pipeline using ScriptCreatorGraph\n\"\"\"\n\nimport os\nfrom typing import List\n\nfrom dotenv impo"
},
{
"path": "examples/search_graph/README.md",
"chars": 647,
"preview": "# Search Graph Example\n\nThis example shows how to implement a search graph for web content retrieval and analysis using "
},
{
"path": "examples/search_graph/ollama/search_graph_ollama.py",
"chars": 1223,
"preview": "\"\"\"\nExample of Search Graph\n\"\"\"\n\nfrom scrapegraphai.graphs import SearchGraph\nfrom scrapegraphai.utils import convert_to"
},
{
"path": "examples/search_graph/ollama/search_graph_schema_ollama.py",
"chars": 1643,
"preview": "\"\"\"\nExample of Search Graph\n\"\"\"\n\nfrom typing import List\n\nfrom pydantic import BaseModel, Field\n\nfrom scrapegraphai.grap"
},
{
"path": "examples/search_graph/openai/search_graph_openai.py",
"chars": 759,
"preview": "\"\"\"\nExample of Search Graph\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegraphai.graphs import SearchGraph"
},
{
"path": "examples/search_graph/openai/search_graph_schema_openai.py",
"chars": 1563,
"preview": "\"\"\"\nExample of Search Graph\n\"\"\"\n\nimport os\nfrom typing import List\n\nfrom dotenv import load_dotenv\nfrom pydantic import "
},
{
"path": "examples/search_graph/openai/search_link_graph_openai.py",
"chars": 1097,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scrapegra"
},
{
"path": "examples/search_graph/scrapegraphai/readme.md",
"chars": 0,
"preview": ""
},
{
"path": "examples/search_graph/scrapegraphai/searchscraper_scrapegraphai.py",
"chars": 2249,
"preview": "\"\"\"\nExample implementation of search-based scraping using Scrapegraph AI.\nThis example demonstrates how to use the searc"
},
{
"path": "examples/smart_scraper_graph/nvidia/smart_scraper_nvidia.py",
"chars": 1219,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper with NVIDIA\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import loa"
},
{
"path": "examples/smart_scraper_graph/ollama/smart_scraper_lite_ollama.py",
"chars": 702,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\n\"\"\"\n\nimport json\n\nfrom scrapegraphai.graphs import SmartScrap"
},
{
"path": "examples/smart_scraper_graph/ollama/smart_scraper_multi_concat_ollama.py",
"chars": 996,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\n\nfrom dotenv import load_dotenv\n\nfrom scrapeg"
},
{
"path": "examples/smart_scraper_graph/ollama/smart_scraper_multi_lite_ollama.py",
"chars": 1222,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\n\nfrom scrapegraphai.graphs import SmartScrape"
},
{
"path": "examples/smart_scraper_graph/ollama/smart_scraper_multi_ollama.py",
"chars": 938,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\n\nfrom scrapegraphai.graphs import SmartScrape"
},
{
"path": "examples/smart_scraper_graph/ollama/smart_scraper_ollama.py",
"chars": 1164,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nfrom scrapegraphai.graphs import SmartScraperGraph\nfrom s"
},
{
"path": "examples/smart_scraper_graph/ollama/smart_scraper_schema_ollama.py",
"chars": 1402,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper with schema\n\"\"\"\n\nimport json\n\nfrom pydantic import BaseModel, "
},
{
"path": "examples/smart_scraper_graph/openai/smart_scraper_lite_openai.py",
"chars": 732,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/smart_scraper_graph/openai/smart_scraper_multi_concat_openai.py",
"chars": 973,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/smart_scraper_graph/openai/smart_scraper_multi_lite_openai.py",
"chars": 1224,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/smart_scraper_graph/openai/smart_scraper_multi_openai.py",
"chars": 962,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/smart_scraper_graph/openai/smart_scraper_openai.py",
"chars": 1158,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper\n\"\"\"\n\nimport json\nimport os\n\nfrom dotenv import load_dotenv\n\nfr"
},
{
"path": "examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py",
"chars": 1359,
"preview": "\"\"\"\nBasic example of scraping pipeline using SmartScraper with schema\n\"\"\"\n\nimport os\nfrom typing import List\n\nfrom doten"
},
{
"path": "examples/smart_scraper_graph/scrapegraphai/readme.md",
"chars": 3957,
"preview": "# Smart Scraper Examples with Scrapegraph AI\n\nThis repository contains examples demonstrating how to use Scrapegraph AI'"
},
{
"path": "examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai.py",
"chars": 1272,
"preview": "\"\"\"\nExample implementation using scrapegraph-py client directly.\n\"\"\"\n\nimport os\nfrom dotenv import load_dotenv\nfrom scra"
},
{
"path": "examples/speech_graph/README.md",
"chars": 617,
"preview": "# Speech Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai for speech processing and analysis.\n\n## Feat"
},
{
"path": "examples/speech_graph/speech_graph_openai.py",
"chars": 1504,
"preview": "\"\"\"\nBasic example of scraping pipeline using SpeechSummaryGraph\n\"\"\"\n\nimport os\n\nfrom dotenv import load_dotenv\n\nfrom scr"
},
{
"path": "examples/xml_scraper_graph/README.md",
"chars": 605,
"preview": "# XML Scraper Graph Example\n\nThis example demonstrates how to use Scrapegraph-ai to extract and process XML data from we"
},
{
"path": "examples/xml_scraper_graph/ollama/inputs/books.xml",
"chars": 4412,
"preview": "<?xml version=\"1.0\"?>\n<catalog>\n <book id=\"bk101\">\n <author>Gambardella, Matthew</author>\n <title>XML Develo"
},
{
"path": "examples/xml_scraper_graph/ollama/xml_scraper_graph_multi_ollama.py",
"chars": 1771,
"preview": "\"\"\"\nBasic example of scraping pipeline using XMLScraperMultiGraph from XML documents\n\"\"\"\n\nimport os\n\nfrom scrapegraphai."
},
{
"path": "examples/xml_scraper_graph/ollama/xml_scraper_ollama.py",
"chars": 1710,
"preview": "\"\"\"\nBasic example of scraping pipeline using XMLScraperGraph from XML documents\n\"\"\"\n\nimport os\n\nfrom dotenv import load_"
},
{
"path": "examples/xml_scraper_graph/openai/inputs/books.xml",
"chars": 4412,
"preview": "<?xml version=\"1.0\"?>\n<catalog>\n <book id=\"bk101\">\n <author>Gambardella, Matthew</author>\n <title>XML Develo"
},
{
"path": "examples/xml_scraper_graph/openai/xml_scraper_graph_multi_openai.py",
"chars": 1695,
"preview": "\"\"\"\nBasic example of scraping pipeline using XMLScraperMultiGraph from XML documents\n\"\"\"\n\nimport os\n\nfrom dotenv import "
},
{
"path": "examples/xml_scraper_graph/openai/xml_scraper_openai.py",
"chars": 1524,
"preview": "\"\"\"\nBasic example of scraping pipeline using XMLScraperGraph from XML documents\n\"\"\"\n\nimport os\n\nfrom dotenv import load_"
},
{
"path": "pyproject.toml",
"chars": 2965,
"preview": "[project]\nname = \"scrapegraphai\"\n\nversion = \"1.75.0\"\n\ndescription = \"A web scraping library based on LangChain which use"
},
{
"path": "pytest.ini",
"chars": 1619,
"preview": "[pytest]\n# Pytest configuration for ScrapeGraphAI\n\n# Test discovery patterns\npython_files = test_*.py *_test.py\npython_c"
},
{
"path": "readthedocs.yml",
"chars": 587,
"preview": "# Read the Docs configuration file for Sphinx projects\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html f"
},
{
"path": "requirements-dev.txt",
"chars": 134,
"preview": "sphinx>=7.1.2\nmyst-parser>=2.0.0\nsphinx-copybutton>=0.5.2\nsphinx-design>=0.5.0\nsphinx-autodoc-typehints>=1.25.2\nsphinx-a"
},
{
"path": "requirements.txt",
"chars": 134,
"preview": "sphinx>=7.1.2\nmyst-parser>=2.0.0\nsphinx-copybutton>=0.5.2\nsphinx-design>=0.5.0\nsphinx-autodoc-typehints>=1.25.2\nsphinx-a"
},
{
"path": "scrapegraphai/__init__.py",
"chars": 161,
"preview": "\"\"\"\n__init__.py file for scrapegraphai folder\n\"\"\"\n\nfrom .utils.logging import get_logger, set_verbosity_info\n\nlogger = g"
},
{
"path": "scrapegraphai/builders/__init__.py",
"chars": 188,
"preview": "\"\"\"\nThis module contains the builders for constructing various components in the ScrapeGraphAI application.\n\"\"\"\n\nfrom .g"
},
{
"path": "scrapegraphai/builders/graph_builder.py",
"chars": 6820,
"preview": "\"\"\"\nGraphBuilder Module\n\"\"\"\n\nfrom langchain_classic.chains import create_extraction_chain\nfrom langchain_community.chat_"
},
{
"path": "scrapegraphai/docloaders/__init__.py",
"chars": 304,
"preview": "\"\"\"\nThis module handles document loading functionalities for the ScrapeGraphAI application.\n\"\"\"\n\nfrom .browser_base impo"
},
{
"path": "scrapegraphai/docloaders/browser_base.py",
"chars": 1784,
"preview": "\"\"\"\nbrowserbase integration module\n\"\"\"\n\nimport asyncio\nfrom typing import List\n\n\ndef browser_base_fetch(\n api_key: st"
},
{
"path": "scrapegraphai/docloaders/chromium.py",
"chars": 21137,
"preview": "import asyncio\nfrom typing import Any, AsyncIterator, Iterator, List, Optional, Union\n\nimport aiohttp\nimport async_timeo"
},
{
"path": "scrapegraphai/docloaders/scrape_do.py",
"chars": 1644,
"preview": "\"\"\"\nScrape_do module\n\"\"\"\n\nimport os\nimport urllib.parse\n\nimport requests\nimport urllib3\n\nurllib3.disable_warnings(urllib"
},
{
"path": "scrapegraphai/graphs/__init__.py",
"chars": 2258,
"preview": "\"\"\"\nThis module defines the graph structures and related functionalities for the ScrapeGraphAI application.\n\"\"\"\n\nfrom .a"
},
{
"path": "scrapegraphai/graphs/abstract_graph.py",
"chars": 11608,
"preview": "\"\"\"\nAbstractGraph Module\n\"\"\"\n\nimport asyncio\nimport uuid\nimport warnings\nfrom abc import ABC, abstractmethod\nfrom typing"
},
{
"path": "scrapegraphai/graphs/base_graph.py",
"chars": 14405,
"preview": "\"\"\"\nbase_graph module\n\"\"\"\n\nimport time\nimport warnings\nfrom typing import Tuple\n\nfrom ..telemetry import log_graph_execu"
},
{
"path": "scrapegraphai/graphs/code_generator_graph.py",
"chars": 6629,
"preview": "\"\"\"\nSmartScraperGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes import"
},
{
"path": "scrapegraphai/graphs/csv_scraper_graph.py",
"chars": 3793,
"preview": "\"\"\"\nModule for creating the smart scraper\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ."
},
{
"path": "scrapegraphai/graphs/csv_scraper_multi_graph.py",
"chars": 3286,
"preview": "\"\"\"\nCSVScraperMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic im"
},
{
"path": "scrapegraphai/graphs/depth_search_graph.py",
"chars": 5173,
"preview": "\"\"\"\ndepth search graph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes impor"
},
{
"path": "scrapegraphai/graphs/document_scraper_graph.py",
"chars": 3933,
"preview": "\"\"\"\nThis module implements the Document Scraper Graph for the ScrapeGraphAI application.\n\"\"\"\n\nfrom typing import Optiona"
},
{
"path": "scrapegraphai/graphs/document_scraper_multi_graph.py",
"chars": 3437,
"preview": "\"\"\"\nDocumentScraperMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydant"
},
{
"path": "scrapegraphai/graphs/json_scraper_graph.py",
"chars": 3157,
"preview": "\"\"\"\nJSONScraperGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes import "
},
{
"path": "scrapegraphai/graphs/json_scraper_multi_graph.py",
"chars": 3329,
"preview": "\"\"\"\nJSONScraperMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic i"
},
{
"path": "scrapegraphai/graphs/markdownify_graph.py",
"chars": 2290,
"preview": "\"\"\"\nmarkdownify_graph module\n\"\"\"\n\nfrom typing import Dict, List, Optional, Tuple\n\nfrom ..nodes import (\n FetchNode,\n "
},
{
"path": "scrapegraphai/graphs/omni_scraper_graph.py",
"chars": 4593,
"preview": "\"\"\"\nThis module implements the Omni Scraper Graph for the ScrapeGraphAI application.\n\"\"\"\n\nfrom typing import Optional, T"
},
{
"path": "scrapegraphai/graphs/omni_search_graph.py",
"chars": 3688,
"preview": "\"\"\"\nOmniSearchGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import Optional, Type\n\nfrom pydantic import BaseMo"
},
{
"path": "scrapegraphai/graphs/screenshot_scraper_graph.py",
"chars": 2550,
"preview": "\"\"\"\nScreenshotScraperGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes i"
},
{
"path": "scrapegraphai/graphs/script_creator_graph.py",
"chars": 4077,
"preview": "\"\"\"\nScriptCreatorGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes impor"
},
{
"path": "scrapegraphai/graphs/script_creator_multi_graph.py",
"chars": 3429,
"preview": "\"\"\"\nScriptCreatorMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic"
},
{
"path": "scrapegraphai/graphs/search_graph.py",
"chars": 4415,
"preview": "\"\"\"\nSearchGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic import Base"
},
{
"path": "scrapegraphai/graphs/search_link_graph.py",
"chars": 3536,
"preview": "\"\"\"\nSearchLinkGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes import F"
},
{
"path": "scrapegraphai/graphs/smart_scraper_graph.py",
"chars": 10869,
"preview": "\"\"\"\nSmartScraperGraph Module\n\"\"\"\n\nimport logging\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom"
},
{
"path": "scrapegraphai/graphs/smart_scraper_lite_graph.py",
"chars": 3274,
"preview": "\"\"\"\nSmartScraperGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes import"
},
{
"path": "scrapegraphai/graphs/smart_scraper_multi_concat_graph.py",
"chars": 4243,
"preview": "\"\"\"\nSmartScraperMultiCondGraph Module with ConditionalNode\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optio"
},
{
"path": "scrapegraphai/graphs/smart_scraper_multi_graph.py",
"chars": 3720,
"preview": "\"\"\"\nSmartScraperMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic "
},
{
"path": "scrapegraphai/graphs/smart_scraper_multi_lite_graph.py",
"chars": 3752,
"preview": "\"\"\"\nSmartScraperMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic "
},
{
"path": "scrapegraphai/graphs/speech_graph.py",
"chars": 4241,
"preview": "\"\"\"\nSpeechGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..models import Open"
},
{
"path": "scrapegraphai/graphs/xml_scraper_graph.py",
"chars": 3252,
"preview": "\"\"\"\nXMLScraperGraph Module\n\"\"\"\n\nfrom typing import Optional, Type\n\nfrom pydantic import BaseModel\n\nfrom ..nodes import F"
},
{
"path": "scrapegraphai/graphs/xml_scraper_multi_graph.py",
"chars": 3319,
"preview": "\"\"\"\nXMLScraperMultiGraph Module\n\"\"\"\n\nfrom copy import deepcopy\nfrom typing import List, Optional, Type\n\nfrom pydantic im"
},
{
"path": "scrapegraphai/helpers/__init__.py",
"chars": 355,
"preview": "\"\"\"\nThis module provides helper functions and utilities for the ScrapeGraphAI application.\n\"\"\"\n\nfrom .models_tokens impo"
},
{
"path": "scrapegraphai/helpers/default_filters.py",
"chars": 498,
"preview": "\"\"\"\nModule for filtering irrelevant links\n\"\"\"\n\nfilter_dict = {\n \"diff_domain_filter\": True,\n \"img_exts\": [\".jpg\", "
},
{
"path": "scrapegraphai/helpers/models_tokens.py",
"chars": 13246,
"preview": "\"\"\"\nList of model tokens\n\"\"\"\n\nmodels_tokens = {\n \"openai\": {\n \"gpt-3.5-turbo-0125\": 16385,\n \"gpt-3.5\": "
},
{
"path": "scrapegraphai/helpers/nodes_metadata.py",
"chars": 3727,
"preview": "\"\"\"\nNodes metadata for the scrapegraphai package.\n\"\"\"\n\nnodes_metadata = {\n \"SearchInternetNode\": {\n \"descripti"
},
{
"path": "scrapegraphai/helpers/robots.py",
"chars": 399,
"preview": "\"\"\"\nModule for mapping the models in ai agents\n\"\"\"\n\nrobots_dictionary = {\n \"gpt-3.5-turbo\": [\"GPTBot\", \"ChatGPT-user\""
}
]
// ... and 161 more files (download for full content)
About this extraction
This page contains the full source code of the ScrapeGraphAI/Scrapegraph-ai GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 361 files (2.9 MB), approximately 774.0k tokens, and a symbol index with 926 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.