Files
agent-park/docs/integrations/n8n/registry.json
T

499 lines
15 KiB
JSON

{
"meta": {
"lastReviewed": "2026-04-20",
"instructions": [
"Add one workflow entry for every n8n workflow that feeds or is triggered by this repository.",
"Keep repository.consumers paths repo-relative.",
"Optional: export workflow JSON into docs/integrations/n8n/exports/ and reference it from n8n.exportFile."
]
},
"workflows": [
{
"id": "ai-search",
"status": "confirmed",
"name": "AI Search",
"purpose": "Resolve semantic search candidates from n8n and hydrate them into project results.",
"n8n": {
"workflowId": "F5cQ06DykBfpeyfqL-pd7",
"exportFile": "",
"entrypoints": [
{
"kind": "webhook",
"method": "GET",
"path": "ai-search"
}
]
},
"repository": {
"consumers": [
"src/app/api/search/ai/route.ts"
],
"env": [
"N8N_AI_SEARCH_WEBHOOK"
],
"schemas": [
"N8NSearchResponseSchema"
]
},
"contracts": {
"requestFields": [
"desc",
"limit",
"page",
"offset",
"tags",
"domains",
"productForms"
],
"responseFields": [
"results[].id",
"results[].similarity",
"pagination.total",
"pagination.totalPages",
"pagination.hasMore"
]
},
"upstreams": [
"RAG项目搜索",
"pgvector similarity search",
"SiliconFlow embeddings"
],
"downstreams": [
"src/hooks/useProjects.ts#getProjectsByIds",
"POST /api/search/ai response"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: webhook path is `ai-search` and the workflow returns `results[].id` plus `similarity`."
},
{
"id": "signals-aggregation",
"status": "confirmed",
"name": "Signals Aggregation",
"purpose": "Aggregate multi-source discussion signals, filter them with AI, and ingest them into the repository signal store.",
"n8n": {
"workflowId": "bAxNZKGq2ApUUiw9",
"exportFile": "",
"entrypoints": [
{
"kind": "schedule",
"path": "multi-source discussion crawl"
}
]
},
"repository": {
"consumers": [
"src/lib/auth.ts",
"src/app/api/webhook/signals/route.ts",
"src/app/api/signals/route.ts",
"src/lib/validations.ts",
"prisma/schema.prisma"
],
"env": [
"WEBHOOK_API_KEY"
],
"schemas": [
"SignalWebhookPayloadSchema",
"SignalIngestionInputSchema",
"SignalQuerySchema"
]
},
"contracts": {
"requestFields": [
"apiKey",
"signals[].source",
"signals[].sourceUrl",
"signals[].title",
"signals[].titleEn",
"signals[].summary",
"signals[].summaryEn",
"signals[].topic",
"signals[].topicEn",
"signals[].tags",
"signals[].sections",
"signals[].engagement",
"signals[].hotScore",
"signals[].isHot",
"signals[].publishedAt",
"signals[].isActive"
],
"responseFields": [
"success",
"processed",
"created",
"updated",
"failed",
"errors[].index",
"errors[].field",
"errors[].message"
]
},
"upstreams": [
"Hacker News",
"GitHub",
"arXiv",
"Reddit",
"Product Hunt",
"Hugging Face"
],
"downstreams": [
"GET /api/signals",
"signals page feed",
"signal hotness computation"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow posts to `/api/webhook/signals` and also triggers external discovery dedupe/task creation. Workflow currently embeds a shared secret in HTTP body and should move to credentials/env."
},
{
"id": "tag-reset",
"status": "confirmed",
"name": "Project Tag Reset",
"purpose": "Reset selected project tags in bulk from n8n classification results.",
"n8n": {
"workflowId": "8tIgBqLyWrBewJPs",
"exportFile": "",
"entrypoints": [
{
"kind": "manual",
"path": "bulk tag reset"
}
]
},
"repository": {
"consumers": [
"src/lib/auth.ts",
"src/app/api/tags/reset-projects/route.ts",
"src/lib/validations.ts",
"prisma/schema.prisma"
],
"env": [
"WEBHOOK_API_KEY"
],
"schemas": [
"ProjectTagResetRequestSchema"
]
},
"contracts": {
"requestFields": [
"apiKey",
"dryRun",
"replaceAllCategories",
"categories",
"projects[].projectSlug",
"projects[].selectedTagSlugsByCategory"
],
"responseFields": [
"success",
"result.dryRun",
"result.categories",
"result.updatedCount",
"result.failedCount",
"result.results[].projectSlug",
"result.results[].status",
"result.results[].details"
]
},
"upstreams": [
"n8n tag classification"
],
"downstreams": [
"project tag relations",
"project detail page revalidation",
"project list revalidation"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow reads `/api/tags` and `/api/projects`, then posts bulk updates into `/api/tags/reset-projects`. Workflow currently embeds a shared secret in HTTP body and should move to credentials/env."
},
{
"id": "project-ingestion-multi-source",
"status": "external-upstream",
"name": "Project Ingestion (Multi-source)",
"purpose": "Consume queued discovery tasks, enrich project metadata with AI/browser steps, and write final ingestion results back to Agent Park.",
"n8n": {
"workflowId": "1Ig1CyVMsGJFaHOe",
"exportFile": "",
"entrypoints": [
{
"kind": "schedule",
"path": "every 10 minutes"
}
]
},
"repository": {
"consumers": [
"prisma/schema.prisma",
"src/app/api/projects/route.ts",
"src/app/api/projects/[slug]/route.ts"
],
"env": [],
"schemas": []
},
"contracts": {
"requestFields": [
"task.status",
"task.sourceUrl",
"task.sourceType"
],
"responseFields": [
"project content",
"tag assignments",
"task completion status"
]
},
"upstreams": [
"discovery task queue",
"browser/AI extraction",
"tag catalog"
],
"downstreams": [
"project records visible in repository APIs",
"task completion callbacks",
"task failure callbacks"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow polls `/api/discovery/tasks`, marks tasks `IN_PROGRESS`, enriches candidates, then completes or fails tasks. The current repo does not contain `/api/discovery/*` handlers, so this is an upstream system dependency rather than a route implemented here."
},
{
"id": "github-star-refresh",
"status": "confirmed",
"name": "GitHub Star Refresh",
"purpose": "Refresh `projects.githubStars` and `projects.githubStarsUpdatedAt` directly from GitHub repository metadata.",
"n8n": {
"workflowId": "ewx9Gs6cjrTXvwD0",
"exportFile": "",
"entrypoints": [
{
"kind": "schedule",
"path": "daily at 04:00"
}
]
},
"repository": {
"consumers": [
"prisma/schema.prisma",
"src/app/api/search/ai/route.ts",
"src/hooks/useProjects.ts"
],
"env": [],
"schemas": []
},
"contracts": {
"requestFields": [
"projects.id",
"projects.slug",
"external_links.url(type=GITHUB)"
],
"responseFields": [
"projects.githubStars",
"projects.githubStarsUpdatedAt"
]
},
"upstreams": [
"GitHub repository API",
"projects table",
"external_links table"
],
"downstreams": [
"project ranking",
"star sorting",
"home ranking display"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow reads active project GitHub links from Postgres, fetches repository metadata from GitHub, then writes star counts directly back to Postgres. This bypasses repository API routes."
},
{
"id": "project-description-vectorization",
"status": "confirmed",
"name": "Project Description Vectorization",
"purpose": "Generate and persist project embeddings used by semantic search.",
"n8n": {
"workflowId": "1AvejnM5n-WPApU1vFt9C",
"exportFile": "",
"entrypoints": [
{
"kind": "schedule",
"path": "every 30 minutes"
}
]
},
"repository": {
"consumers": [
"prisma/schema.prisma",
"prisma/migrations/20260126000000_add_project_embedding/migration.sql",
"src/app/api/search/ai/route.ts"
],
"env": [],
"schemas": []
},
"contracts": {
"requestFields": [
"projects.id",
"projects.name",
"projects.nameEn",
"projects.description",
"projects.descriptionEn",
"projects.content",
"projects.contentEn"
],
"responseFields": [
"projects.embedding",
"projects.embeddingUpdatedAt"
]
},
"upstreams": [
"SiliconFlow embeddings API",
"projects table"
],
"downstreams": [
"RAG项目搜索",
"semantic search quality"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow selects active projects with null embeddings, generates `BAAI/bge-m3` vectors, and writes them directly into the `vector` column. This is a direct DB maintenance job, not a repository API route."
},
{
"id": "github-trending-discovery",
"status": "external-upstream",
"name": "GitHub Trending Discovery",
"purpose": "Scrape GitHub Trending, dedupe candidates, filter them with AI, and enqueue project discovery tasks.",
"n8n": {
"workflowId": "hughGsWismCpk7jd",
"exportFile": "",
"entrypoints": [
{
"kind": "schedule",
"path": "daily at 01:00"
}
]
},
"repository": {
"consumers": [
"src/app/api/projects/route.ts",
"src/app/api/projects/[slug]/route.ts"
],
"env": [],
"schemas": []
},
"contracts": {
"requestFields": [
"GitHub trending repository URL",
"apiKey",
"tasks[].sourceUrl",
"tasks[].sourceType"
],
"responseFields": [
"dedupe shouldCreate",
"task creation result"
]
},
"upstreams": [
"https://github.com/trending",
"AI keep/discard filter"
],
"downstreams": [
"/api/discovery/check-duplicates",
"/api/discovery/tasks",
"project ingestion queue"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow scrapes GitHub Trending, filters candidates with an LLM, then posts queued tasks into discovery webhook endpoints. The current repo does not implement `/api/discovery/*`, so treat this as upstream data intake."
},
{
"id": "topic-discovery",
"status": "external-upstream",
"name": "Topic Discovery",
"purpose": "Search GitHub topics and keywords for agent/LLM engineering repos, dedupe them, and enqueue discovery tasks.",
"n8n": {
"workflowId": "iw9vx9ih5Lt0Mobk",
"exportFile": "",
"entrypoints": [
{
"kind": "schedule",
"path": "daily at 01:00"
}
]
},
"repository": {
"consumers": [
"src/app/api/projects/route.ts",
"src/app/api/projects/[slug]/route.ts"
],
"env": [],
"schemas": []
},
"contracts": {
"requestFields": [
"GitHub search query",
"apiKey",
"tasks[].sourceUrl",
"tasks[].sourceType"
],
"responseFields": [
"dedupe shouldCreate",
"task creation result",
"low recall alert"
]
},
"upstreams": [
"GitHub Search API",
"AI keep/discard filter",
"topic watchlist"
],
"downstreams": [
"/api/discovery/check-duplicates",
"/api/discovery/tasks",
"project ingestion queue"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: workflow searches agent, infra, observability, evaluation, and MCP-related repositories, then posts accepted candidates into discovery webhooks. The current repo does not implement `/api/discovery/*`, so this is upstream context rather than in-repo routing."
},
{
"id": "ai-chat-gateway",
"status": "adjacent",
"name": "AI Chat Gateway",
"purpose": "Expose a chat-oriented webhook wrapper around `RAG项目搜索` and package search hits into chat blocks/citations.",
"n8n": {
"workflowId": "Rncc22jmHEaYOG58",
"exportFile": "",
"entrypoints": [
{
"kind": "webhook",
"method": "POST",
"path": "agent-park-chat"
}
]
},
"repository": {
"consumers": [],
"env": [],
"schemas": []
},
"contracts": {
"requestFields": [
"requestId",
"sessionId",
"clientId",
"locale",
"mode",
"message"
],
"responseFields": [
"message.blocks",
"message.citations",
"message.meta.source",
"progress.stage"
]
},
"upstreams": [
"RAG项目搜索",
"n8n webhook `ai-search`"
],
"downstreams": [
"external chat clients",
"project detail URLs"
],
"owners": [],
"notes": "Confirmed against live n8n MCP: this workflow is related to Agent Park but does not call a repository route directly. It wraps the RAG webhook and formats citations pointing at project pages."
}
]
}