Discovery: how agents and search engines find vid2context#
Roadmap item 51, owned by packages/discovery. Formats were checked against each vendor's docs on 2026-11-14; re-check before relying on one that is marked experimental.
What is in the repo#
| File | Who reads it | Source |
|---|---|---|
npm vid2context-mcp, vid2context |
npx, every MCP client, every directory that installs from npm | npm run build:npm bundles packages/mcp and packages/cli into packages/discovery/dist/npm/ |
server.json |
Official MCP Registry, and the clients and directories that mirror it (VS Code, GitHub, Glama, mcp.so) | generated |
glama.json |
Glama (claims the listing for nirholas) |
generated |
Dockerfile, .dockerignore |
Glama's build check (listings only appear after a reproducible build), Docker MCP Catalog | hand-written, builds the bundle from source |
gemini-extension.json |
Gemini CLI (gemini extensions install <repo>) and its gallery |
generated |
context7.json |
Context7, which coding agents query for library docs | generated |
llms-install.md |
Cline marketplace and any agent asked to install the server | generated |
llms.txt, llms-full.txt |
IDE agents and MCP doc tools (crawlers rarely fetch it, agents do) | hand-written |
AGENTS.md |
coding agents working in the repo | hand-written |
packages/discovery/assets/logo.{svg,png} |
registry icon, Cline's 400x400 logo, favicons | npm run discovery:logo renders the PNG |
| README install section, badges and FAQ | GitHub search, Google, answer engines | hand-written; a test keeps its commands and links equal to src/install.ts |
Generated files come from packages/discovery/src/meta.ts (names, descriptions, keywords, optional keys) through src/manifests.ts. Change the facts there and run npm run discovery:gen; npm test fails if a committed copy drifts.
Releasing#
Run in order. Steps 2 and 3 need the owner's logins.
npm run check && npm run build:npm. Bump versions inpackages/mcp/package.jsonandpackages/cli/package.jsonfirst when releasing a new version, thennpm run discovery:gensoserver.jsonandgemini-extension.jsonfollow.npm loginonce, thennpm publish --access public packages/discovery/dist/npm/vid2context-mcpand the same forpackages/discovery/dist/npm/vid2context. Turn on 2FA for publishing. Check:npx -y vid2context-mcpstarts and waits on stdin;npx vid2context --versionprints the version.- MCP Registry: install
mcp-publisher(brew install mcp-publisher, or the release tarball from github.com/modelcontextprotocol/registry), thenmcp-publisher validate,mcp-publisher login github(device flow, grantsio.github.nirholas/*) andmcp-publisher publishfrom the repo root. The registry checks that npmvid2context-mcpcarries"mcpName": "io.github.nirholas/vid2context", which the build sets. - Commit the README, llms files and manifests together with or after the publish, never before: they tell agents to run
npx -y vid2context-mcp. - Tag and release on GitHub (
gh release create v0.1.0 --generate-notes). Releases matter for GitHub search ranking, the Gemini extension gallery and directory freshness checks.
Directory submissions (owner, once, after step 3)#
| Where | How | Notes |
|---|---|---|
| Glama | glama.ai/mcp/servers, "Add MCP Server", sign in with GitHub, paste the repo | glama.json proves ownership; the Dockerfile makes the build check pass. Its score badge then goes in the README |
| Cline marketplace | github.com/cline/mcp-marketplace, issue template "MCP server submission": repo URL, packages/discovery/assets/logo.png, reason |
confirm Cline installed it from llms-install.md first |
| Docker MCP Catalog | fork docker/mcp-registry, task create -- --category media https://github.com/nirholas/vid2context, open the PR |
it builds the root Dockerfile and checks that tools list |
| Context7 | context7.com/add-library, paste the repo | reads context7.json |
| Gemini CLI gallery | add the repo topic gemini-cli-extension and publish a release |
crawled daily |
| Claude Code | after prompt 16 adds .claude-plugin/marketplace.json: claude plugin marketplace add nirholas/vid2context works for everyone; the Anthropic directory takes submissions at claude.ai/directory/manage |
|
| Cursor directory | cursor.directory/plugins/new, paste the repo | |
| awesome-mcp-servers | PR one line to punkpeye/awesome-mcp-servers under "Multimedia Process", alphabetical: - [nirholas/vid2context](https://github.com/nirholas/vid2context) 📇 🏠 ☁️ - Video to context for agents: YouTube and media-file transcripts with timestamps, metadata and chapters; captions first, free-first speech-to-text fallback. |
that list's own format uses those emoji; keep them only there |
| mcp.so, MCP Market, mcp.directory, LobeHub | mcp.so/submit, mcpmarket.com/submit, mcp.directory/submit, lobehub.com/submit | paste the repo; most also read the MCP Registry |
| Other awesome lists | awesome-whisper, awesome-youtube, awesome-ai-agents, awesome-claude-code, awesome-llm-apps | one line each, only where the list's scope fits |
Not available: Smithery no longer accepts self-published servers (its CLI and API stopped on 2026-10-31; the site is a curated list run by Arcade). PulseMCP is closed to new submissions and points to the official registry. ChatGPT's app directory needs the remote HTTPS server from prompt 45.
Search engines (owner)#
- Done on 2026-11-14: Always Use HTTPS on, minimum TLS 1.2,
www301 to the apex (zone Single Redirect rule "www to apex"). Cloudflare AI-bot blocking and the managed robots.txt were already off; keep them off. - Google Search Console: add the
vid2context.comdomain property (DNS TXT verification on Cloudflare) and submithttps://vid2context.com/sitemap.xmlonce prompt 36 ships it. - Bing Webmaster Tools: import from Search Console. Bing's index feeds ChatGPT search and Copilot, so this matters for answer engines, not just Bing.
- IndexNow: with Bing verified, ping IndexNow on deploy, or enable Cloudflare Crawler Hints in the dashboard (Caching, Configuration) so changed pages are reported automatically.
- GitHub repo settings: set the homepage to
https://vid2context.com(currently without the scheme) and upload a social preview image (Settings, General, 1280x640) so links shared anywhere get a card. Keep the description and topics; addgemini-cli-extension. - Launch posts that earn real links: Show HN, r/LocalLLaMA and r/ClaudeAI (lead with the zero-key, local-first angle), dev.to or a blog post with a real worked example (a playlist turned into cited notes). One post per venue, written for that venue.
Handed to other prompts#
- 36 (site): robots.txt naming the AI crawlers, sitemap with git dates, JSON-LD graph, Markdown twins, search-intent and per-client pages, install buttons from
src/install.ts, favicons from the logo, performance budget. - 46 (server):
Accept: text/markdownnegotiation,Linkheaders,X-Robots-Tag: noindexon/api/*. - 16 (integrations): root
.claude-plugin/marketplace.json, installers that write the published npx command. - 45 (remote MCP): Server Card and
/.well-known/ai-catalog.json, theremotesentry inserver.json, ChatGPT app directory steps. - 49 (containers): the full server image stays in
deploy/containers/; the rootDockerfileis only the stdio MCP image the directories need.