Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Mar 4, 2026 - 日記

日本の補助金・助成金を調べる自作スキル「jp-grants」を作った

日本の補助金・助成金を調べる自作スキル「jp-grants」を作った cover image

補助金・助成金って、知ってる人は当たり前に申請していて、知らない人はそもそも存在に気づかない、みたいな情報だと思っています。 一方で、いざ調べ始めるとページが散らばっていたり、年度や公募回で要件が変わったり、PDF(公募要領)に大事なことが書いてあったりで、地味に時間が溶けます。

そこで「候補を集めて、要点を揃えて、公式リンクに戻れる」くらいの道具が欲しくて、自作スキル jp-grants を作りました。 LLM(Large Language Model: 大規模言語モデル)に聞くとしても、最終的に公式ページへ着地できないと怖いので、URLと根拠を残す方針です。

jp-grants でやりたいこと

jp-grants は「補助金・助成金を“探す”ところ」と「読める形に“整える”ところ」を、雑に自動化するためのスキルです。

主に以下を想定しています。

  • 国と自治体の制度を、なるべく一次情報(公式)から見つける
  • 期限・対象・必要書類など、見たい項目を揃えて読む
  • どの情報をどこから取ったか(URL)を必ず残す

一次情報の例としては、J-Grants や、各省庁のサイト(*.go.jp)、自治体サイト(*.lg.jp)です。

どういう仕組み?(ざっくり)

jp-grants は「補助金・助成金を調べるための手順」をエージェントに持たせるスキルです。 やりたいことはシンプルで、補助金を探して、公式URLに戻れる形で返すだけです。

ざっくりこういう流れで動く想定です。

  • まず前提を確認する(地域、事業者区分、目的など)
  • 公式ソースから候補を集める
  • 期限・要件・必要書類などを短く整理し、公式URLを添える

「結局どれが正しいの?」になりがちなので、最終的に一次情報へ戻れることを重視しています。

セットアップ

前提

自分が使っている想定はこのあたりです。

  • Node.js(npx が使える)

インストール

README にある通り、npx skills add でスキルを入れます。

1
npx skills add tumf/skills --skill jp-grants

使い方(エージェントに補助金を調べてもらう)

基本の使い方は、スキルを入れたエージェントに「条件」を渡して調べてもらうだけです。 補助金は要件が細かいので、最初に渡す情報はこのあたりが効きます。

  • 事業者区分(個人事業主 / 法人、など)
  • 所在地(都道府県 + 市区町村)
  • 目的(IT/DX、設備投資、人材、研究開発、省エネ、など)
  • 規模感(従業員数、資本金など。ざっくりでOK)
  • いつ申請したいか(今期/来月/四半期、など)

質問のテンプレはこんな感じです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
補助金・助成金を調べたいです。

- 事業者区分: 法人(中小企業)
- 所在地: 東京都(市区町村は未定)
- 目的: 業務のデジタル化(会計/受発注/在庫管理あたり)
- 規模: 従業員10名程度
- 予算/時期: できれば今期中に申請したい

条件に合いそうな制度を3〜7件に絞って、期限と公式URLを付けて教えてください。
分からない項目があれば「不明」と書いて、どこを見れば確認できるかも教えてください。

ポイントは、候補を出すだけで終わらせず、公式URLとセットで返すことです。 最終的には公募要領(PDF)を読みます。

補助スクリプト(オプション): 候補URL収集と要点抽出

スキル本体は「調べる」用途ですが、補助スクリプトも入っています。 これは「候補URLを集める」「ページから要点を抜く」を機械的にやりたい時のためのものです。

使う場合は Firecrawl のAPIを利用します。 Python側は firecrawl-py を使います。

前提(スクリプトを使う場合)

  • Python 3
  • Firecrawl APIキー(環境変数 FIRECRAWL_API_KEY
1
2
3
python3 -m pip install firecrawl-py

export FIRECRAWL_API_KEY="..."

注意: Firecrawlを使うと外部APIを叩くので、コストや利用規約は確認してください。

1) 候補URLを集める

例えば、東京都の中小企業向けでDX(デジタルトランスフォーメーション: 業務のデジタル化による変革)っぽい補助金を探すなら、こんな感じです。

1
./jp-grants/scripts/find_candidates.py --query "東京都 中小企業 DX 補助金" --limit 15

自治体(lg.jp)も積極的に拾いたいなら --include-local を使います。

1
2
3
4
./jp-grants/scripts/find_candidates.py \
  --query "東京都 中小企業 DX 補助金" \
  --limit 15 \
  --include-local

制度によっては「事務局サイト」に情報がまとまっていることがあるので、探索だけ広げたい場合は --include-executing-sites を足します。 ただし、事務局サイトは便利な反面、最終確認は公式PDFや公式ページに戻るのがおすすめです。

1
2
3
4
5
./jp-grants/scripts/find_candidates.py \
  --query "東京都 中小企業 DX 補助金" \
  --limit 15 \
  --include-local \
  --include-executing-sites

2) 重要項目を抜き出す

候補URLが集まったら、extract_programs.py にURLを渡して要点を抜きます。

1
2
3
./jp-grants/scripts/extract_programs.py \
  "https://www.jgrants-portal.go.jp/subsidy/xxxxx" \
  "https://www.metro.tokyo.lg.jp/..."

ここで取りたいのは、例えばこういう項目です。

  • 制度名
  • 実施主体(国/自治体/事務局など)
  • 対象者(誰が申請できるか)
  • 対象経費(何に使えるか)
  • 補助率・上限額
  • 申請期限(締切)
  • 申請方法(J-Grants経由か、独自フォームか、郵送か等)
  • 公式URL(必須)

実用的な小ネタ: 抽出結果を手元で整形して読む

抽出結果がJSONで得られる想定なら、最後は自分が見やすい形に整形したくなるはずです。 ここは雑にPythonで整形するのが楽です。

以下は programs.json を読み込んで、制度名・締切・URLだけを一覧表示する例です。 (フィールド名は環境によって微妙に違うかもしれないので、適宜合わせてください)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import json
from pathlib import Path


def pick(obj: dict, keys: list[str]) -> str:
    for k in keys:
        v = obj.get(k)
        if isinstance(v, str) and v.strip():
            return v.strip()
    return "(unknown)"


data = json.loads(Path("programs.json").read_text(encoding="utf-8"))

for p in data:
    name = pick(p, ["program_name", "name", "title"])
    deadline = pick(p, ["deadline", "application_deadline", "application_window"])
    url = pick(p, ["official_url", "url"])
    print(f"- {name} / {deadline} / {url}")

ポイントは、最終的にURLへ戻れる形にすることです。 LLMの要約だけを読んで判断するのは危ないので、「候補を減らす」までに使うくらいがちょうど良いと思っています。

注意点(割と大事)

補助金・助成金は、制度によって本当に癖があります。 jp-grants はその癖を消す道具ではなく、読むべき資料へ早く辿り着くための道具です。

  • 期限や要件は頻繁に変わります。最終的には必ず公式ページ・公式PDFを確認してください
  • 「補助金」と「助成金」は運用や申請フローが違うことがあります
  • 融資(借りる)や税制優遇(税金が減る)は、補助金(もらう)とは別物です
  • 自分は法律・税務の助言はできません。手続きの入口と公式情報への導線を作る用途に寄せています

一次情報としてよく見るところを挙げると、例えばこのあたりです。

まとめ

補助金・助成金は、ちゃんと追うと手間がかかります。 ただ「候補URLを集める」「要点を揃えて読む」を少しでも自動化できると、だいぶ精神衛生が良いです。

興味がある方は、まずは以下の順で試すのが早いと思います。

  1. npx skills add で jp-grants を入れる
  2. 条件(地域/目的/規模/時期)を渡して、エージェントに補助金を調べてもらう
  3. 候補を3〜7件くらいに絞ったら、公式ページ・公式PDFに戻って最終確認する
  4. もっと機械的にやりたければ、補助スクリプトでURL収集と要点抽出を回す

参考リンク