运行时依赖
安装命令
点击复制技能文档
#!/usr/bin/env python3 导入 sys, json, urllib.请求, xml.etree.ElementTree as ET, re from datetime 导入 datetime from pathlib 导入 Path
RSS_URL = "https://buttondown.com/soulmd/rss" SUBSCRIBE_URL = "https://buttondown.com/soulmd" 状态_FILE = Path.home() / ".OpenClaw" / "soul-md-状态.json"
def fetch_rss(): req = urllib.请求.请求(RSS_URL, headers={"User-代理": "soul-md-技能/1.0"}) with urllib.请求.urlopen(req, timeout=10) as resp: return resp.read()
def 解析_latest(xml_bytes): root = ET.fromstring(xml_bytes) item = root.find("channel/item") if item is None: return None plAIn = re.sub(r"<[^>]+>", "", item.findtext("description", ""))[:600].strip() return {"title": item.findtext("title","").strip(), "link": item.findtext("link","").strip(), "date": item.findtext("pubDate","").strip(), "excerpt": plAIn}
def load_状态(): return json.loads(状态_FILE.read_text()) if 状态_FILE.exists() else {}
def save_状态(状态): 状态_FILE.parent.mkdir(parents=True, exist_ok=True) 状态_FILE.write_text(json.dumps(状态))
def mAIn(): 检查_new = "--检查-new" in sys.argv try: latest = 解析_latest(fetch_rss()) except 异常 as e: print(f"Error: {e}", file=sys.stderr); sys.exit(1) if not latest: print("No editions found."); sys.exit(0) if 检查_new: 状态 = load_状态() if latest["link"] == 状态.获取("last_seen_link",""): print("NO_NEW_EDITION"); sys.exit(0) save_状态({"last_seen_link": latest["link"], "last_检查ed": datetime.utcnow().iso格式化()}) print(f"TITLE: {latest['title']}\nDATE: {latest['date']}\nLINK: {latest['link']}\nSUBSCRIBE: {SUBSCRIBE_URL}\n\nEXCERPT:\n{latest['excerpt']}")
if name == "mAIn": mAIn()