Risposta rapida
Come si usa una web search API dalla riga di comando?
Invia un body JSON con curl -d a https://llmwebsearch.com/api/v1/search, la tua chiave in un header Authorization: Bearer, e passa la risposta a jq. LLMWebSearch restituisce risultati ordinati con le prime 3 pagine come Markdown, così una sola riga può elencare le fonti o salvare le pagine su file. Una ricerca costa 1 credito, da 1,20 USD/1K ricerche a ottobre 2026. Senza KYC; paghi in criptovalute.
Come si configura il terminale una volta sola?
Esporta la chiave nella shell, così resta fuori dai comandi che digiti e fuori dalla cronologia. Le ricette qui sotto la leggono come $LLMWEBSEARCH_API_KEY. Ti serve anche jq, che la maggior parte dei package manager installa con quel nome.
Tutte le ricette presuppongono una shell POSIX come bash o zsh. Su Windows, Git Bash o WSL le eseguono senza modifiche.
export LLMWEBSEARCH_API_KEY="your-key"
curl -s "https://llmwebsearch.com/api/v1/credits" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .Come si elencano le fonti di una ricerca?
Esegui la ricerca con read impostato a 0 e stampa una riga per risultato: posizione, host e URL. Costa 1 credito e ti mostra, in un secondo, quali fonti tira fuori una domanda. È un buon modo per calibrare la formulazione di una query prima che la usi un agente.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
| jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'Come si salvano le pagine che sono state lette?
Tieni i risultati il cui content_status è ok e scrivi ogni content nel suo file. La ricetta qui sotto salva 01.md, 02.md e così via, ciascuno che inizia con il suo URL di origine. jq seleziona i risultati e il loop della shell scrive i file.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "postgres connection pool size", "read": 3}' > search.json
jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.mdCome si cercano notizie da alcuni siti?
Aggiungi topic, time_range e include_domains al body. La ricetta tiene le notizie dell'ultima settimana su due domini e stampa la data accanto a ogni titolo, abbastanza per tenere d'occhio un argomento da un cron job.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
| jq -r '.results[] | "\(.published_at // "no date") \(.title) \(.url)"'Come si usa la forma GET?
Usa curl -G con --data-urlencode per la query, così spazi e simboli vengono codificati per te. Le liste come include_domains diventano un unico valore separato da virgole. GET è comodo per un test veloce; gli script che crescono dovrebbero passare a POST.
curl -sG "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
--data-urlencode "q=pgbouncer transaction mode" \
-d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
| jq -r '.results[0].content // .results[0].snippet'Come si leggono URL che ho già?
Inviale a /extract come array JSON da 1 a 20 indirizzi. Leggere pagine di cui hai già gli URL costa 1 credito per ogni gruppo iniziato di 3 pagine restituite con contenuto, fino a 20 URL per chiamata; gli URL rifiutati o falliti non vengono contati. La ricetta stampa ogni URL con il suo stato e il conteggio delle parole, che mostra a colpo d'occhio quali pagine un sito ci ha permesso di leggere.
curl -s "https://llmwebsearch.com/api/v1/extract" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]}' \
| jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'Come vedo l'errore quando una chiamata fallisce?
Stampa lo status HTTP con -w e conserva il body: gli errori tornano come JSON con un code e un message. Uno script può poi diramare sullo status, per esempio aspettando e riprovando solo su 429, 502 o 504. Nessuno di questi errori consuma un credito.
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "test query"}')
if [ "$status" != "200" ]; then
echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
ficurl: domande frequenti
Perché il mio body JSON fallisce con invalid_parameter?
Di solito è un problema di quoting. Racchiudi il body tra apici singoli in bash così le virgolette doppie interne restano intatte, e controllalo con echo '…' | jq . prima di inviarlo.
Posso passare la chiave nell'URL?
Sì, con -d api_key=… nella forma GET. L'header è più sicuro, perché la cronologia della shell e i log dei proxy registrano gli URL.
Una chiamata curl fallita costa un credito?
No. Gli errori HTTP non usano mai crediti. Viene fatturata solo una ricerca che restituisce risultati, come mostra credits_used.