find-funding-opportunities

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Funding 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 saysMaps to
"Ethereum programs"
ecosystems=Ethereum
+ ecosystem search strategy
"hackathons"
type=hackathon
"hackathons on Ethereum"
type=hackathon
+ ecosystem search strategy
"bounties on Solana"
type=bounty
+ ecosystem search strategy
"bounties over $500"
type=bounty&minGrantSize=500
"accelerator programs"
type=accelerator
"VCs investing in DeFi"
type=vc_fund&name=DeFi
"open RFPs from Optimism"
type=rfp&organization=Optimism
"grants and hackathons on Ethereum"
type=grant,hackathon
+ ecosystem search strategy
"DeFi funding on Optimism"
name=DeFi
+ ecosystem search strategy
"programs over $50K"
minGrantSize=50000
"funding under $100K"
maxGrantSize=100000
"infrastructure"
name=infrastructure
"active programs"
status=active
"retroactive funding on Optimism"
categories=Retroactive%20Funding
+ ecosystem search strategy
"programs on Karma"
onlyOnKarma=true
"what's closing this week"
sortField=endsAt&sortOrder=asc&status=active
(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
curl
URLs (e.g.,
categories=Retroactive%20Funding
).
用户表述对应设置
"以太坊相关项目"
ecosystems=Ethereum
+ 生态系统搜索策略
"hackathons"
type=hackathon
"以太坊上的hackathons"
type=hackathon
+ 生态系统搜索策略
"Solana上的bounties"
type=bounty
+ 生态系统搜索策略
"奖金超过500美元的bounties"
type=bounty&minGrantSize=500
"accelerator项目"
type=accelerator
"投资DeFi的VCs"
type=vc_fund&name=DeFi
"Optimism发布的公开RFPs"
type=rfp&organization=Optimism
"以太坊上的grants和hackathons"
type=grant,hackathon
+ 生态系统搜索策略
"Optimism上的DeFi资助项目"
name=DeFi
+ 生态系统搜索策略
"预算超过5万美元的项目"
minGrantSize=50000
"预算低于10万美元的资助项目"
maxGrantSize=100000
"基础设施"
name=infrastructure
"活跃项目"
status=active
"Optimism上的追溯性资助项目"
categories=Retroactive%20Funding
+ 生态系统搜索策略
"Karma平台上的项目"
onlyOnKarma=true
"本周截止的项目"
sortField=endsAt&sortOrder=asc&status=active
(无查询内容)询问用户需求
预算简写规则:K代表000,M代表000000(例如:$50K → 50000,$1M → 1000000)。
URL编码: 包含空格的值在
curl
URL中必须进行百分号编码(例如:
categories=Retroactive%20Funding
)。

Step 2: Ecosystem Search Strategy

步骤2:生态系统搜索策略

If the query has no ecosystem component, skip this step and go to Step 3.
The
ecosystems
metadata field is often empty — many programs are linked to an ecosystem only via the
communities
field. Use a two-phase approach:
Phase 1 — Try
ecosystems=
first:
Query with
ecosystems={name}
. If this returns sufficient results (5+), present them and move to Step 4.
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:
  1. Community UID lookup: fetch all communities from
    GET /v2/communities?limit=100
    , find the best match by comparing against community names (case-insensitive, partial match), then query with
    communityUid={uid}
  2. name={name}
    — text search on title, universal fallback
Deduplicate all merged results by
id
before presenting.
如果查询中没有生态系统相关内容,跳过此步骤直接进入步骤3。
ecosystems
元数据字段通常为空——许多项目仅通过
communities
字段关联到生态系统。请使用两步法:
阶段1 — 优先尝试
ecosystems=
使用
ecosystems={name}
进行查询。如果返回足够多的结果(5条及以上),展示结果并进入步骤4。
阶段2 — 通过社区查询补充(仅当阶段1结果稀少时): 如果阶段1返回结果少于5条,运行以下两个额外查询并合并结果:
  1. 社区UID查询:从
    GET /v2/communities?limit=100
    获取所有社区,通过社区名称(不区分大小写、支持部分匹配)找到最佳匹配项,然后使用
    communityUid={uid}
    进行查询
  2. name={name}
    — 对标题进行文本搜索,通用兜底方案
在展示结果前,需根据
id
对所有合并后的结果进行去重。

Step 3: Build and Execute the Request

步骤3:构建并执行请求

Use
curl
via Bash. CRITICAL: Every request must include the tracking headers below. Never omit them.
Before the first request, generate a tracking ID:
bash
INVOCATION_ID=$(uuidgen)
Every
curl
call must include these query defaults and tracking headers (see references/api-reference.md for details):
undefined
通过Bash使用
curl
关键要求:每个请求必须包含以下追踪头信息,切勿省略。
首次请求前,生成一个追踪ID:
bash
INVOCATION_ID=$(uuidgen)
每个
curl
调用必须包含以下查询默认值和追踪头信息(详情请查看references/api-reference.md):
undefined

Query 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}"

```bash

No 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"
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"

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"
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"

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"
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"

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"
undefined
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"
undefined

Step 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:
    metadata.title
    (fall back to
    name
    )
  • Type label:
    type
    in brackets:
    [grant]
    ,
    [hackathon]
    ,
    [bounty]
    ,
    [accelerator]
    ,
    [vc_fund]
    ,
    [rfp]
  • Ecosystem:
    metadata.ecosystems
    joined with
    , 
    (fall back to
    communities[0].name
    )
  • Description:
    metadata.description
    truncated to ~120 chars
  • 名称
    metadata.title
    (兜底使用
    name
  • 类型标签:括号中的
    type
    [grant]
    [hackathon]
    [bounty]
    [accelerator]
    [vc_fund]
    [rfp]
  • 生态系统
    metadata.ecosystems
    , 
    连接(兜底使用
    communities[0].name
  • 描述
    metadata.description
    截断至约120字符

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:
    deadline
    (top-level) formatted as
    Mon DD, YYYY
    (or "Rolling" if null)
  • Apply link:
    submissionUrl
    (top-level), fall back to
    metadata.socialLinks.grantsSite
    or
    metadata.website
    or
    metadata.socialLinks.website
    (first non-empty)
  • 截止日期
    deadline
    (顶层字段)格式化为
    Mon DD, YYYY
    (若为null则显示“Rolling”)
  • 申请链接
    submissionUrl
    (顶层字段),兜底依次使用
    metadata.socialLinks.grantsSite
    metadata.website
    metadata.socialLinks.website
    (取第一个非空值)

Edge Cases

边缘情况

ScenarioResponse
No resultsIf 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 queryAsk: "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
page=2
API returns empty
programs
array
Check if filters are too narrow. Suggest removing one filter at a time.
API response missing expected fieldsUse 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页”使用
page=2
重新执行查询
API返回空的
programs
数组
检查筛选条件是否过严。建议逐一移除筛选条件。
API响应缺失预期字段使用兜底值:缺失预算显示“N/A”,缺失截止日期显示“Rolling”,跳过缺失的描述字段。切勿因可选字段缺失而终止流程。

Error Handling

错误处理

ErrorCauseAction
HTTP 5xxAPI server issue"The Karma API is temporarily unavailable. Try again in a moment."
HTTP 429Rate limitingWait 5 seconds, retry once. If it fails again, tell the user to wait.
Connection timeoutNetwork or API down"Could not reach the Karma API. Check your connection or try again shortly."
Malformed JSON responseUnexpected API change"Got an unexpected response from the API. The response format may have changed."
Community lookup returns no matchUser's ecosystem name doesn't match any communityFall back to
ecosystems=
and
name=
queries only. Do not fail — partial results are better than none.
错误类型原因处理动作
HTTP 5xxAPI服务器问题返回:“Karma API暂时不可用。请稍后重试。”
HTTP 429请求频率受限等待5秒后重试一次。如果仍失败,告知用户稍后再试。
连接超时网络或API故障返回:“无法连接到Karma API。请检查网络连接或稍后重试。”
JSON响应格式错误API发生意外变更返回:“从API收到意外响应。响应格式可能已变更。”
社区查询无匹配项用户输入的生态系统名称与任何社区都不匹配仅使用
ecosystems=
name=
查询作为兜底。不要终止流程——部分结果总比无结果好。

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
    name=
    search with just the keyword
  • 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 —
    ecosystems=
    and
    name=
    may still return results
  • 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”代替
  • 告知用户:“部分项目可能存在信息不完整的情况”