> For the complete documentation index, see [llms.txt](https://docs.opencityitalia.it/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opencityitalia.it/ai/architettura-e-funzionalita-del-chatbot/architettura-e-sicurezza-dei-dati/indicizzazione-dei-contenuti/opencity-ai-chatbot-crawler.md).

# OpenCity AI Crawler

### Cos'è l'OpenCity AI Crawler?

Il crawler di **OpenCity AI** è un web scraper sviluppato da OpenCity Labs per leggere e indicizzare contenuti web pubblici.

Viene utilizzato per alimentare la base di conoscenza del Chatbot AI, per analisi di siti web e per ricerca di contenuti pubblici.

### Come identificarlo nei log

Se vedi il nostro crawler nei log del tuo server, lo riconosci dalla seguente stringa `User-Agent`:

```
Mozilla/5.0 (compatible; OpenCityAI-Crawler/1.0; +https://link.opencitylabs.it/ai-chatbot-crawler)
```

Il token da usare nelle regole `robots.txt` è `OpenCityAI-Crawler`.

### Cosa fa

* **Scoperta pagine:** parte dalla root del sito e dalla sitemap XML, poi segue i link interni per scoprire nuove pagine.
* **Frequenza adattiva:** ogni pagina viene ri-scansionata periodicamente, in genere ogni 24–168 ore, in base alla frequenza di aggiornamento dichiarata nella sitemap e alla variazione effettiva del contenuto.
* **Rate limiting automatico:** in caso di errori `429` o `503`, il crawler rallenta automaticamente e rispetta l'eventuale header `Retry-After`.
* **Solo contenuto pubblico:** non accede ad aree autenticate, non compila form e non interagisce con elementi che richiedono login.

### Comportamento

Il nostro crawler:

* rispetta rigorosamente il Web Robots Exclusion Protocol, inclusi `Disallow`, `Allow` e `Crawl-delay`;
* adatta automaticamente la velocità di scansione in base alle risposte del server;
* mantiene un intervallo minimo tra le richieste allo stesso host.

### Come controllare il crawler tramite robots.txt

#### Bloccare sezioni specifiche

```
User-agent: OpenCityAI-Crawler
Disallow: /area-riservata/
Disallow: /documenti-interni/
```

#### Impostare un ritardo tra le richieste

```
User-agent: OpenCityAI-Crawler
Crawl-delay: 5
```

#### Bloccare completamente il crawler

```
User-agent: OpenCityAI-Crawler
Disallow: /
```

{% hint style="info" %}
Se il tuo sito ha `Disallow: /` per `User-agent: *` e vuoi che il nostro crawler possa comunque accedere, aggiungi un blocco specifico:

```
User-agent: OpenCityAI-Crawler
Allow: /
```

{% endhint %}

### Verifica dell'autenticità

Il crawler proviene da questi IP:

* `3.250.32.208`
* `3.253.249.121`

### Contatti

Per domande, segnalazioni di comportamenti anomali o supporto nella configurazione del `robots.txt`:

* **Sito web:** [www.opencitylabs.it](http://www.opencitylabs.it)
* **Email:** <support@opencitylabs.it>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.opencityitalia.it/ai/architettura-e-funzionalita-del-chatbot/architettura-e-sicurezza-dei-dati/indicizzazione-dei-contenuti/opencity-ai-chatbot-crawler.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
