Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available:
6.0.0
API 文档
本文档详细描述了饭否 MCP 服务器提供的所有工具函数。
认证方式
环境变量方式(PyPI 包)
使用环境变量传递认证信息:
FANFOU_API_KEY- 饭否应用的 API KeyFANFOU_API_SECRET- 饭否应用的 API SecretFANFOU_OAUTH_TOKEN- OAuth Token(推荐)FANFOU_OAUTH_TOKEN_SECRET- OAuth Token Secret(推荐)FANFOU_USERNAME- 饭否用户名(首次使用)FANFOU_PASSWORD- 饭否密码(首次使用)
HTTP 头方式(SSE 服务)
使用 HTTP 头传递认证信息,支持多用户隔离:
X-Fanfou-Api-Key- 饭否应用的 API KeyX-Fanfou-Api-Secret- 饭否应用的 API SecretX-Fanfou-OAuth-Token- OAuth Token(推荐)X-Fanfou-OAuth-Token-Secret- OAuth Token Secret(推荐)X-Fanfou-Username- 饭否用户名(首次使用)X-Fanfou-Password- 饭否密码(首次使用)
认证相关
generate_oauth_token
生成 OAuth Token
功能:
- 使用用户名密码生成 OAuth Token
- 用于后续免密登录,避免重复输入用户名密码
前提条件:
- 环境变量方式:需要设置
FANFOU_USERNAME和FANFOU_PASSWORD环境变量 - HTTP 头方式:需要传递
X-Fanfou-Username和X-Fanfou-Password头部
返回:
- 包含 OAuth Token 信息的字典
- 控制台会显示详细的 Token 信息和使用说明
时间线相关
get_home_timeline
获取当前用户首页关注用户及自己的饭否时间线
功能:
- 调用饭否 API 的 /statuses/home_timeline.json 接口获取当前用户的首页时间线
- 包含用户关注的所有人的最新消息
- 注:通常用户询问「我的饭否」时,指的是该时间线,除非用户明确指出「某个用户的饭否」
参数:
count(int, 可选): 获取数量,默认 5 条max_id(str, 可选): 返回列表中内容最新 ID,用于分页获取更早的内容
返回:
- 首页时间线列表,包含以下字段:
饭否内容: 饭否消息内容(HTML 格式)- 转发:以「转@」开头,后跟用户链接,如
转@<a href="https://fanfou.com/~FgPOFSnmkW8" class="former">kingcos</a>,其中 href 中的是用户 ID,inner Text 是被转发用户的显示名称,一条饭否可能有多个转发 - 话题:以「#」包围,如
#<a href="/q/%E6%AD%A3%E5%9C%A8%E6%92%AD%E6%94%BE">正在播放</a>#,其中 q/ 后面的是话题名,一条饭否可能有多个话题 - 审核状态:如果内容末尾显示「【审核中】」,表示该内容正在审核中
- 转发:以「转@」开头,后跟用户链接,如
发布 ID: 消息的唯一标识符发布时间: 消息发布时间发布者: 发布者的用户名发布者 ID: 发布者的用户 ID图片链接: 如果包含图片,则提供图片链接
get_user_timeline
根据用户 ID 获取某个用户发表内容的时间线
功能:
- 调用饭否 API 的 /statuses/user_timeline.json 接口获取指定用户的时间线
- 当提供搜索关键词时,会调用 /search/user_timeline.json 接口进行搜索
参数:
user_id(str, 可选): 用户 ID,如果为空则获取当前用户时间线max_id(str, 可选): 返回列表中内容最新 ID,用于分页获取更早的内容count(int, 可选): 获取数量,默认 5 条q(str, 可选): 搜索关键词,如果为空则获取普通用户时间线;如果不为空则搜索该用户包含该关键词的消息
返回:
- 用户时间线列表,包含以下字段:
饭否内容: 饭否消息内容(HTML 格式)- 转发:以「转@」开头,后跟用户链接,如
转@<a href="https://fanfou.com/~FgPOFSnmkW8" class="former">kingcos</a>,其中 href 中的是用户 ID,inner Text 是被转发用户的显示名称,一条饭否可能有多个转发 - 话题:以「#」包围,如
#<a href="/q/%E6%AD%A3%E5%9C%A8%E6%92%AD%E6%94%BE">正在播放</a>#,其中 q/ 后面的是话题名,一条饭否可能有多个话题 - 审核状态:如果内容末尾显示「【审核中】」,表示该内容正在审核中
- 转发:以「转@」开头,后跟用户链接,如
发布 ID: 消息的唯一标识符发布时间: 消息发布时间发布者: 发布者的用户名发布者 ID: 发布者的用户 ID图片链接: 如果包含图片,则提供图片链接
get_public_timeline
获取公开时间线
功能:
- 调用饭否 API 的 /statuses/public_timeline.json 接口获取饭否全站最新的公开消息
- 这些是所有用户可见的公开饭否内容
- 当提供搜索关键词时,会调用 /search/public_timeline.json 接口进行搜索
参数:
count(int, 可选): 获取数量,默认 5 条max_id(str, 可选): 返回列表中内容最新 ID,用于分页获取更早的内容q(str, 可选): 搜索关键词,如果为空则获取普通公开时间线;如果不为空则搜索包含该关键词的公开消息
返回:
- 公开时间线列表,包含以下字段:
饭否内容: 饭否消息内容(HTML 格式)- 转发:以「转@」开头,后跟用户链接,如
转@<a href="https://fanfou.com/~FgPOFSnmkW8" class="former">kingcos</a>,其中 href 中的是用户 ID,inner Text 是被转发用户的显示名称,一条饭否可能有多个转发 - 话题:以「#」包围,如
#<a href="/q/%E6%AD%A3%E5%9C%A8%E6%92%AD%E6%94%BE">正在播放</a>#,其中 q/ 后面的是话题名,一条饭否可能有多个话题 - 审核状态:如果内容末尾显示「【审核中】」,表示该内容正在审核中
- 转发:以「转@」开头,后跟用户链接,如
发布 ID: 消息的唯一标识符发布时间: 消息发布时间发布者: 发布者的用户名发布者 ID: 发布者的用户 ID图片链接: 如果包含图片,则提供图片链接
用户和内容相关
get_user_info
获取用户信息
功能:
- 调用饭否 API 的 /users/show.json 接口获取指定用户的详细信息
- 如果 user_id 为空,则获取当前登录用户的信息
参数:
user_id(str, 可选): 用户 ID,如果为空则获取当前用户信息
返回:
- 用户信息字典,包含以下字段:
用户 ID: 用户的唯一标识符用户名: 用户名位置: 用户所在位置性别: 用户性别生日: 用户生日描述: 用户个人描述头像: 用户头像链接链接: 用户个人网站链接是否加锁: 账号是否受保护粉丝数: 被关注数量朋友数: 互相关注数量收藏数: 收藏的消息数量发布数: 发布的消息数量照片数: 发布的照片数量是否关注: 当前用户是否关注该用户注册时间: 账号注册时间最新状态: 用户最新发布的消息信息(包含发布时间、发布 ID、发布内容)
get_status_info
获取某条饭否内容的具体信息
功能:
- 调用饭否 API 的 /statuses/show/id.json 接口获取指定饭否内容的详细信息
参数:
status_id(str, 必需): 饭否内容的 ID
返回:
- 饭否内容的详细信息字典,包含以下字段:
饭否内容: 消息文本内容(HTML 格式)- 转发:以「转@」开头,后跟用户链接,如
转@<a href="https://fanfou.com/~FgPOFSnmkW8" class="former">kingcos</a>,其中 href 中的是用户 ID,inner Text 是被转发用户的显示名称,一条饭否可能有多个转发 - 话题:以「#」包围,如
#<a href="/q/%E6%AD%A3%E5%9C%A8%E6%92%AD%E6%94%BE">正在播放</a>#,其中 q/ 后面的是话题名,一条饭否可能有多个话题 - 审核状态:如果内容末尾显示「【审核中】」,表示该内容正在审核中
- 转发:以「转@」开头,后跟用户链接,如
发布 ID: 消息的唯一标识符发布时间: 消息发布时间发布者: 发布者的显示名称发布者 ID: 发布者的用户 ID是否收藏: 当前用户是否收藏了该消息是否是自己: 是否是当前用户发布的消息发布位置: 消息发布的地理位置回复信息: 如果是回复消息,包含被回复的状态 ID、用户 ID 和用户名图片链接: 如果包含图片,则提供图片链接
互动相关
manage_favorite
管理饭否内容的收藏状态
功能:
- 调用饭否 API 的 /favorites/create/id.json 或 /favorites/destroy/id.json 接口
- 可以收藏或取消收藏指定的饭否内容
- 内置二次确认机制,防止误操作
- 重要:AI助手不能自动确认操作,必须等待用户明确指示
参数:
status_id(str, 必需): 饭否内容的 IDaction(str, 必需): 操作类型,"create" 表示收藏,"destroy" 表示取消收藏confirm(bool, 可选): 是否确认操作,默认为 False
返回: 首次调用时(confirm=False):
- 确认信息字典,包含以下字段:
需要确认: 是否需要用户确认内容预览: 要操作的内容预览(最多50字)发布时间: 内容的发布时间发布 ID: 内容的 ID发布者: 内容的发布者当前收藏状态: 当前的收藏状态操作类型: 要执行的操作(收藏/取消收藏)⚠️ 重要提示: 操作的提醒信息确认提示: 如何进行确认的说明🚫 绝对禁止: AI助手不能自动确认的提醒
确认操作时(confirm=True):
- 操作结果字典,包含以下字段:
是否收藏: 操作后的收藏状态操作结果: 操作是否成功的描述信息操作类型: 执行的具体操作(收藏/取消收藏)
使用流程:
- 首次调用:
manage_favorite("status_id", "action")- 显示内容预览和确认提示 - 用户必须明确表示要操作:用户看到预览后,必须明确说"确认收藏"或"确认取消收藏"
- 确认操作:只有在用户明确确认后,AI才会调用
manage_favorite("status_id", "action", confirm=True)
安全机制:
- 🛡️ 双重保护:首次调用只显示预览,不执行操作
- 🚫 AI限制:AI助手被明确禁止自动确认操作
- 👤 用户控制:只有用户明确表示要操作时,AI才会执行
- ⚠️ 状态检查:自动检查当前收藏状态,避免重复操作
manage_friendship
管理用户关注状态
功能:
- 调用饭否 API 的 /friendships/create.json 或 /friendships/destroy.json 接口
- 可以关注或取消关注指定用户
- 在执行关注操作前,会先调用 get_user_info 查询目标用户信息
- 智能处理受保护账号的关注申请
- 内置二次确认机制,防止误操作
- 重要:AI助手不能自动确认操作,必须等待用户明确指示
参数:
user_id(str, 必需): 目标用户的 IDaction(str, 必需): 操作类型,"create" 表示关注,"destroy" 表示取消关注confirm(bool, 可选): 是否确认操作,默认为 False
返回: 首次调用时(confirm=False):
- 确认信息字典,包含以下字段:
需要确认: 是否需要用户确认用户预览: 要操作的用户预览信息(用户名、用户ID、是否受保护、粉丝数、发布数、个人描述)当前关注状态: 当前的关注状态操作类型: 要执行的操作(关注/取消关注)⚠️ 重要提示: 操作的提醒信息特殊情况: 如果是受保护账号,会包含相关提示确认提示: 如何进行确认的说明🚫 绝对禁止: AI助手不能自动确认的提醒
确认操作时(confirm=True):
- 操作结果字典,包含以下字段:
是否关注: 操作后的关注状态操作结果: 操作是否成功的描述信息操作类型: 执行的具体操作(关注/取消关注/关注申请)用户信息: 目标用户的基本信息(用户名、用户ID、是否受保护)特殊情况: 如果是受保护账号的关注申请,会包含相关提示
使用流程:
- 首次调用:
manage_friendship("user_id", "action")- 显示用户预览和确认提示 - 用户必须明确表示要操作:用户看到预览后,必须明确说"确认关注"或"确认取消关注"
- 确认操作:只有在用户明确确认后,AI才会调用
manage_friendship("user_id", "action", confirm=True)
安全机制:
- 🛡️ 双重保护:首次调用只显示预览,不执行操作
- 🚫 AI限制:AI助手被明确禁止自动确认操作
- 👤 用户控制:只有用户明确表示要操作时,AI才会执行
- ⚠️ 状态检查:自动检查当前关注状态,避免重复操作
特殊情况:
- 当目标用户账号受保护(protected)时,关注操作将变为申请关注
- 系统会自动检测并处理这种情况,返回相应的提示信息
- 申请关注需要对方确认后才能生效
发布相关
publish_status
发布饭否内容(仅文字)
功能:
- 调用饭否 API 的 /statuses/update.json 接口发布纯文字内容
- 支持最多140字的文字内容发布
- 内置二次确认机制,防止误发布
- 重要:AI助手不能自动确认发布,必须等待用户明确指示
参数:
status(str, 必需): 要发布的文字内容(最多140字)confirm(bool, 可选): 是否确认发布,默认为 False
返回: 首次调用时(confirm=False):
- 确认信息字典,包含以下字段:
需要确认: 是否需要用户确认内容预览: 要发布的内容预览字数统计: 当前字数和限制(如:50/140)操作类型: 发布饭否⚠️ 重要提示: 发布的提醒信息确认提示: 如何进行确认的说明🚫 绝对禁止: AI助手不能自动确认的提醒
确认发布时(confirm=True):
- 发布结果字典,包含以下字段:
发布 ID: 新发布消息的唯一标识符发布时间: 消息发布时间发布结果: 发布是否成功的描述信息重要提示: 关于审核的提醒信息
使用流程:
- 首次调用:
publish_status("内容")- 显示内容预览和确认提示 - 用户必须明确表示要发布:用户看到预览后,必须明确说"确认发布"或类似的话
- 确认发布:只有在用户明确确认后,AI才会调用
publish_status("内容", confirm=True)
安全机制:
- 🛡️ 双重保护:首次调用只显示预览,不执行发布
- 🚫 AI限制:AI助手被明确禁止自动确认发布
- 👤 用户控制:只有用户明确表示要发布时,AI才会执行
- ⚠️ 内容验证:自动进行字数统计和内容验证
注意事项:
- 发布成功后需要等待审核才能在时间线中显示
- 内容不能为空且不能超过140字
- 系统会自动进行内容验证
- AI助手绝对不会自动执行发布操作
publish_photo
发布饭否内容(文字+图片)
功能:
- 调用饭否 API 的 /photos/upload.json 接口发布带图片的内容
- 支持文字+单张图片的组合发布(最多一张图片)
- 支持从网络 URL 自动下载图片
- 内置二次确认机制,防止误发布
- 重要:AI助手不能自动确认发布,必须等待用户明确指示
参数:
status(str, 必需): 要发布的文字内容(最多140字)photo_url(str, 必需): 图片的网络 URL 地址confirm(bool, 可选): 是否确认发布,默认为 False
返回: 首次调用时(confirm=False):
- 确认信息字典,包含以下字段:
需要确认: 是否需要用户确认内容预览: 要发布的内容预览字数统计: 当前字数和限制(如:50/140)图片链接: 图片的 URL 地址操作类型: 发布带图片的饭否⚠️ 重要提示: 发布的提醒信息URL 提示: 图片 URL 格式检查结果确认提示: 如何进行确认的说明🚫 绝对禁止: AI助手不能自动确认的提醒
确认发布时(confirm=True):
- 发布结果字典,包含以下字段:
发布 ID: 新发布消息的唯一标识符发布时间: 消息发布时间发布结果: 发布是否成功的描述信息重要提示: 关于审核的提醒信息
使用流程:
- 首次调用:
publish_photo("内容", "图片URL")- 显示内容和图片预览以及确认提示 - 用户必须明确表示要发布:用户看到预览后,必须明确说"确认发布"或类似的话
- 确认发布:只有在用户明确确认后,AI才会调用
publish_photo("内容", "图片URL", confirm=True)
安全机制:
- 🛡️ 双重保护:首次调用只显示预览,不执行发布
- 🚫 AI限制:AI助手被明确禁止自动确认发布
- 👤 用户控制:只有用户明确表示要发布时,AI才会执行
- ⚠️ 内容验证:自动进行字数统计、内容验证和图片URL检查
支持的图片格式:
- JPEG:
https://example.com/image.jpg - PNG:
https://example.com/image.png - GIF:
https://example.com/image.gif - BMP:
https://example.com/image.bmp - WebP:
https://example.com/image.webp
注意事项:
- 发布成功后需要等待审核才能在时间线中显示
- 文字内容不能为空且不能超过140字
- 图片下载后大小不能超过5MB
- 系统会自动从 URL 下载图片并上传到饭否
- 支持 HTTP 和 HTTPS 协议
- 下载超时时间为30秒
- 系统会自动检测图片的 MIME 类型
- AI助手绝对不会自动执行发布操作
delete_status
删除饭否内容
功能:
- 调用饭否 API 的 /statuses/destroy.json 接口删除指定的饭否内容
- 只能删除自己发布的内容
- 内置二次确认机制,防止误删
- 重要:AI助手不能自动确认删除,必须等待用户明确指示
参数:
status_id(str, 必需): 要删除的饭否内容的 IDconfirm(bool, 可选): 是否确认删除,默认为 False
返回: 首次调用时(confirm=False):
- 确认信息字典,包含以下字段:
需要确认: 是否需要用户确认内容预览: 要删除的内容预览(最多50字)发布时间: 内容的发布时间发布 ID: 内容的 ID⚠️ 重要警告: 删除操作的警告信息确认提示: 如何进行确认的说明🚫 绝对禁止: AI助手不能自动确认的提醒
确认删除时(confirm=True):
- 删除结果字典,包含以下字段:
删除 ID: 被删除消息的 ID删除结果: 删除是否成功的描述信息重要提示: 关于删除操作的提醒信息
使用流程:
- 首次调用:
delete_status("status_id")- 显示内容预览和确认提示 - 用户必须明确表示要删除:用户看到预览后,必须明确说"确认删除"或类似的话
- 确认删除:只有在用户明确确认后,AI才会调用
delete_status("status_id", confirm=True)
安全机制:
- 🛡️ 双重保护:首次调用只显示预览,不执行删除
- 🚫 AI限制:AI助手被明确禁止自动确认删除操作
- 👤 用户控制:只有用户明确表示要删除时,AI才会执行删除
- ⚠️ 警告提示:每次都会显示删除不可逆的警告
注意事项:
- 只能删除自己发布的饭否内容
- 删除操作不可逆,请谨慎操作
- 删除成功后,内容将立即从时间线中消失
- 需要提供准确的饭否内容 ID
- 系统会自动检查内容所有权,非本人内容无法删除
- 内容预览会自动移除HTML标签,便于阅读
- AI助手绝对不会自动执行删除操作