roadshow-capture-skill
ReviewAudited by ClawScan on May 13, 2026.
Overview
The skill mostly matches its PDF-capture purpose, but it automatically accepts roadshow terms and uses loose URL checks that could submit your email to an unintended site.
Install only if you are authorized to access and capture these roadshows. Verify the exact website hostname before running it, expect the skill to submit your email and click Agree/I Agree controls, and set a private output directory instead of leaving sensitive PDFs and screenshots in /tmp.
Findings (6)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
A crafted or mistaken link whose path or query merely contains an allowed domain string could be treated as supported and loaded by the browser automation.
The platform router checks for allowed domains by substring instead of parsing and enforcing the URL hostname, then passes the original URL to automation scripts.
if "netroadshow.com" in url: ... elif "dealroadshow.com" in url or "dealroadshow.finsight.com" in url: ... cmd = [sys.executable, str(script), "--url", args.url]
Require exact hostname allowlisting with urllib.parse or equivalent, reject look-alike/crafted URLs, and confirm the host before submitting the user's email.
The agent may accept legal or access terms on the user's behalf before the user has reviewed or explicitly approved them.
The documented workflow instructs automatic clicking through disclaimer/agree and session-start choices, including an explicit instruction not to ask the user for the start choice.
pp.evaluate('document.querySelector(".btn-agree").click()') ... 永远选 Start from beginning(硬性约束,不用问用户)Add an explicit user confirmation step before clicking Agree/I Agree or otherwise entering a legally gated roadshow session.
Your work email will be sent to the provider and may appear in local logs or terminal history if supplied as a command-line argument.
The script uses the user's email as the access identity for the roadshow service and prints it to console output.
email = args.email or os.environ.get("NRS_EMAIL") ... email_input.fill(args.email) ... print(f"2. Filling email: {args.email}")Use this only with an email authorized for the roadshow, prefer environment/config storage over command-line arguments, and avoid sharing logs that include the email.
Roadshow slides may be confidential, and temporary local PNG/PDF files can remain after the run.
The skill persists captured slide images and PDFs locally, with a default output directory under /tmp.
parser.add_argument("--output", "-o", default="/tmp/roadshow_output", help="输出目录") ... pp.screenshot(path=path, full_page=False) ... images_to_pdf(screenshots, str(pdf_path))Choose a private output directory, review local file permissions, and delete temporary screenshots/PDFs when no longer needed.
The remote site may see the automation as a Safari browser rather than the actual Playwright Chromium environment.
The skill intentionally changes the browser user-agent to improve server trust; this is disclosed and tied to browser automation compatibility, but it is still a trust/identity tradeoff.
User-Agent 设置为 macOS Safari 以提高服务端信任度
Use only where this automation is permitted by the roadshow provider's terms and your organization.
Installation may resolve to whatever Playwright/Pillow versions are current in the package index at install time.
The skill depends on external pip packages for its core function, and the artifact does not pin exact package versions.
install:
- kind: pip
packages: [playwright, pillow]Install in a controlled environment and consider pinning/locking dependency versions for reproducible use.
