Full Page Screenshot

VerifiedCaution

Generate a full-page screenshot of a web page as a PNG, capturing all content including scrollable areas. Directly connects to Chrome DevTools protocol without external dependencies.

Sby Skills Guide Bot
DevelopmentIntermediate
7/22/2026
Claude Code
#screenshot#chrome-devtools#browser-automation#png-export#web-capture

Recommended for

Automated summary

Captures a full web page as a single long PNG image by driving Chrome directly through the DevTools protocol, with no external dependencies.

Strengths

  • Handles SPA internal scroll containers by force-expanding their CSS height constraints
  • Waits for DOM stabilization and triggers lazy-loaded images before capturing
  • Splits and stitches pages longer than 16000 px automatically using Pillow
  • Supports targeting an already-open tab (useful for authenticated pages) or a direct URL

Limitations

  • Requires Node.js 22+ and Chrome with remote debugging enabled manually
  • The --url mode opens a background tab, which can fail on SSO or interactive login systems
  • Very long page stitching depends on Python 3 and Pillow; otherwise fragment files are kept separately
When to use it

Use it when you need one complete image of a web page, article, or report including everything below the fold.

When not to use it

Avoid it for pages behind complex interactive authentication, or when Python/Pillow is unavailable and a single stitched image is mandatory.

Security analysis

Caution
Quality score80/100

The skill is a legitimate browser-automation utility: it drives the local Chrome DevTools protocol to resize viewports, inject CSS overrides, scroll, and capture PNGs. Nothing in the instructions exfiltrates data, deletes files, or disables safety. However, it requires enabling remote debugging (exposing full browser control including logged-in sessions), uses an `/eval` proxy fallback, and writes screenshots of possibly sensitive authenticated pages to disk. That warrants 'caution' rather than 'safe', and the unreviewed bundled script prevents a stronger verdict.

Findings
  • •Connects directly to Chrome's DevTools WebSocket, giving the skill full control over the browser (DOM, tabs, and implicitly any authenticated session); it instructs users to enable 'Allow remote debugging', which is a persistent weakening of the browser's security posture.
  • •Falls back to a web-access CDP Proxy `/eval` endpoint, which executes arbitrary JavaScript in the page context — powerful and hard to bound.
  • •Can screenshot any open authenticated tab (targetId mode) or navigate to arbitrary URLs, writing potentially sensitive page contents into a plaintext PNG in /tmp.
  • •References `${CLAUDE_SKILL_DIR}/scripts/full-page-screenshot.mjs` but the script body is not included in SKILL.md, so actual behavior (network calls, file writes, eval usage) cannot be verified from this file alone.
  • •No destructive commands, obfuscation, or outbound data transfer are described; the risk stems from legitimate but broad browser-automation privileges.
How this analysis is made

Examples

Screenshot an open tab
Take a full-page screenshot of the Jira ticket I have open in Chrome and save it to /tmp/ticket.png
Capture a URL
Capture a full long screenshot of https://example.com/report at width 1440 and save it to /tmp/report.png
High-resolution article capture
Screenshot the full article at https://blog.example.com/post with dpr 2 for retina quality

name: full-page-screenshot description: | 在浏览器中对网页做完整长截图(full-page screenshot),生成一张包含页面所有内容的 PNG 长图。 触发场景:用户要求对网页截长图、全页截图、完整截图、long screenshot、full page capture, 或要求把网页/文章/报告截成一张完整的图片。支持用户已打开的 tab 或指定 URL。 自动处理 SPA 内部滚动容器、懒加载图片、超长页面分片拼接。 无外部依赖,直连 Chrome DevTools 协议完成所有操作。

Full Page Screenshot

对浏览器中的网页生成一张完整的长截图 PNG,覆盖页面全部内容(包括需要滚动才能看到的部分)。直连 Chrome DevTools WebSocket,无需 CDP Proxy 或其他中间层。

前置条件

只需 Node.js 22+ 和 Chrome 开启远程调试:

node "${CLAUDE_SKILL_DIR}/scripts/full-page-screenshot.mjs" --check

如果 chrome 检查失败,引导用户:打开 chrome://inspect/#remote-debugging,勾选 "Allow remote debugging for this browser instance"。

工作流程

用户描述了已打开的 tab(推荐,尤其是需要登录的页面)

先列出所有 tab,匹配用户描述找到 targetId:

node "${CLAUDE_SKILL_DIR}/scripts/full-page-screenshot.mjs" --list

然后截图该 tab:

node "${CLAUDE_SKILL_DIR}/scripts/full-page-screenshot.mjs" <targetId> <output> [--width N] [--dpr N]

用户给了 URL

一条命令完成全部流程(建 tab → 等加载 → 截图 → 关 tab):

node "${CLAUDE_SKILL_DIR}/scripts/full-page-screenshot.mjs" --url "<URL>" <output> [--width N] [--dpr N] [--wait N]

注意:--url 模式创建后台 tab。对于需要登录的内部系统(如 SAP、企业 SSO),后台 tab 可能无法完成认证。此时应引导用户先在 Chrome 中打开页面,然后使用 targetId 模式截图。

参数说明

| 参数 | 说明 | 默认值 | |------|------|--------| | output | 输出文件路径 | /tmp/screenshot.png | | --width | 视口宽度(CSS 像素)。文章页 1200,宽表格/面板 1440-1920 | 1200 | | --dpr | 设备像素比。2 可获 Retina 清晰度,但体积翻 4 倍 | 1 | | --wait | 页面加载超时(毫秒),仅 --url 模式 | 15000 |

验证输出

sips -g pixelWidth -g pixelHeight <output>

裁剪局部验证(需要 Pillow):

from PIL import Image
img = Image.open("<output>")
w, h = img.size
img.crop((0, 0, w, 1500)).save("/tmp/check_top.png")
img.crop((0, h-1500, w, h)).save("/tmp/check_bottom.png")

核心能力

  • SPA 内部滚动容器:自动检测 overflow-y: auto/scroll 的容器,用 !important 覆盖 CSS 高度约束(含 Tailwind h-[calc(...)] 等),展开全部内容后截图
  • DOM 稳定等待:readyState=complete 后继续监测 DOM 元素数量变化,直到 SPA 数据渲染完成
  • 懒加载处理:逐步滚动触发 IntersectionObserver,等待所有 img.complete
  • 超长页面分片:>16000px 的页面自动分片截取(每片 8000px),用 Python PIL 拼接
  • Proxy 兼容:当 web-access CDP Proxy 运行时,自动检测并通过 proxy API 完成截图(滚动容器分片拼接)

注意事项

  • 超长页面(> 20000px)在高 DPR 下可能导致 Chrome 内存问题。遇到此情况降低 --dpr 到 1 或减小 --width。
  • --url 模式会自动创建后台 tab 并在截图后关闭,不影响用户已有 tab。
  • 截图期间会临时改变页面视口尺寸和滚动容器样式,完成后自动恢复。
  • 脚本通过读取 DevToolsActivePort 文件发现 Chrome 调试端口,直连 WebSocket,无需任何代理或中间服务。
  • 分片拼接需要 Python 3 + Pillow(macOS 通常已安装)。无 Pillow 时会保留分片文件。
  • 当 web-access 的 CDP Proxy 在运行时,脚本先尝试直连,超时后降级到 proxy API(通过 /eval 和 /screenshot 端点操作)。

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/full-page-screenshot-mrwakgnc' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/full-page-screenshot-mrwakgnc/download' --output '.skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md.part' && mv '.skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md.part' '.skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md' && test -s '.skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/full-page-screenshot' && cp -R '.skill-downloads/full-page-screenshot-mrwakgnc' '.claude/skills/full-page-screenshot'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/full-page-screenshot-mrwakgnc'

openskills read 'full-page-screenshot-mrwakgnc'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/full-page-screenshot-mrwakgnc/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills