[πŸ‡°πŸ‡· ν•œκ΅­μ–΄](README.md) Β· πŸ‡ΊπŸ‡Έ English # ir-search > ⚠️ **This skill covers South Korean government / public-agency support programs only.** It does not cover programs from any other country, and the announcements it processes are written in Korean. A plugin for **exhaustive surveys of Korean government support programs** (startup grants, commercialization funding, incubation space, R&D calls, vouchers, competitions) β€” installable in **Claude Code, Codex, agy (Antigravity CLI), Cursor, Gemini CLI, and Grok Build (x.ai)**. It crawls every currently-open announcement from K-Startup, Bizinfo, NIPA, KOCCA, and SMTECH, matches them against the profile of the project in your working folder β€” founding stage, region, needs (funding / space / R&D) β€” verifies eligibility against the original announcement text, and produces a report with a three-tier classification: - **Group A β€” Apply right now**: eligible as-is (sorted by deadline, imminent ones flagged) - **Group B β€” Unlocked by a requirement (roadmap)**: triggers like incorporation or securing investment, with chained paths spelled out (e.g., competition prize β†’ non-metro incorporation β†’ Pre-TIPS β†’ TIPS) - **Group C β€” Eligible with reframing**: concrete angles for re-describing your item in another domain's language (content production, social services, artΓ—tech, ...) Why exhaustive review instead of keyword search: the programs an "AI startup" can actually win β€” content-production grants, artΓ—tech residencies, social-service startup funds β€” never match the keyword "AI". ## Sample output (excerpt) A run saves the report (md), raw jsonl, and verified announcement texts to `~/Documents/지원사업쑰사__/`. The report looks like this (announcements themselves are in Korean): ```markdown # Support-program survey β€” β—‹β—‹ (AI voice SaaS, pre-founder, Chungnam) Surveyed 2026-07-11 Β· reviewed all 262 K-Startup + 300 Bizinfo items β†’ verified 31 candidates ## Group A β€” Apply right now (by deadline) 1. **2026 Youth Startup Academy, extra round** β€” KOSME - Support: up to β‚©100M commercialization fund + space + mentoring - Eligibility: pre-founders βœ“ Β· under 39 βœ“ Β· nationwide βœ“ - Deadline: 2026-07-18 16:00 (D-7) ⚠️ imminent - https://www.k-startup.go.kr/web/contents/bizpbanc-ongoing.do?schM=view&pbancSn=1784xx ## Group B β€” Unlocked by a requirement (roadmap) - **Pre-TIPS**: trigger = incorporating outside the capital region. Chain: competition prize/seed β†’ Chungnam incorporation β†’ Pre-TIPS β†’ TIPS ## Group C β€” Eligible with reframing - **Content production grant (KOCCA)**: reframe "AI voice tech" as an "audio-content production pipeline". Risk: deliverable must be content ## Absence check - Pre-Startup Package: not currently open (usually announced in Feb) ## Priority actions - by 7/18: apply to A-1 (note the 16:00 cutoff) - by 7/25: draft C-1 content framing, then call the agency to confirm ``` Every mentioned announcement carries its original URL; anything not stated in the announcement text is marked "unknown" rather than guessed. ## Covered sources | Source | What it is | Crawler | | --------------------------------------- | ------------------------------------------------- | --------------------- | | [K-Startup](https://www.k-startup.go.kr) | Unified startup-support portal (default) | `kstartup_crawl.py` (+ `kstartup_api.py`) | | [Bizinfo](https://www.bizinfo.go.kr) | All-ministry/region SME support (widest coverage) | `sources_crawl.py` | | [NIPA](https://www.nipa.kr) | AI / ICT programs | `sources_crawl.py` | | [KOCCA](https://www.kocca.kr) | Content-industry programs | `sources_crawl.py` | | [SMTECH](https://www.smtech.go.kr) | SME R&D calls | `sources_crawl.py` | More sources (NIA, IITP, IRIS, regional agencies) are catalogued in `skills/ir-search/references/sources.md`. ### K-Startup official API (optional β€” more accurate & faster when present, crawl otherwise) `kstartup_crawl.py list` uses the official [data.go.kr](https://www.data.go.kr/data/15125364/openapi.do) K-Startup Open API (dataset 15125364) when a **data.go.kr service key** is available, and **automatically falls back to the public-page crawler when no key is present or the API fails / is blocked / returns an unexpected shape** (identical output schema and manifest). The key is read from the repo-root `.env` (`DATA_GO_KR_KEY=...`), the `DATA_GO_KR_KEY` env var, or the shared `~/.config/data_go_kr_key`, and is **never printed to logs, errors, or the command line** (`.env` is gitignored). The same key is reused by sole-search's gov24. - **Coverage honesty**: this dataset is ordered newest-registration-first, so if the API proves exhaustion via `totalCount` it records `stop_reason: api` (status `ok`, exit 0); if it stops early on the newest-first window it records `stop_reason: api-window` (status `partial`, **exit 2**). The crawl is the authority for exhaustive coverage, and diff mode does not conclude GONE from a partial (`api-window`) run. - **Bizinfo stays crawl** β€” its official API needs a separate `crtfcKey` (issued by Bizinfo, distinct from the data.go.kr key) and the crawler already provides full coverage, so no API is used there. ## Install **One-command install** β€” detects installed host CLIs (claude/codex/agy/gemini) and installs for each; falls back to cloning into `~/.agents/skills/` (for Cursor / Grok Build) when no CLI is found. Also handles the `curl_cffi` dependency: ```bash curl -fsSL https://raw.githubusercontent.com/djfksjd/ir-search/main/install.sh | bash ``` To install manually instead, pick the method for the agent you use β€” one tree supports all hosts. ### Claude Code ```bash claude plugin marketplace add djfksjd/ir-search claude plugin install ir-search@djfksjd ``` The `curl_cffi` dependency is auto-installed by a SessionStart hook. ### Codex ```bash codex plugin marketplace add djfksjd/ir-search codex plugin add ir-search@djfksjd ``` ### agy (Antigravity CLI) ```bash agy plugin install djfksjd/ir-search agy plugin enable ir-search pip3 install 'curl_cffi>=0.15' # no SessionStart hook in agy β€” install manually ``` ### Gemini CLI ```bash gemini extensions install https://github.com/djfksjd/ir-search pip3 install 'curl_cffi>=0.15' ``` The extension manifest (`gemini-extension.json`) auto-discovers the skill under `skills/` and loads `AGENTS.md` as context. ### Cursor / Grok Build (x.ai) Both read the shared skills directory (`~/.agents/skills/`) as well as `~/.claude/skills/`. A single clone is enough: ```bash mkdir -p ~/.agents/skills git clone https://github.com/djfksjd/ir-search.git ~/.agents/skills/ir-search pip3 install 'curl_cffi>=0.15' ``` (The root-level `SKILL.md` symlink makes the clone directory itself act as the skill folder. Grok Build also reads Claude Code plugins directly, so if you installed via the Claude Code method above, nothing extra is needed.) ### Classic (clone directly as a Claude Code skill) ```bash git clone https://github.com/djfksjd/ir-search.git ~/.claude/skills/ir-search pip3 install 'curl_cffi>=0.15' ``` ## Use With your project folder open in any agent: ``` 우리 μ•„μ΄ν…œμ— λ§žλŠ” 지원사업 μ „μˆ˜μ‘°μ‚¬ ν•΄μ€˜ (Survey the support programs that fit this project) ``` or `/ir-search` (Claude Code). The agent reads the project context from the folder and asks only for the missing profile fields (founding stage, region, needs) before starting. **Built for repeated use:** - The profile is saved to `ir-search-profile.md` in your project folder β€” subsequent surveys just confirm "anything changed?" instead of re-asking - Re-surveys are diffed against the previous run automatically, reporting only **new announcements / deadline changes / closed opportunities** instead of re-reading 250+ items every time The crawlers also work standalone (paths relative to the plugin directory): ```bash python3 skills/ir-search/scripts/kstartup_crawl.py list -o all.jsonl # all open K-Startup announcements python3 skills/ir-search/scripts/kstartup_crawl.py detail 178481 -o details/ # K-Startup detail pages python3 skills/ir-search/scripts/sources_crawl.py list bizinfo -o biz.jsonl # Bizinfo python3 skills/ir-search/scripts/sources_crawl.py list all -o sources.jsonl # all four extra sources python3 skills/ir-search/scripts/sources_crawl.py detail -o details/ # detail page from any source ``` ## Layout ``` ir-search/ β”œβ”€β”€ install.sh # one-command installer (auto-detects hosts) β”œβ”€β”€ plugin.json # agy marker (name/version/description) β”œβ”€β”€ gemini-extension.json # Gemini CLI extension manifest β”œβ”€β”€ AGENTS.md # shared agent guide (all hosts) β”œβ”€β”€ SKILL.md β†’ skills/ir-search/SKILL.md # symlink β€” lets a plain clone act as the skill folder β”œβ”€β”€ .claude-plugin/ # Claude Code manifests β”‚ β”œβ”€β”€ plugin.json # + inline SessionStart hook (curl_cffi auto-install) β”‚ └── marketplace.json # enables `claude plugin marketplace add` β”œβ”€β”€ .codex-plugin/ β”‚ └── plugin.json # Codex manifest (+ interface) β”œβ”€β”€ .agents/skills β†’ skills # symlink β€” shared standard (Cursor, Grok Build, …) β”œβ”€β”€ .cursor/skills β†’ skills # symlink β€” Cursor project skills β”œβ”€β”€ .gemini/skills β†’ skills # symlink β€” Gemini CLI workspace skills └── skills/ └── ir-search/ β”œβ”€β”€ SKILL.md # workflow (profile β†’ collect all β†’ review all β†’ verify β†’ 3-tier report) β”œβ”€β”€ scripts/ β”‚ β”œβ”€β”€ kstartup_crawl.py # K-Startup crawler (API-first, crawl fallback) β”‚ β”œβ”€β”€ kstartup_api.py # K-Startup official Open API client (data.go.kr) β”‚ β”œβ”€β”€ sources_crawl.py # Bizinfo / NIPA / KOCCA / SMTECH crawler β”‚ β”œβ”€β”€ attach_download.py # shared attachment download (robots-safe, hash) β”‚ β”œβ”€β”€ run_manifest.py # shared run_manifest.json writer (coverage) β”‚ └── diff_surveys.py # incremental re-survey diff (new / changed / closed) └── references/sources.md # source registry (verified access recipes + secondary sources) ``` Note: `SKILL.md` is written in Korean β€” the whole domain (announcements, eligibility criteria, report vocabulary) is Korean, and the model works with it natively. ## Caveats - Announcement details (deadlines, eligibility, amounts) change frequently. **Always confirm with the accepting agency before applying.** The report reflects the announcement text at survey time. - Only public announcement pages are accessed, with a delay between requests. Please respect the target sites' terms of service. ## License MIT