Model or dataset
TheBlewish/Automated-AI-Web-Researcher-Ollama avatar
TheBlewish/Automated-AI-Web-Researcher-Ollama

Automated-AI-Web-Researcher-Ollama: an Ollama-driven research loop that writes its own focus areas

A python program that turns an LLM, running on Ollama, into an automated researcher, which will with a single query determine focus areas to investigate, do websearches and scrape content from various relevant websites and do research for you all on its own! And more, not limited to but including saving the findings for you!

3,013 stars276 forksPythonMIT

At a glance

What is it?
A Python script that turns a local Ollama model into a looping web researcher: it plans focus areas, searches, scrapes, saves everything to a text file, and then answers questions about what it found. The interesting part is the control loop. The weak part is the search layer it depends on.
Who is it for?
Adopt it if you already run Ollama locally, want a research trail on disk rather than in a chat window, and are willing to babysit a loop that can wander. Skip it if you need reproducible, citation-grade output, or if you are on Windows and unwilling to switch to the feature/windows-support branch.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 14 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap between asking a model a question and having it go look things up

A chat interface answers from weights. If the answer is not in the weights, the model improvises. The README frames the project against exactly that: "Unlike traditional LLM interactions, this tool actually performs structured research." The distinction the author draws is between a single generation and a sequence of retrieval steps that leave a paper trail.

The intended user is someone with a local Ollama install who wants a research artifact, not a conversation. The README describes the output as a text document containing retrieved content, source URLs, the focus areas investigated, and a generated summary. That is a different deliverable from a chat transcript, and it is the reason the tool exists. It is not aimed at someone who wants a fast answer to a factual question. It is aimed at someone who wants a hundred pages of scraped material on a topic and a summary on top of it.

The research loop: focus areas, priorities, and a second pass

The mechanism is a cycle, and the README lays it out in numbered steps. A query goes in. The model generates five focus areas, each carrying a priority derived from relevance to the question. The loop starts at the highest priority area and, for each one, formulates search queries, runs the searches, picks pages from the results, scrapes them, and appends the extracted content plus source links to a research text file.

When all focus areas are exhausted, the model generates new focus areas from what it has already found. The README calls this a "Self-improving search mechanism" and notes it "often discovering new relevant focus areas based on previous findings." That is the design bet: the second generation of focus areas is informed by scraped material rather than by the original query alone. Whether that produces better coverage or just drift depends on the model, and the README does not quantify it.

The loop is unbounded by default. The README states you can let it run as long as you like and stop it with a quit command, at which point the model reviews everything collected and produces a final summary. It also claims the tool can perform "over a hundred searches and content retrievals in a relatively short amount of time" depending on system and model. That is an author's claim, not a measured figure, and the README gives no hardware baseline for it.

What happens on disk and what the console shows

Every research session writes a text file into the program's directory. According to the README, that file holds all retrieved content, the source URLs for that content, the focus areas that were investigated, and the generated summary. This is the part of the design that ages well: the raw material survives independently of the model that gathered it, so you can re-read sources later without re-running the loop.

The console is described as "Rich console output with status indicators," which points at the Rich library for terminal rendering, though the README does not name the dependency. During a run you can type a single letter and submit it with CTRL+D: s for status, f for the current focus, q to quit, and p to pause. The pause command is the most interesting of the four. It asks the model to review the entire collected content and judge whether the query can already be answered, then waits for c to continue or q to terminate. That is a manual checkpoint against a loop that would otherwise run until you kill it.

Getting it running: clone, venv, Ollama, and one config block

The README gives a Linux and macOS path on main. Clone the repository, create a virtual environment with python -m venv venv, activate it, and run pip install -r requirements.txt. Then install Ollama separately from ollama.ai and pull a model.

Configuration lives in llm_config.py. The README shows the ollama section with keys llm_type set to "ollama", base_url defaulting to http://localhost:11434, model_name, temperature 0.7, top_p 0.9, n_ctx 55000, and a stop list of ["User:", "\n\n"]. You change model_name to whatever you have pulled, and you can change n_ctx to set the context size. The README recommends phi3:3.8b-mini-128k-instruct or phi3:14b-medium-128k-instruct, and the stated reason is context length for lots of searches. Note the mismatch a reader will hit immediately: the recommendation points at 128k-capable models while the sample config sits at 55000. That is a configuration decision you have to make, not one the README makes for you.

Running it is two commands. Start the server with ollama serve, then run python Web-LLM.py. To begin a session you type @ followed by the query and press CTRL+D. The README's example is @What year is the global population projected to start declining?

Windows is a branch, and the search layer is not in this repository

The README is explicit that Windows users should follow the instructions on the feature/windows-support branch, while Linux and macOS use main. That is a real constraint: the main branch instructions assume a POSIX shell, and a Windows user following them will hit the venv activation step and the source command before anything else. Whether the branch is current with main is not something the README states.

The larger limitation is structural. The README describes searching and scraping as steps the program performs, but it does not document which search backend is used, what rate limits apply, how pages are selected from results, or how scraping handles JavaScript-rendered pages, paywalls, or robots.txt. Those are the failure modes that decide whether a research run produces usable material or a file full of navigation menus and cookie notices. Nothing in the supplied material answers them, so treat the retrieval quality as unverified until you read the source. A model with a 55k context window that appends every scraped page to a growing file will also accumulate noise, and the README offers no deduplication or relevance filtering step between scraping and saving.

The author's own successor, and what the comparison says

The README opens with a pointer to a different project by the same author: Academic-AI-Literature-Reviewer-Ollama, described as a successor with a codebase twenty times larger that searches academic articles instead of the open web and is described as "hallucination proof." That is the most useful comparison available here, and it comes from the maintainer rather than from a third party.

The difference in approach is the corpus. This project queries the general web and scrapes whatever the search results return, which means source quality is whatever the search engine ranks. The successor targets academic literature, where sources carry identifiers, authorship, and a review process. If your question is empirical and you need to trace claims to papers, the successor is the tool the author himself points at. If your question is broader, current, or not well covered in journals, the open-web loop is the one that applies. There is also a scope difference: this repository is the smaller, simpler artifact, and the README presents it as superseded for academic work rather than deprecated outright.

Maintenance, licence, and what the repository state tells you

The licence is MIT, which permits commercial use, modification, and redistribution provided the copyright notice and permission notice are included. That is a permissive arrangement, and it matters here because the tool writes scraped third-party content to disk. The MIT grant covers this project's code, not the pages it retrieves; redistributing a research file full of scraped text is a separate question from redistributing the script, and the README does not address it. Nothing here is legal advice, and if you plan to publish the output you should look at the terms of the sites involved.

The repository is not archived and the last push is dated 2026-09-02. No releases were retrieved, so installation is from the main branch rather than from a tagged version. That has a practical consequence: there is no version number to pin, and an update to main is an update to what you run. The dependency surface is a requirements.txt plus a separate Ollama install, and the README does not list pinned versions, so reproducing an exact environment later means capturing that file yourself. For a research tool whose value is partly in its output trail, that is worth doing on the first working setup.

Editorial conclusion

Adopt it if you already run Ollama locally, want a research trail on disk rather than in a chat window, and are willing to babysit a loop that can wander. Skip it if you need reproducible, citation-grade output, or if you are on Windows and unwilling to switch to the feature/windows-support branch. Before running anything, check that your chosen model's context window matches the n_ctx value in llm_config.py, because the README recommends 128k-capable phi3 variants while the shipped example shows 55000.

Official sources

  1. Issues
  2. License: MIT
  3. README
  4. TheBlewish/Automated-AI-Web-Researcher-Ollama on GitHub
Community notes

Community notes