#!/usr/bin/env python3
"""
通过 MCP 服务 API 完成发布 - 完整流程
"""
import requests
import time
def main():
"""完整的发布流程"""
print("="*60)
print("通过 MCP 服务 API 发布内容")
print("="*60)
base_url = "http://localhost:18060"
# 步骤 1:检查服务状态
print("\n步骤 1:检查服务状态")
print("-" * 60)
try:
response = requests.get(f"{base_url}/health", timeout=5)
if response.status_code == 200:
print("✓ 服务正常运行")
else:
print(f"✗ 服务异常: {response.status_code}")
return
except Exception as e:
print(f"✗ 无法连接到服务: {e}")
print(" 请确保服务已启动: python main.py")
return
# 步骤 2:检查主站登录状态
print("\n步骤 2:检查主站登录状态")
print("-" * 60)
response = requests.get(f"{base_url}/api/v1/login/status")
result = response.json()
print(f"主站登录状态: {'✓ 已登录' if result.get('logged_in') else '✗ 未登录'}")
if not result.get('logged_in'):
print("\n⚠ 主站未登录,请先登录主站")
print(" 运行: curl http://localhost:18060/api/v1/login/qrcode")
return
# 步骤 3:检查创作中心登录状态
print("\n步骤 3:检查创作中心登录状态")
print("-" * 60)
response = requests.get(f"{base_url}/api/v1/login/creator/status")
result = response.json()
creator_logged_in = result.get('logged_in')
print(f"创作中心登录状态: {'✓ 已登录' if creator_logged_in else '✗ 未登录'}")
# 步骤 4:如果创作中心未登录,初始化登录
if not creator_logged_in:
print("\n步骤 4:初始化创作中心登录")
print("-" * 60)
print("正在打开创作中心登录页面...")
print("⚠ 请在浏览器窗口中完成登录(服务运行在非无头模式)")
print("⚠ API 会等待 60 秒...")
response = requests.post(f"{base_url}/api/v1/login/creator/init", timeout=90)
result = response.json()
print(f"\n结果: {result.get('message')}")
if not result.get('logged_in'):
print("\n✗ 创作中心登录失败")
print(" 请手动在浏览器窗口中完成登录,然后重新运行此脚本")
return
print("✓ 创作中心登录成功!")
# 步骤 5:准备发布内容
print("\n步骤 5:准备发布内容")
print("-" * 60)
publish_data = {
"title": "我家的小猫咪太可爱了!🐱",
"content": """今天给我家的小橘猫拍了几张照片,真的太萌了!
看它这个小眼神,是不是超级可爱?每天回家看到它就觉得一天的疲惫都消失了。
养猫的快乐,只有养过的人才懂~""",
"images": [
# 这里需要实际的图片路径
# 例如: "/Users/xxx/Pictures/cat.jpg"
],
"tags": ["宠物", "猫咪", "萌宠", "橘猫"]
}
print(f"标题: {publish_data['title']}")
print(f"内容: {publish_data['content'][:50]}...")
print(f"标签: {', '.join(publish_data['tags'])}")
print(f"图片: {len(publish_data['images'])} 张")
if not publish_data['images']:
print("\n⚠ 警告:没有提供图片")
print(" 小红书发布图文需要至少 1 张图片")
print("\n 请修改此脚本,添加实际的图片路径:")
print(' "images": ["/Users/xxx/Pictures/cat.jpg"]')
print("\n 或者使用 MCP 工具直接调用发布功能")
return
# 步骤 6:调用发布 API
print("\n步骤 6:调用发布 API")
print("-" * 60)
print("正在发布...")
try:
response = requests.post(
f"{base_url}/api/v1/publish",
json=publish_data,
timeout=180
)
if response.status_code == 200:
result = response.json()
if result.get('success'):
print("✓ 发布成功!")
print("\n请到小红书 APP 或网页版查看发布的内容")
else:
print("✗ 发布失败")
else:
print(f"✗ API 调用失败: {response.status_code}")
print(f"错误: {response.text}")
except requests.exceptions.Timeout:
print("⚠ 请求超时")
print(" 发布操作可能仍在进行中")
except Exception as e:
print(f"✗ 错误: {e}")
print("\n" + "="*60)
if __name__ == "__main__":
main()