find-funding-opportunities
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFunding Program Finder
资助项目查找工具
Search the Karma Funding Map for funding programs via the public API.
The registry has 6 program types: grants, hackathons, bounties, accelerators, VC funds, and RFPs. Use "programs" / "opportunities" / "funding" — not just "grants".
For full API parameters, response shape, and known values, see references/api-reference.md.
通过公开API在Karma Funding Map中搜索资助项目。
该注册表包含6种项目类型:grants、hackathons、bounties、accelerators、VC funds和RFPs。请使用“programs”“opportunities”“funding”这类词汇,不要只使用“grants”。
有关完整的API参数、响应结构和已知值,请查看references/api-reference.md。
Workflow
工作流程
Step 1: Map the User's Request
步骤1:映射用户请求
| User says | Maps to |
|---|---|
| "Ethereum programs" | |
| "hackathons" | |
| "hackathons on Ethereum" | |
| "bounties on Solana" | |
| "bounties over $500" | |
| "accelerator programs" | |
| "VCs investing in DeFi" | |
| "open RFPs from Optimism" | |
| "grants and hackathons on Ethereum" | |
| "DeFi funding on Optimism" | |
| "programs over $50K" | |
| "funding under $100K" | |
| "infrastructure" | |
| "active programs" | |
| "retroactive funding on Optimism" | |
| "programs on Karma" | |
| "what's closing this week" | |
| (no query) | Ask what they're looking for |
Budget shorthand: K→000, M→000000 (e.g., $50K → 50000, $1M → 1000000).
URL encoding: Values with spaces must be percent-encoded in URLs (e.g., ).
curlcategories=Retroactive%20Funding| 用户表述 | 对应设置 |
|---|---|
| "以太坊相关项目" | |
| "hackathons" | |
| "以太坊上的hackathons" | |
| "Solana上的bounties" | |
| "奖金超过500美元的bounties" | |
| "accelerator项目" | |
| "投资DeFi的VCs" | |
| "Optimism发布的公开RFPs" | |
| "以太坊上的grants和hackathons" | |
| "Optimism上的DeFi资助项目" | |
| "预算超过5万美元的项目" | |
| "预算低于10万美元的资助项目" | |
| "基础设施" | |
| "活跃项目" | |
| "Optimism上的追溯性资助项目" | |
| "Karma平台上的项目" | |
| "本周截止的项目" | |
| (无查询内容) | 询问用户需求 |
预算简写规则:K代表000,M代表000000(例如:$50K → 50000,$1M → 1000000)。
URL编码: 包含空格的值在 URL中必须进行百分号编码(例如:)。
curlcategories=Retroactive%20FundingStep 2: Ecosystem Search Strategy
步骤2:生态系统搜索策略
If the query has no ecosystem component, skip this step and go to Step 3.
The metadata field is often empty — many programs are linked to an ecosystem only via the field. Use a two-phase approach:
ecosystemscommunitiesPhase 1 — Try first:
Query with . If this returns sufficient results (5+), present them and move to Step 4.
ecosystems=ecosystems={name}Phase 2 — Enrich with community lookup (only if Phase 1 is sparse):
If Phase 1 returned fewer than 5 results, run these two additional queries and merge:
- Community UID lookup: fetch all communities from , find the best match by comparing against community names (case-insensitive, partial match), then query with
GET /v2/communities?limit=100communityUid={uid} - — text search on title, universal fallback
name={name}
Deduplicate all merged results by before presenting.
id如果查询中没有生态系统相关内容,跳过此步骤直接进入步骤3。
ecosystemscommunities阶段1 — 优先尝试:
使用进行查询。如果返回足够多的结果(5条及以上),展示结果并进入步骤4。
ecosystems=ecosystems={name}阶段2 — 通过社区查询补充(仅当阶段1结果稀少时):
如果阶段1返回结果少于5条,运行以下两个额外查询并合并结果:
- 社区UID查询:从获取所有社区,通过社区名称(不区分大小写、支持部分匹配)找到最佳匹配项,然后使用
GET /v2/communities?limit=100进行查询communityUid={uid} - — 对标题进行文本搜索,通用兜底方案
name={name}
在展示结果前,需根据对所有合并后的结果进行去重。
idStep 3: Build and Execute the Request
步骤3:构建并执行请求
Use via Bash. CRITICAL: Every request must include the tracking headers below. Never omit them.
curlBefore the first request, generate a tracking ID:
bash
INVOCATION_ID=$(uuidgen)Every call must include these query defaults and tracking headers (see references/api-reference.md for details):
curlundefined通过Bash使用。关键要求:每个请求必须包含以下追踪头信息,切勿省略。
curl首次请求前,生成一个追踪ID:
bash
INVOCATION_ID=$(uuidgen)每个调用必须包含以下查询默认值和追踪头信息(详情请查看references/api-reference.md):
curlundefinedQuery defaults (override sortField=endsAt&sortOrder=asc for deadline queries)
查询默认值(针对截止日期查询,需覆盖为sortField=endsAt&sortOrder=asc)
isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc
isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc
Required headers — include on every request
必填请求头 — 每个请求都要包含
Read the version from this skill's frontmatter metadata.version
从本技能的frontmatter metadata.version中读取版本号
-H "X-Source: skill:find-funding-opportunities"
-H "X-Invocation-Id: $INVOCATION_ID"
-H "X-Skill-Version: {metadata.version}"
```bash-H "X-Source: skill:find-funding-opportunities"
-H "X-Invocation-Id: $INVOCATION_ID"
-H "X-Skill-Version: {metadata.version}"
```bashNo ecosystem
无生态系统指定
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&type=hackathon"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&type=hackathon"
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&type=hackathon"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&type=hackathon"
Ecosystem — Phase 1
生态系统指定 — 阶段1
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&ecosystems=Ethereum"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&ecosystems=Ethereum"
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&ecosystems=Ethereum"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&ecosystems=Ethereum"
Ecosystem — Phase 2 (only if Phase 1 returned < 5 results)
生态系统指定 — 阶段2(仅当阶段1返回结果<5条时)
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/communities?limit=100"
"https://gapapi.karmahq.xyz/v2/communities?limit=100"
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/communities?limit=100"
"https://gapapi.karmahq.xyz/v2/communities?limit=100"
Match community UID from response, then:
从响应中匹配社区UID,然后执行:
curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&communityUid={uid}" curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&name=Ethereum"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&communityUid={uid}" curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&name=Ethereum"
undefinedcurl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&communityUid={uid}" curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&name=Ethereum"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&communityUid={uid}" curl -s -H "X-Source: skill:find-funding-opportunities" -H "X-Invocation-Id: $INVOCATION_ID" -H "X-Skill-Version: {metadata.version}"
"https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&name=Ethereum"
undefinedStep 4: Format Results
步骤4:格式化结果
Include the program type in each result. Adapt the detail line based on type:
Found 42 programs (showing top 10):
1. **Optimism Grants** [grant] — Optimism
Retroactive and proactive funding for Optimism builders
Budget: $10M | Status: Active
Apply: https://app.charmverse.io/...
2. **ETHDenver 2026** [hackathon] — Ethereum
Annual Ethereum hackathon and conference
Dates: Mar 1–7, 2026 | Deadline: Feb 15, 2026
Apply: https://ethdenver.com/apply
3. **Rust Smart Contract Audit** [bounty] — Solana
Audit Solana program for vulnerabilities
Reward: $5,000 | Difficulty: Advanced
Apply: https://superteam.fun/...
Showing 10 of 42. Ask for more or narrow your search.每个结果中需包含项目类型。根据项目类型调整详情行:
共找到42个项目(展示前10个):
1. **Optimism Grants** [grant] — Optimism
为Optimism开发者提供追溯性和前瞻性资助
预算:$10M | 状态:活跃
申请链接:https://app.charmverse.io/...
2. **ETHDenver 2026** [hackathon] — Ethereum
年度以太坊黑客松与会议
日期:2026年3月1日–7日 | 截止日期:2026年2月15日
申请链接:https://ethdenver.com/apply
3. **Rust智能合约审计** [bounty] — Solana
审计Solana项目以排查漏洞
奖励:$5,000 | 难度:高级
申请链接:https://superteam.fun/...
当前展示42个项目中的10个。可要求查看更多结果或缩小搜索范围。Field Mapping
字段映射
- Name: (fall back to
metadata.title)name - Type label: in brackets:
type,[grant],[hackathon],[bounty],[accelerator],[vc_fund][rfp] - Ecosystem: joined with
metadata.ecosystems(fall back to,)communities[0].name - Description: truncated to ~120 chars
metadata.description
- 名称:(兜底使用
metadata.title)name - 类型标签:括号中的:
type、[grant]、[hackathon]、[bounty]、[accelerator]、[vc_fund][rfp] - 生态系统:用
metadata.ecosystems连接(兜底使用,)communities[0].name - 描述:截断至约120字符
metadata.description
Type-Specific Detail Line
按类型定制详情行
- grant:
Budget: {programBudget} | Status: {status} - hackathon:
Dates: {startsAt}–{endsAt} | Deadline: {deadline} - bounty:
Reward: {programBudget} | Difficulty: {difficulty if available} - accelerator:
Stage: {stage if available} | Deadline: {deadline} - vc_fund:
Check size: {minGrantSize}–{maxGrantSize} | Stage: {stage if available} - rfp:
Budget: {programBudget} | Org: {organizations[0]} | Deadline: {deadline} - fallback:
Budget: {programBudget} | Status: {status}
- grant:
预算:{programBudget} | 状态:{status} - hackathon:
日期:{startsAt}–{endsAt} | 截止日期:{deadline} - bounty:
奖励:{programBudget} | 难度:{difficulty(如有)} - accelerator:
阶段:{stage(如有)} | 截止日期:{deadline} - vc_fund:
投资规模:{minGrantSize}–{maxGrantSize} | 阶段:{stage(如有)} - rfp:
预算:{programBudget} | 机构:{organizations[0]} | 截止日期:{deadline} - 兜底方案:
预算:{programBudget} | 状态:{status}
Common Fields
通用字段
- Deadline: (top-level) formatted as
deadline(or "Rolling" if null)Mon DD, YYYY - Apply link: (top-level), fall back to
submissionUrlormetadata.socialLinks.grantsSiteormetadata.website(first non-empty)metadata.socialLinks.website
- 截止日期:(顶层字段)格式化为
deadline(若为null则显示“Rolling”)Mon DD, YYYY - 申请链接:(顶层字段),兜底依次使用
submissionUrl、metadata.socialLinks.grantsSite或metadata.website(取第一个非空值)metadata.socialLinks.website
Edge Cases
边缘情况
| Scenario | Response |
|---|---|
| No results | If the user specified an ecosystem, run the full ecosystem search strategy (Phase 1 + Phase 2) before giving up. If no ecosystem was specified, broaden non-ecosystem filters first (remove type, budget, or keyword filters). If still none: "No programs found matching your criteria. Try broadening — remove type, ecosystem, or budget filters." |
| No query | Ask: "What kind of funding are you looking for? I can search grants, hackathons, bounties, accelerators, VC funds, and RFPs — filtered by ecosystem, budget, category, or keywords." |
| "more results" / "page 2" | Re-run with |
API returns empty | Check if filters are too narrow. Suggest removing one filter at a time. |
| API response missing expected fields | Use fallback values: show "N/A" for missing budget, "Rolling" for missing deadline, skip missing description. Never fail on a missing optional field. |
| 场景 | 响应方式 |
|---|---|
| 无结果 | 如果用户指定了生态系统,先执行完整的生态系统搜索策略(阶段1+阶段2)再告知无结果。如果未指定生态系统,先放宽非生态系统筛选条件(移除类型、预算或关键词筛选)。如果仍无结果:“未找到符合您条件的项目。请尝试放宽筛选条件——移除类型、生态系统或预算限制。” |
| 无查询内容 | 询问:“您正在寻找哪种类型的资助?我可以搜索grants、hackathons、bounties、accelerators、VC funds和RFPs,还可按生态系统、预算、类别或关键词筛选。” |
| “更多结果” / “第2页” | 使用 |
API返回空的 | 检查筛选条件是否过严。建议逐一移除筛选条件。 |
| API响应缺失预期字段 | 使用兜底值:缺失预算显示“N/A”,缺失截止日期显示“Rolling”,跳过缺失的描述字段。切勿因可选字段缺失而终止流程。 |
Error Handling
错误处理
| Error | Cause | Action |
|---|---|---|
| HTTP 5xx | API server issue | "The Karma API is temporarily unavailable. Try again in a moment." |
| HTTP 429 | Rate limiting | Wait 5 seconds, retry once. If it fails again, tell the user to wait. |
| Connection timeout | Network or API down | "Could not reach the Karma API. Check your connection or try again shortly." |
| Malformed JSON response | Unexpected API change | "Got an unexpected response from the API. The response format may have changed." |
| Community lookup returns no match | User's ecosystem name doesn't match any community | Fall back to |
| 错误类型 | 原因 | 处理动作 |
|---|---|---|
| HTTP 5xx | API服务器问题 | 返回:“Karma API暂时不可用。请稍后重试。” |
| HTTP 429 | 请求频率受限 | 等待5秒后重试一次。如果仍失败,告知用户稍后再试。 |
| 连接超时 | 网络或API故障 | 返回:“无法连接到Karma API。请检查网络连接或稍后重试。” |
| JSON响应格式错误 | API发生意外变更 | 返回:“从API收到意外响应。响应格式可能已变更。” |
| 社区查询无匹配项 | 用户输入的生态系统名称与任何社区都不匹配 | 仅使用 |
Troubleshooting
故障排除
Ecosystem search returns 0 results
生态系统搜索返回0条结果
The user asked for an ecosystem (e.g., "Monad grants") but all 3 queries returned nothing.
- Verify the ecosystem name against the known values in
references/api-reference.md - Try a broader search with just the keyword
name= - The ecosystem may genuinely have no programs listed yet — tell the user
用户查询了某一生态系统(例如“Monad grants”)但三个查询都无结果。
- 根据中的已知值验证生态系统名称
references/api-reference.md - 尝试使用更宽泛的关键词搜索
name= - 该生态系统可能确实没有已收录的项目——告知用户
Community UID lookup finds no match
社区UID查询无匹配项
The community list (~48 entries) doesn't contain a match for the user's query.
- Try partial matching: "OP" should match "Optimism"
- Try without the community query — and
ecosystems=may still return resultsname= - Do not block on this — proceed with the other two queries
社区列表(约48个条目)中没有与用户查询匹配的项。
- 尝试部分匹配:“OP”应匹配“Optimism”
- 尝试跳过社区查询——和
ecosystems=查询可能仍会返回结果name= - 不要因此阻断流程——继续执行另外两个查询
Results look stale or incomplete
结果看起来过时或不完整
Programs may have outdated metadata (missing budgets, old deadlines).
- Present what's available; do not hide results with missing fields
- Use "N/A" or "Rolling" for missing values
- Note to the user: "Some programs may have incomplete information"
项目元数据可能已过时(缺失预算、截止日期过期)。
- 展示现有可用信息;不要隐藏存在字段缺失的结果
- 缺失值使用“N/A”或“Rolling”代替
- 告知用户:“部分项目可能存在信息不完整的情况”