#!/bin/bash # Tavily 搜索 → JSON 输出 read -r input QUERY=$(echo "$input" | python3 -c "import sys,json; print(json.load(sys.stdin).get('query',''))" 2>/dev/null) COUNT=$(echo "$input" | python3 -c "import sys,json; print(json.load(sys.stdin).get('count',5))" 2>/dev/null) [ -z "$QUERY" ] && echo '{"error":"请提供 query 参数"}' && exit 0 API_KEY="${TAVILY_API_KEY}" [ -z "$API_KEY" ] && echo '{"error":"请设置 TAVILY_API_KEY"}' && exit 0 export SEARCH_QUERY="$QUERY" SEARCH_COUNT="$COUNT" RESP=$(python3 -c " import urllib.request, json, os key = os.environ['TAVILY_API_KEY'] query = os.environ['SEARCH_QUERY'] count = int(os.environ.get('SEARCH_COUNT', 5)) body = json.dumps({'api_key': key, 'query': query, 'max_results': count, 'include_answer': True}).encode() req = urllib.request.Request('https://api.tavily.com/search', data=body, headers={'Content-Type': 'application/json'}) print(urllib.request.urlopen(req).read().decode()) " 2>/dev/null) export RESP QUERY COUNT python3 -c " import os, json d = json.loads(os.environ['RESP']) result = { 'query': os.environ['QUERY'], 'answer': d.get('answer', ''), 'results': [ {'title': r.get('title', ''), 'url': r.get('url', ''), 'content': r.get('content', '')[:300]} for r in d.get('results', [])[:int(os.environ['COUNT'])] ] } print(json.dumps(result, ensure_ascii=False)) " 2>/dev/null || echo '{"error":"搜索请求失败"}'