리서치 에이전트 커스텀 노드 함수
1. Tool - Web Search
Input Variables
const fetch = require('node-fetch');
const querystring = require('querystring');
const args = JSON.parse($args);
const search_query = args.search_query;
const num_results = args.num_results;
const apiKey = 'YOUR_API_KEY_HERE';
const searchQuery = async (queryObj) => {
const { q, recency, domains } = queryObj;
const url = `https://www.searchapi.io/api/v1/search`;
let days = 0;
if (recency) {
days = parseInt(recency, 10);
}
let query = null;
let domainStr = '';
if (domains) {
domainStr = domains.map(domain => `site:${domain.trim()}`).join(' OR ');
query = `${q} ${domainStr}`;
} else {
query = q;
}
const params = {
engine: 'google',
api_key: apiKey,
q: query
};
if (num_results) {
params.num = num_results
} else {
params.num = 5
}
if (days > 0) {
params.tbs = `qdr:d${days}`;
}
try {
const response = await fetch(`${url}?${querystring.stringify(params)}`);
if (!response.ok) {
throw new Error(`API 요청 실패: ${response.statusText}`);
}
const data = await response.json();
const results = data.organic_results || [];
const search_summary = results.map(item => ({
title: item.title || null,
url: item.link || null,
snippet: item.snippet || null,
source: item.source || null,
date: item.date || null
}));
return search_summary;
} catch (error) {
return `Error: ${error.message}`;
}
};
return (async () => {
const results = await Promise.all(search_query.map(searchQuery));
const flatResults = results.flat();
const updatedList = flatResults.map((d, idx) => ({
id: idx,
...d
}));
const resultString = updatedList.map(item =>
item.date
? `- ${item.title} (${item.url}): ${item.date} — ${item.snippet} 【search${item.id}】`
: `- ${item.title} (${item.url}): ${item.snippet} 【search${item.id}】`
).join('\n');
return resultString;
})();
2. Tool - Open URL
3. Tool - External APIs
Last updated
Was this helpful?