64 lines
1.3 KiB
Bash
Executable File
64 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="/home/openclaw/.openclaw/workspace"
|
|
SEARX_SCRIPT="$ROOT/skills/searxng-local-search/scripts/search.sh"
|
|
BRAVE_SCRIPT="$ROOT/skills/brave-mcp-search/scripts/search.sh"
|
|
|
|
if [[ $# -lt 1 ]]; then
|
|
echo 'Usage: scripts/search.sh "query" '\''{"count":5}'\''' >&2
|
|
exit 1
|
|
fi
|
|
|
|
QUERY="$1"
|
|
OPTS="${2:-}"
|
|
TMP1="$(mktemp)"
|
|
TMP2="$(mktemp)"
|
|
trap 'rm -f "$TMP1" "$TMP2"' EXIT
|
|
|
|
run_searx() {
|
|
if [[ -n "$OPTS" ]]; then
|
|
"$SEARX_SCRIPT" "$QUERY" "$OPTS" >"$TMP1" 2>&1
|
|
else
|
|
"$SEARX_SCRIPT" "$QUERY" >"$TMP1" 2>&1
|
|
fi
|
|
}
|
|
|
|
run_brave() {
|
|
if [[ -n "$OPTS" ]]; then
|
|
"$BRAVE_SCRIPT" "$QUERY" "$OPTS" >"$TMP2" 2>&1
|
|
else
|
|
"$BRAVE_SCRIPT" "$QUERY" >"$TMP2" 2>&1
|
|
fi
|
|
}
|
|
|
|
searx_good=false
|
|
if run_searx; then
|
|
if grep -qE '^[0-9]+\.' "$TMP1" \
|
|
&& ! grep -q 'Found 0 total results' "$TMP1" \
|
|
&& ! grep -q 'No results found\.' "$TMP1"; then
|
|
searx_good=true
|
|
fi
|
|
fi
|
|
|
|
if [[ "$searx_good" == true ]]; then
|
|
printf 'Backend: SearXNG\n\n'
|
|
cat "$TMP1"
|
|
exit 0
|
|
fi
|
|
|
|
if run_brave; then
|
|
printf 'Backend: Brave MCP (fallback)\n\n'
|
|
cat "$TMP2"
|
|
exit 0
|
|
fi
|
|
|
|
echo 'Error: both SearXNG and Brave MCP failed.' >&2
|
|
echo >&2
|
|
echo '--- SearXNG output ---' >&2
|
|
cat "$TMP1" >&2 || true
|
|
echo >&2
|
|
echo '--- Brave MCP output ---' >&2
|
|
cat "$TMP2" >&2 || true
|
|
exit 3
|