0.初めに
Braveは、有名なブラウザーでBrave Searchという独自の検索エンジンを持っています。
Brave Searchは、APIを提供しており、WEB検索やニュース検索に利用できるようなので試してみました。
私は、貧乏な非エンジニアなので、ロリポップ!のエコノミープランでも試せるPHPのコードで試しました。
なお、コードについては、ほぼ、生成AIのperplexityの無料版に書いていただきました。perplexityすごい!!
1.Brave Search APIについて
Brave Search APIは、一応無料で利用できるようです。ただ、APIの利用登録時にクレジットカード等の登録が無料プランを選択しても求められます。
API利用登録についてざっくり説明すると
利用登録はこちらから行います。
利用できるプラン。無料は1リクエスト/秒、2000リクエスト/月みたいです。
APIキーを発行する画面ですが、先にサブスクリプションしてねとかいてあり、サブスクリプションの画面でクレジットカード情報を入力しろと言われます。
ニュース検索のAPIのクイックスタートはCurlでの使い方が書かれているだけです。
2.コード(ニュース検索)
私はCurlをコマンドラインからロリポップ!のWEB画面でPHPが動くようにコードを作るにはスキル不足でした。
とりあえず、コード作成は、perplexityの助けを借りました。APIキーは画面で入力するようにperplexityに依頼しました。
perplexityの結果を少しだけ修正したコードが以下です。
<style>
#fresh {
margin-top: 5px;
margin-bottom: 5px;
}
</style>
<form method="post" autocomplete="off">
<label for="query">検索クエリ:</label>
<input type="text" id="query" name="query" required>
<br>
<label for="api_key">API Key:</label>
<input type="text" id="api_key" name="api_key" required>
<div>
<select name="fresh" id="fresh">
<option value="pd">対象期間:1日</option>
<option value="pw" selected>対象期間:1週</option>
<option value="pm">対象期間:1月</option>
<option value="py">対象期間:1年</option>
</select>
</div>
<button type="submit">検索</button>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$query = $_POST['query'];
$apiKey = $_POST['api_key'];
$fresh = $_POST['fresh'];
$url = "https://api.search.brave.com/res/v1/news/search?country=jp&search_lang=jp&freshness=" . $fresh . "&q=" . urlencode($query);
$headers = array(
"Accept: application/json",
"Accept-Encoding: gzip",
"X-Subscription-Token: " . $apiKey
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if ($response === false) {
echo "cURL error: " . curl_error($ch);
} else {
$data = json_decode($response, true);
// 検索結果を表示する
foreach ($data['results'] as $result) {
echo "<h3><a href='" . $result['url'] . "' target='_blank'>" . $result['title'] . "</a></h3>";
echo "<p>" . $result['description'] . "</p>";
}
}
curl_close($ch);
}
?>
あと、入力項目のサニタイズはした方がいいんでしょうね。この記事書いてるときにそう思いました。
3.終わりに
Brave Search APIの記事がなかったので書いてみました。
perplexityめっちゃ便利ですね。