Skip to main content
Glama
Ryan7t
by Ryan7t

parse_generic_link

Extract video, image, and text content from any social media share link by parsing platform-independent URLs to retrieve titles, captions, and direct media URLs.

Instructions

解析任意短视频/图文链接,直接启用 generic 兜底逻辑。

参数:
- share_link: 任意平台的分享链接或包含链接的文本(抖音/小红书亦可传入)

返回:
- 包含资源链接和信息的JSON字符串
- 输出字段与其它工具一致:platform/title/caption/url
- 调用完成后,请将结果整理为以下纯文本格式并反馈给用户(禁止使用Markdown):
  标题(如无则留空):
  文案:
  视频/图片链接:
- 请完整保留标题与文案的全部内容,不要省略或截断
- 若未能解析,将返回错误说明(可能原因:页面无直链、需要登录等)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
share_linkYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The main handler function for the 'parse_generic_link' tool, registered via @mcp.tool(). It invokes the generic media extractor and returns formatted JSON or error.
    @mcp.tool()
    def parse_generic_link(share_link: str) -> str:
        """解析任意短视频/图文链接,直接启用 generic 兜底逻辑。
    
        参数:
        - share_link: 任意平台的分享链接或包含链接的文本(抖音/小红书亦可传入)
    
        返回:
        - 包含资源链接和信息的JSON字符串
        - 输出字段与其它工具一致:platform/title/caption/url
        - 调用完成后,请将结果整理为以下纯文本格式并反馈给用户(禁止使用Markdown):
          标题(如无则留空):
          文案:
          视频/图片链接:
        - 请完整保留标题与文案的全部内容,不要省略或截断
        - 若未能解析,将返回错误说明(可能原因:页面无直链、需要登录等)
        """
        try:
            result = extract_generic_media(share_link)
            result.setdefault("fallback_reason", "generic_tool_invocation")
            return json.dumps(result, ensure_ascii=False, indent=2)
        except Exception as e:
            return json.dumps({
                "status": "error",
                "error": f"通用解析失败: {e}"
            }, ensure_ascii=False, indent=2)
  • Core helper function that performs the actual generic media extraction by fetching the page, parsing HTML with regex patterns for video URLs (og:video, etc.), and extracting title/caption.
    def extract_generic_media(share_text: str) -> Dict[str, str]:
        """尝试从任意链接中提取无水印视频信息。
    
        返回:
            dict: 包含 platform/type/url/title/caption 的基础信息。
    
        失败时抛出 ValueError,便于调用方根据需要返回原始错误。
        """
    
        share_url = _extract_first_url(share_text)
        logger.debug("[GenericExtractor] 开始解析链接: %s", share_url)
    
        response = requests.get(share_url, headers=GENERIC_HEADERS, timeout=10, allow_redirects=True)
        response.raise_for_status()
    
        final_url = response.url
        html_text = response.text
        logger.debug("[GenericExtractor] 最终地址: %s", final_url)
    
        media_url = _find_media_url(html_text)
        if not media_url:
            raise ValueError("未从页面中发现可用的视频直链")
    
        title = (
            _extract_meta(html_text, "og:title")
            or _extract_meta(html_text, "twitter:title")
            or final_url
        )
    
        caption = _extract_meta(html_text, "og:description") or _extract_meta(html_text, "description")
    
        return {
            "status": "success",
            "type": "video",
            "platform": "generic",
            "title": title.strip() if title else None,
            "caption": caption.strip() if caption else None,
            "url": media_url,
            "source_url": final_url,
        }
  • The @mcp.tool() decorator registers the parse_generic_link function as an MCP tool.
    @mcp.tool()
  • Function signature defines the input schema (share_link: str) and output (str JSON).
    def parse_generic_link(share_link: str) -> str:

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ryan7t/wanyi-watermark'

If you have feedback or need assistance with the MCP directory API, please join our Discord server