typecho-blog-publish@1.3.0
VERIFIED· install onlyPublisher claims: "通过 XML-RPC 自动发布文章到 Typecho 博客。支持文件读取、草稿模式、标签管理。" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-07 and scored it 85/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- 脚本自动读取 `.env` 文件中的配置Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""加载 .env 文件"""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.在 `.env` 文件中配置以下环境变量:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""加载 .env 文件"""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- 密码存储在 `.env` 文件中,权限为 600(仅所有者可读写)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""加载 .env 文件"""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls."""加载 .env 文件(支持多级查找)"""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'), # 上一级目录Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""加载 .env 文件"""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " 请确保主 .env 文件包含 BLOG_PASSWORD"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '.env'), # 当前目录Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 检查 .env 文件Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo "✅ .env 文件存在"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- 账号密码存储在 .env 文件中,权限为 600 (仅所有者可读写)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.| `BLOG_URL` | 博客地址 | `http://yuanblog.tk:9980` |Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo "⚠️ 警告:未找到 .env 文件"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""加载 .env 文件(支持多级查找)"""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- 脚本自动读取 .env 文件中的配置Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.expanduser('~/.openclaw/workspace/.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.os.path.join(os.path.dirname(__file__), '..', '.env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.ENV_FILE="$BASE_DIR/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.print(" http://yuanblog.tk:9980/")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.print(f"🔗 链接:http://yuanblog.tk:9980/archives/{post_id}.html")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.print(" http://yuanblog.tk:9980/")Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.BLOG_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.webbrowser.open('http://yuanblog.tk:9980/admin/write.php')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.http://yuanblog.tk:9980/adminFix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.XMLRPC_URL = config.get('BLOG_URL', 'http://yuanblog.tk:9980') + config.get('BLOG_XMLRPC', '/index.php/action/xmlrpc')Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.