shabbat-times について
Hebcal APIを通じて安息日の時刻やユダヤ暦データを取得するスキルです。ヘブライ暦への日付変換や、場所を指定した照会にも対応します。
主な機能
- 01場所ごとの安息日時刻の取得
- 02ユダヤ暦イベントの照会
- 03西暦とヘブライ暦の日付変換
- 04座標またはGeoNames IDの指定
活用シーン
- 01地域のろうそく点灯時刻とハヴダーラー時刻を表示
- 02ユダヤ祝祭日のカレンダーを作成
- 03西暦の日付をヘブライ暦に変換
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ hoodini/ ai-agents-skills --skill shabbat-timesインストール後、Claude Code で/shabbat-timesを入力して読み込まれたか確認します。
詳細
ユダヤ暦と安息日の時刻
Hebcal API を通じて、安息日の時刻とユダヤ暦のデータにアクセスできます。
クイックスタート
// Get Shabbat times for a location
const response = await fetch(
'https://www.hebcal.com/shabbat?cfg=json&geonameid=5128581&M=on'
);
const data = await response.json();
安息日の時刻 API
GeoNames ID を指定する場合(推奨)
const url = new URL('https://www.hebcal.com/shabbat');
url.searchParams.set('cfg', 'json');
url.searchParams.set('geonameid', '5128581'); // New York
url.searchParams.set('M', 'on'); // Include Havdalah
const response = await fetch(url);
const data = await response.json();
// Response
{
"title": "Hebcal New York January 2025",
"items": [
{
"title": "Candle lighting: 4:28pm",
"date": "2025-01-10T16:28:00-05:00",
"category": "candles"
},
{
"title": "Parashat Shemot",
"date": "2025-01-11",
"category": "parashat"
},
{
"title": "Havdalah: 5:31pm",
"date": "2025-01-11T17:31:00-05:00",
"category": "havdalah"
}
]
}
座標を指定する場合
const url = new URL('https://www.hebcal.com/shabbat');
url.searchParams.set('cfg', 'json');
url.searchParams.set('latitude', '32.0853');
url.searchParams.set('longitude', '34.7818');
url.searchParams.set('tzid', 'Asia/Jerusalem');
ユダヤ暦 API
const url = new URL('https://www.hebcal.com/hebcal');
url.searchParams.set('cfg', 'json');
url.searchParams.set('v', '1');
url.searchParams.set('year', '2025');
url.searchParams.set('month', 'x'); // All months
// Optional parameters
url.searchParams.set('maj', 'on'); // Major holidays
url.searchParams.set('min', 'on'); // Minor holidays
url.searchParams.set('mod', 'on'); // Modern holidays
url.searchParams.set('nx', 'on'); // Rosh Chodesh
url.searchParams.set('ss', 'on'); // Special Shabbatot
url.searchParams.set('s', 'on'); // Weekly parsha
const response = await fetch(url);
const holidays = await response.json();
ヘブライ暦の日付変換
// Gregorian to Hebrew
const url = new URL('https://www.hebcal.com/converter');
url.searchParams.set('cfg', 'json');
url.searchParams.set('gy', '2025');
url.searchParams.set('gm', '1');
url.searchParams.set('gd', '15');
const response = await fetch(url);
const data = await response.json();
// { "hy": 5785, "hm": "Tevet", "hd": 15, "hebrew": "ט״ו בטבת תשפ״ה" }
React フック
import { useState, useEffect } from 'react';
interface ShabbatTimes {
candleLighting: Date | null;
havdalah: Date | null;
parsha: string | null;
}
function useShabbatTimes(geonameid: string) {
const [times, setTimes] = useState<ShabbatTimes | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
async function fetchTimes() {
const url = new URL('https://www.hebcal.com/shabbat');
url.searchParams.set('cfg', 'json');
url.searchParams.set('geonameid', geonameid);
url.searchParams.set('M', 'on');
const response = await fetch(url);
const data = await response.json();
const result: ShabbatTimes = {
candleLighting: null,
havdalah: null,
parsha: null
};
for (const item of data.items) {
if (item.category === 'candles') {
result.candleLighting = new Date(item.date);
} else if (item.category === 'havdalah') {
result.havdalah = new Date(item.date);
} else if (item.category === 'parashat') {
result.parsha = item.title.replace('Parashat ', '');
}
}
setTimes(result);
setLoading(false);
}
fetchTimes();
}, [geonameid]);
return { times, loading };
}
よく使われる GeoNames ID
| 都市 | GeoNames ID |
|---|---|
| エルサレム | 281184 |
| テルアビブ | 293397 |
| ニューヨーク | 5128581 |
| ロサンゼルス | 5368361 |
| ロンドン | 2643743 |
| パリ | 2988507 |
リソース
- Hebcal API ドキュメント: https://www.hebcal.com/home/developer-apis
コメント
Markdown 対応