journal-if について
journal-if は、ジャーナルのインパクトファクターを検索・照会し、一覧を一括処理するコマンドラインスキルです。内蔵 CSV を優先し、該当しない場合は OpenAlex の概算2年指標を使います。オフライン検索にも対応し、OpenAlex の値は公式 JCR の数値ではないと明示します。
主な機能
- 01CSV キャッシュと OpenAlex 検索
- 02あいまい検索によるジャーナル検索
- 03ファイルからの一括処理
- 04オフラインキャッシュのみの検索
- 05JSON と人間向け表示
活用シーン
- 01ジャーナルの指標を確認
- 02テーマに合うジャーナルを検索
- 03ジャーナル名の一覧を処理
- 04ジャーナル間の概算指標を比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agents365-ai/ 365-skills --skill journal-ifインストール後、Claude Code で/journal-ifを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignorejournal_if.pydata/journals_if.csv詳細
ジャーナルのインパクトファクター検索
2 つの情報源を順に使ってジャーナルのインパクトファクターを検索します。バンドルされた CSV キャッシュ(一般的なジャーナル約 200 誌)→ OpenAlex API(あらゆるジャーナルの概算 2 年 IF)。
重要なルール: 検索には必ず journal_if.py を使用してください。インパクトファクターを推測してはいけません。毎年変わり、版によっても異なります。
クイックリファレンス
| ユーザーの要望 | Tier | コマンド |
|---|---|---|
| ジャーナルの IF を検索する | read | python3 journal_if.py lookup "Nature Medicine" |
| ジャーナルを検索する | read | python3 journal_if.py search "cancer immunology" |
| ジャーナルのリストを処理する | read | python3 journal_if.py batch journals.txt |
| キャッシュのみ(ネットワークなし) | read | python3 journal_if.py --offline lookup "Cell" |
| キャッシュの状態を確認する | read | python3 journal_if.py cache status |
| 上流の CSV を更新する | write | python3 journal_if.py cache update |
| 機械可読な CLI コントラクト | read | python3 journal_if.py schema |
| サブコマンド 1 つ分のスキーマ | read | python3 journal_if.py schema lookup |
出力形式
CLI が端末に接続されていない場合(パイプ接続またはエージェントによるキャプチャ)、標準出力は安定した JSON エンベロープになります。TTY で実行した場合は、人が読みやすい形式で表示されます。形式を指定するには、--format json|table|human|auto を使用してください。--json は後方互換性のための --format json の別名です。
エンベロープの形式:
- 成功:
{ "ok": true, "data": {...}, "meta": { "schema_version", "cli_version", "latency_ms" } } - 部分的な成功(バッチ):
{ "ok": "partial", "data": { "succeeded": [...], "failed": [...] }, "meta": {...} } - エラー:
{ "ok": false, "error": { "code", "message", "retryable", ... }, "meta": {...} }
終了コード
| Code | 意味 |
|---|---|
0 | 成功(部分的な成功を含む) |
1 | 実行時エラー/上流エラー |
2 | 検証エラー/入力不正(ファイルがない、フラグが不正) |
3 | 見つからない(該当するジャーナルなし) |
エラーコード(error.code 内)
| Code | 再試行可能 | 終了コード | 意味 |
|---|---|---|---|
not_found | いいえ | 3 | 検索は完了しましたが、該当する情報源がありませんでした |
upstream_unavailable | はい | 1 | OpenAlex API で一時的な障害が発生しました。後でもう一度試すか、--offline を使用してください |
file_not_found | いいえ | 2 | 入力ファイルのパスが存在しません |
validation_error | いいえ | 2 | 引数またはフラグの組み合わせが不正です |
runtime_error | はい | 1 | 想定外の内部エラーです |
データソース
-
バンドルされた CSV — ライフサイエンス、医学、化学、物理学、工学分野の主要ジャーナル約 200 誌を収録しています。JCR データをもとに厳選し、スキルに同梱されています。常に利用可能で、即座に検索できます。
-
OpenAlex API — 無料で利用できるオープン API です。引用数から概算の 2 年インパクトファクターを算出します。ほぼすべての学術ジャーナルをカバーしています。この数値は公式 JCR IF とは異なります。同じ計算式(Y 年に、Y-1 年と Y-2 年に出版された論文が受けた引用数を、その 2 年間の引用可能な論文数で割る)を使った引用率指標ですが、OpenAlex 独自の論文分類に基づいています。順位付けや比較には十分ですが、正式な場面で「JCR インパクトファクター」として引用してはいけません。
どちらを使うか
| シナリオ | 情報源 |
|---|---|
| 主要ジャーナルをすばやく確認する | バンドルされた CSV(即時) |
| ニッチなジャーナルや新しいジャーナル | OpenAlex のフォールバック(自動) |
| 正式な投稿/助成金申請 | 注意:OpenAlex IF ≠ 公式 JCR IF。概算値としてのみ引用してください。 |
| 多数のジャーナルを一括処理する | キャッシュ済みのものは CSV、見つからないものは OpenAlex |
| オフライン/エアギャップ環境 | --offline フラグ(バンドルされた CSV のみ) |
ワークフロー
ステップ 1:意図を判定する
| 意図 | アクション |
|---|---|
| 「Nature の IF はいくつですか?」 | lookup "Nature" |
| 「Cell と Science の IF を比較する」 | lookup を 2 回実行し、結果を比較する |
| 「IF が 20 を超える免疫学ジャーナルはどれですか?」 | search "immunology" を実行してから絞り込む |
| 「このジャーナルリストを処理する」 | batch journals.txt |
| 「これは高インパクトのジャーナルですか?」 | lookup を実行し、分野の状況を踏まえて IF を解釈する |
ステップ 2:実行
適切な journal_if.py コマンドを実行します。このスクリプトは以下を処理します。
- ローカル CSV 検索(即時、厳選された約 200 誌)
- OpenAlex API へのフォールバック(自動、2 年間の概算 IF)
- あいまい検索 — わずかな名称の違いを検出します
ステップ 3:結果の提示
- 雑誌名、インパクトファクター、データ年を表示します
- 出典(CSV キャッシュまたは OpenAlex の概算値)を明記します
- 検索結果の場合:IF、年、カテゴリを含む表を表示します
インパクトファクターについて
| IF の範囲 | 一般的なランク | 例 |
|---|---|---|
| > 30 | エリート(上位 0.1%) | Nature(64.8)、Science(56.9)、Cell(64.5) |
| 20–30 | 非常に優秀(上位 1%) | Cancer Cell(50.3)、Immunity(32.4) |
| 10–20 | 優秀(上位 5%) | Nature Communications(16.6)、Sci Adv(13.6) |
| 5–10 | 高水準(上位 15%) | eLife(7.7)、Cell Reports(8.8) |
| 2–5 | 堅実 | PLOS ONE(3.7)、Sci Rep(4.6) |
| < 2 | ニッチ/新興 | 分野特化型や新しい雑誌が多数 |
注意事項:
- IF は分野によって大きく異なります。数学分野のトップ雑誌でも IF が 5 未満の場合がある一方、中堅の腫瘍学雑誌では IF が 10 を超えることがあります。
- IF は必ず同じ分野内で比較してください。
- IF のデータ年は重要です。数値は毎年変動します。
- OpenAlex の概算 IF は公式 JCR IF とは異なります。認証済みの数値ではなく、ランキング指標として扱ってください。
一括処理
1 行に雑誌名を 1 つずつ記載したテキストファイルを作成します。
Nature Medicine
Journal of Biological Chemistry
Proceedings of the National Academy of Sciences
次に、以下を実行します。
python3 journal_if.py batch journals.txt
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| 「データが見つかりません」 | より短い名前または別の名前を試してください。あいまい検索には search を使用してください |
| OpenAlex が IF として 0 または None を返す | 雑誌が新しすぎる可能性があります(2 年以上のデータが必要です)。キャッシュのみを確認するには --offline を使用してください |
| OpenAlex の IF が JCR と異なる | 想定内です。OpenAlex は独自の記事分類を使用しています。正式な引用ではなく、ランキングに使用してください。 |
| キャッシュのダウンロードに失敗する | ネットワークを確認してください。同梱の CSV はオフラインでも使用できます |
| 別の雑誌が一致した | より具体的な名前を使用してください。あいまい検索では最も近い部分文字列が選ばれます |