# สูตร curl และ jq สำหรับ web search API

> Web search API ด้วย curl และ jq: ค้นหา แสดงแหล่งที่มา บันทึกเป็น Markdown กรองข่าวและโดเมน อ่าน URL ที่รู้อยู่แล้ว ตรวจเครดิต ไม่ต้อง KYC จ่ายด้วยคริปโต

- URL: https://llmwebsearch.com/th/docs/curl/
- อัปเดตล่าสุด: 2026-10-22
- ผู้เผยแพร่: LLMWebSearch (https://llmwebsearch.com)

ทุกฟีเจอร์ของ API ใช้งานได้จาก terminal สูตรเหล่านี้ใช้ `curl` เรียก API และใช้ `jq` จัดรูปแบบ JSON: มีประโยชน์สำหรับทดสอบคำค้นหาก่อนเขียนโค้ด สำหรับ shell script และสำหรับ cron job

**คำตอบสั้น — ฉันจะใช้ web search API จาก command line ได้อย่างไร**

ส่ง JSON body ที่มี `curl -d` ไปยัง `https://llmwebsearch.com/api/v1/search` ใส่ key ของคุณใน header `Authorization: Bearer` แล้ว pipe คำตอบไปยัง `jq` **LLMWebSearch** คืนผลลัพธ์ที่จัดอันดับพร้อม 3 หน้าแรกเป็น Markdown ดังนั้นบรรทัดเดียวสามารถแสดงรายการแหล่งที่มาหรือบันทึกหน้าเว็บลงไฟล์ได้ การค้นหา 1 ครั้งใช้ 1 เครดิต เริ่มต้นที่ US$1.20/1K การค้นหา ณ ตุลาคม 2026 ไม่ต้อง KYC; จ่ายด้วยคริปโต

## ฉันจะตั้งค่า terminal ครั้งเดียวได้อย่างไร

export key ของคุณใน shell เพื่อให้ key ไม่ปรากฏในคำสั่งที่พิมพ์และไม่ปรากฏใน history สูตรด้านล่างอ่าน key เป็น `$LLMWEBSEARCH_API_KEY` คุณยังต้องมี `jq` ซึ่ง package manager ส่วนใหญ่ติดตั้งภายใต้ชื่อนั้น

สูตรทั้งหมดสมมติว่าใช้ POSIX shell เช่น bash หรือ zsh บน Windows ให้ใช้ Git Bash หรือ WSL รันได้โดยไม่ต้องแก้ไข

*ตั้งค่า key และตรวจสอบยอดคงเหลือ (ฟรี)*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## ฉันจะแสดงรายการแหล่งที่มาของการค้นหาได้อย่างไร

รันการค้นหาโดยตั้ง `read` เป็น `0` แล้วพิมพ์หนึ่งบรรทัดต่อผลลัพธ์: ตำแหน่ง, host และ URL ใช้ 1 เครดิต และแสดงให้เห็นในไม่กี่วินาทีว่าคำถามดึงแหล่งที่มาใดขึ้นมา เป็นวิธีที่ดีในการปรับถ้อยคำของคำค้นหาก่อนที่ agent จะใช้งาน

*หนึ่งบรรทัดต่อผลลัพธ์*

```bash
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)"'
```

## ฉันจะบันทึกหน้าที่ถูกอ่านได้อย่างไร

เก็บผลลัพธ์ที่ `content_status` เป็น `ok` และเขียนแต่ละ `content` ลงไฟล์ของตัวเอง สูตรด้านล่างบันทึก `01.md`, `02.md` และอื่นๆ โดยแต่ละไฟล์เริ่มด้วย URL ต้นทาง jq เลือกผลลัพธ์และ shell loop เขียนไฟล์

*บันทึกแต่ละหน้าเป็น Markdown*

```bash
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 ./*.md
```

## ฉันจะค้นหาข่าวจากบางเว็บไซต์ได้อย่างไร

เพิ่ม `topic`, `time_range` และ `include_domains` ลงใน body สูตรเก็บข่าวจากสัปดาห์ที่ผ่านมาบนสองโดเมนและพิมพ์วันที่ข้างๆ แต่ละหัวข้อ เพียงพอที่จะติดตามหัวข้อจาก cron job

*ข่าวสัปดาห์ที่ผ่านมาจากสองโดเมน*

```bash
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)"'
```

## ฉันจะใช้รูปแบบ GET ได้อย่างไร

ใช้ `curl -G` กับ `--data-urlencode` สำหรับคำค้นหา เพื่อให้ช่องว่างและสัญลักษณ์ถูก encode ให้คุณ รายการเช่น `include_domains` จะกลายเป็นค่าที่คั่นด้วยจุลภาคค่าเดียว GET สะดวกสำหรับการทดสอบอย่างรวดเร็ว; script ที่ขยายควรเปลี่ยนไปใช้ POST

*GET /search*

```bash
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'
```

## ฉันจะอ่าน URL ที่มีอยู่แล้วได้อย่างไร

ส่ง URL เหล่านั้นไปยัง `/extract` เป็น JSON array ที่มี 1 ถึง 20 ที่อยู่ การอ่านหน้าเว็บที่คุณมี URL อยู่แล้วใช้ 1 เครดิตต่อกลุ่ม 3 หน้าที่เริ่มอ่านและส่งกลับพร้อมเนื้อหา สูงสุด 20 URL ต่อการเรียก; URL ที่ถูกปฏิเสธหรือล้มเหลวไม่ถูกนับ สูตรพิมพ์แต่ละ URL พร้อมสถานะและจำนวนคำ ซึ่งแสดงให้เห็นในพริบตาว่าเว็บไซต์อนุญาตให้เราอ่านหน้าใดบ้าง

*POST /extract*

```bash
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)")'
```

## จะดูข้อผิดพลาดเมื่อการเรียกล้มเหลวได้อย่างไร?

พิมพ์ HTTP status ด้วย `-w` และเก็บ body ไว้: ข้อผิดพลาดจะส่งกลับมาเป็น JSON พร้อม `code` และ `message` จากนั้นสคริปต์สามารถแยกตาม status ได้ เช่น รอแล้วลองใหม่เฉพาะเมื่อเจอ `429`, `502` หรือ `504` ข้อผิดพลาดเหล่านี้ไม่ใช้เครดิต

*Status code และ error body*

```bash
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)"
fi
```

## curl: คำถามที่พบบ่อย

### ทำไม JSON body ของฉันถึงล้มเหลวด้วย invalid_parameter?

มักเป็นปัญหาเรื่องการใส่เครื่องหมายคำพูด ใส่ body ใน single quotes ใน bash เพื่อให้ double quotes ด้านในคงอยู่ แล้วตรวจสอบด้วย `echo '…' | jq .` ก่อนส่ง

### ใส่ API key ใน URL ได้ไหม?

ได้ โดยใช้ `-d api_key=…` ในรูปแบบ GET แต่ header ปลอดภัยกว่า เพราะ shell history และ log ของ proxy บันทึก URL ไว้

### การเรียก curl ที่ล้มเหลวเสียเครดิตไหม?

ไม่ HTTP errors ไม่ใช้เครดิตเลย มีเพียงการค้นหาที่ได้ผลลัพธ์เท่านั้นที่ถูกคิดเงิน ตามที่ `credits_used` แสดง

---

LLMWebSearch: LLMWebSearch คือ web search API สำหรับ AI agents ที่คืนผลการค้นหาที่จัดอันดับแล้วพร้อมเนื้อหาของหน้าอันดับต้นๆ ในรูปแบบ Markdown จ่ายด้วยคริปโตโดยไม่ต้องอัปโหลดเอกสารยืนยันตัวตน เครดิตแบบเติมล่วงหน้าตั้งแต่ US$1.20/1K การค้นหา ไม่มีวันหมดอายุ ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
