Skip to main content
Glama
polylens-bilibili

polylens-bilibili

by liu-xindi

get_video_info

Read-only

Fetch Bilibili video metadata and stats for links, short links, or BV/av IDs, including title, author, publish time, summary, and engagement counts.

Instructions

含标题、作者、发布时间、简介与各项统计。

统计口径:评论数含二级评论;弹幕数与整片时长是全部分段之和, 当前段时长只算这一段。单段视频忽略 ?p=,current_page 为空。 staff 仅联合投稿有值,格式为"名字(角色,mid)",以分号分隔。

(video info, metadata, stats)

Input Schema

NameRequiredDescriptionDefault
jqYes必填的 jq 表达式。输入是全部条目组成的数组,每条字段:input,id,title,author,author_url,url,published_at,summary,staff,duration_sec,total_duration_sec,view_count,danmaku_count_total,comment_count,like_count,favorite_count,share_count,coin_count,cover_url,part_count,current_page,current_part,error。体积大、多数任务用不到的字段:author_url(查看 UP 主时需要)、cover_url;特定任务需要时照常使用。每个输入一条,取不到的只有 input 与 error 有值。结果为字符串时原样返回,其他结果编码为表格或 JSON;结果为数组时 jq_count 是其长度。
videosYes视频列表,每项为链接、b23.tv 短链或裸 BV/av 号。分段写在项里,如 BV1xx?p=2,不写为第 1 段。
descriptionYes格式为 工具名:目的。

Output Schema

NameRequiredDescriptionDefault
countYes
failedYes
videosYes
jq_countNo
elapsed_sNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed35 schema fields changedv0.12.1
    • addedInput schema / properties / description
      Added value: +{
      +  "description": "格式为 工具名:目的。",
      +  "title": "Description",
      +  "type": "string"
      +}
    • addedInput schema / properties / jq
      Added value: +{
      +  "description": "必填的 jq 表达式。输入是全部条目组成的数组,每条字段:input,id,title,author,author_url,url,published_at,summary,staff,duration_sec,total_duration_sec,view_count,danmaku_count_total,comment_count,like_count,favorite_count,share_count,coin_count,cover_url,part_count,current_page,current_part,error。体积大、多数任务用不到的字段:author_url(查看 UP 主时需要)、cover_url;特定任务需要时照常使用。每个输入一条,取不到的只有 input 与 error 有值。结果为字符串时原样返回,其他结果编码为表格或 JSON;结果为数组时 jq_count 是其长度。",
      +  "title": "Jq",
      +  "type": "string"
      +}
    • removedInput schema / properties / page
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "分段序号,1 起。不传时取链接里的 ?p=N,两者都没有则第 1 段。单段视频忽略此项。",
      -  "title": "Page"
      -}
    • removedInput schema / properties / url
      Removed value: -{
      -  "description": "视频链接、b23.tv 短链,或裸 BV/av 号;含链接的分享文案也可直接传入。",
      -  "title": "Url",
      -  "type": "string"
      -}
    • addedInput schema / properties / videos
      Added value: +{
      +  "description": "视频列表,每项为链接、b23.tv 短链或裸 BV/av 号。分段写在项里,如 BV1xx?p=2,不写为第 1 段。",
      +  "items": {
      +    "type": "string"
      +  },
      +  "title": "Videos",
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "url"
      -]New value: +[
      +  "description",
      +  "videos",
      +  "jq"
      +]
    • removedOutput schema / $defs
      Removed value: -{
      -  "StaffMember": {
      -    "properties": {
      -      "author_url": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Author Url"
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Name"
      -      },
      -      "role": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Role"
      -      }
      -    },
      -    "title": "StaffMember",
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / properties / author
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Author"
      -}
    • removedOutput schema / properties / author_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Author Url"
      -}
    • removedOutput schema / properties / category_id
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Category Id"
      -}
    • removedOutput schema / properties / coin_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Coin Count"
      -}
    • removedOutput schema / properties / comment_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Comment Count"
      -}
    • removedOutput schema / properties / copyright
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Copyright"
      -}
    • addedOutput schema / properties / count
      Added value: +{
      +  "title": "Count",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / cover_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Cover Url"
      -}
    • removedOutput schema / properties / current_page
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Current Page"
      -}
    • removedOutput schema / properties / current_part
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Current Part"
      -}
    • removedOutput schema / properties / danmaku_count_total
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Danmaku Count Total"
      -}
    • removedOutput schema / properties / duration_sec
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "number"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Duration Sec"
      -}
    • addedOutput schema / properties / failed
      Added value: +{
      +  "title": "Failed",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / favorite_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Favorite Count"
      -}
    • removedOutput schema / properties / id
      Removed value: -{
      -  "title": "Id",
      -  "type": "string"
      -}
    • addedOutput schema / properties / jq_count
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Jq Count"
      +}
    • removedOutput schema / properties / like_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Like Count"
      -}
    • removedOutput schema / properties / part_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Part Count"
      -}
    • removedOutput schema / properties / published_at
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Published At"
      -}
    • removedOutput schema / properties / share_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Share Count"
      -}
    • removedOutput schema / properties / staff
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "items": {
      -        "$ref": "#/$defs/StaffMember"
      -      },
      -      "type": "array"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Staff"
      -}
    • removedOutput schema / properties / summary
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Summary"
      -}
    • removedOutput schema / properties / title
      Removed value: -{
      -  "title": "Title",
      -  "type": "string"
      -}
    • removedOutput schema / properties / total_duration_sec
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "number"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Total Duration Sec"
      -}
    • removedOutput schema / properties / url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Url"
      -}
    • addedOutput schema / properties / videos
      Added value: +{
      +  "title": "Videos",
      +  "type": "string"
      +}
    • removedOutput schema / properties / view_count
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "View Count"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "title"
      -]New value: +[
      +  "count",
      +  "failed",
      +  "videos"
      +]
  2. First observedv0.1.0

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and openWorldHint=true already covering the safety profile, the description contributes genuinely useful semantics beyond the annotations: comment count includes secondary comments, danmaku count and total duration are sums across all segments while current-segment duration counts only one part, single-segment videos ignore ?p= and leave current_page empty, and staff is only populated for joint submissions with a documented 'name(role,mid)' format. No auth, rate-limit, or failure-mode detail is given, but the edge-case semantics are a real addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dense and free of filler, with the statistical caveats packed into a few clauses. Its only weakness is structural: it opens with a verbless fragment ('contains title, author...') instead of a front-loaded statement of purpose, so the reader must reconstruct the action from context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batched, jq-driven tool with an output schema, the description correctly focuses on the tricky counting semantics and per-segment behavior rather than re-explaining return values. What remains missing is routing guidance toward overlapping siblings and any note on partial-failure behavior beyond what the jq schema already covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the jq, videos, and description parameters are already fully documented in the schema, making 3 the baseline. The description's note that single-segment videos ignore ?p= and that current_page is empty mildly reinforces the videos-parameter semantics, but adds no new syntax or format information beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates the returned contents (title, author, publish time, summary, stats) rather than stating a verb+resource action; an agent must infer that this fetches metadata for one or more videos. The trailing keywords '(video info, metadata, stats)' reinforce the resource but do not distinguish it from siblings like get_parts or get_danmaku_counts, which cover overlapping data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement, no exclusions, and no routing to alternatives such as get_parts (segments) or get_danmaku_counts (danmaku). The statistical caveats hint at overlap with those siblings but never tell the agent which tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.