Use a browser automation script to open the page, scroll to a known vertical offset, and capture the visible viewport; then run that script on a recurring schedule. The example below uses Playwright and GitHub Actions. Keep the viewport, offset, page state, and capture timing consistent if you plan to compare screenshots across runs.
How a fixed-position screenshot works
A normal Playwright page screenshot records the current viewport. Set the page’s vertical scroll position before taking it to capture a chosen section of the page. By contrast, fullPage: true captures the whole scrollable page as a tall image. Playwright documents these screenshot modes and options, but the scroll-to-offset sequence is ordinary browser scripting rather than a special screenshot option. See Playwright’s screenshot guide and Page API.
Build a Playwright capture script
1. Install Playwright
For a JavaScript project, install Playwright and its Chromium browser:
npm install playwright
npx playwright install chromium
Save the following as capture.js. It accepts a URL, a vertical offset in CSS pixels, and an output filename through environment variables.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
const { chromium } = require('playwright');
(async () => {
const url = process.env.TARGET_URL;
const scrollY = Number(process.env.SCROLL_Y ?? 800);
const output = process.env.OUTPUT ?? 'screenshot.png';
if (!url) throw new Error('Set TARGET_URL to the page to capture.');
if (!Number.isFinite(scrollY) || scrollY < 0) {
throw new Error('SCROLL_Y must be a non-negative number.');
}
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage({
viewport: { width: 1440, height: 900 },
deviceScaleFactor: 1
});
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
// Prefer waiting for a task-specific element when the page has dynamic content.
await page.evaluate(y => window.scrollTo(0, y), scrollY);
await page.waitForTimeout(500);
await page.screenshot({ path: output, type: 'png' });
console.log(`Saved ${output} at scrollY=${scrollY}`);
} finally {
await browser.close();
}
})();
The example waits for the document to be parsed, scrolls, then allows a short settling period. Replace or supplement that delay with a condition tied to the page—for example, wait for a selector that appears when the content you need is ready. A fixed delay alone does not prove that a request, animation, or client-side update has finished.
2. Run it locally
TARGET_URL="https://example.com" SCROLL_Y=800 OUTPUT="page.png" node capture.js
The offset is measured in CSS pixels from the top of the document. The actual visible region is constrained by the viewport and the page’s scrollable height; near the bottom, the browser cannot scroll beyond the document’s maximum scroll position.
Schedule it with GitHub Actions
GitHub Actions supports POSIX cron schedules, with a shortest interval of five minutes. Schedules default to UTC; the documentation also supports IANA time zones. Scheduled workflows run against the latest commit on the repository’s default branch. See GitHub’s schedule-event documentation.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
1. Add the workflow
Commit the capture script and package files, then create .github/workflows/capture.yml:
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11name: Scheduled website screenshot
on:
schedule:
- cron: '17 9 * * *'
workflow_dispatch:
jobs:
capture:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx playwright install --with-deps chromium
- name: Capture page
run: node capture.js
env:
TARGET_URL: https://example.com
SCROLL_Y: '800'
OUTPUT: screenshot.png
- name: Save screenshot artifact
uses: actions/upload-artifact@v4
with:
name: scheduled-screenshot
path: screenshot.png
This example runs daily at 09:17 UTC, away from the top of the hour. Change the cron expression and, if needed, add a supported IANA timezone in the schedule configuration. The manual workflow_dispatch trigger lets you inspect a run before depending on the recurring schedule. The uploaded artifact makes the output available from the workflow run; use an appropriate persistent destination if you need long-term storage.
2. Verify the scheduled run
- Push the workflow to the repository’s default branch; that is the branch GitHub uses for scheduled workflows.
- Open the repository’s Actions tab and run the workflow manually with Run workflow.
- Inspect the job log for the saved-file message and download the artifact to confirm the captured position and dimensions.
- Check subsequent scheduled runs in the Actions tab and configure a notification or monitoring step if missed captures would matter.
Make screenshots comparable across runs
A recurring capture is useful for visual comparison only when the capture conditions are controlled. Fix the viewport width and height, device scale factor, URL, scroll offset, and timing or readiness condition. Playwright’s screenshot scale can use CSS-pixel sizing or device-pixel sizing; select deliberately if pixel dimensions matter. Its screenshot API also exposes styling and animation controls that can reduce visual drift from dynamic elements.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
- Viewport screenshot: records only the visible region after scrolling; appropriate when the target is a particular fold or section.
- Full-page screenshot: captures the complete scrollable document; image dimensions and page rendering behavior differ from a viewport capture.
- Nested scrolling: if the content sits inside a scrollable panel, scroll that element rather than only calling
window.scrollTo. An element screenshot of a scrollable element shows its currently scrolled content, as described in Playwright’s Python screenshot guide. - Moving content: advertisements, timestamps, carousels, sticky headers, consent banners, and animations can make repeated shots differ even at the same offset. Decide whether to wait for, hide, or suppress those elements, and apply the same policy on every run.
When to choose a different schedule or capture method
Choose the scheduler based on the required cadence, timezone, runtime availability, tolerance for delays, and how you will notice failures. GitHub documents a five-minute minimum interval, but does not guarantee exact execution time. It warns that high-load periods may delay scheduled workflows and that some queued jobs can be dropped. Avoid scheduling exactly at the start of an hour when timing matters. Public repositories with no activity for 60 days have scheduled workflows automatically disabled, according to the same documentation.
If the capture must finish at a hard deadline, do not treat a cron expression as an execution-time guarantee. Select infrastructure with reliability characteristics appropriate to that deadline and monitor actual completion.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Troubleshooting
The screenshot shows the top of the page
Check that the scroll call runs after navigation and before page.screenshot(). If a client-side render resets the scroll, wait for the relevant content or perform the scroll after it has rendered. For an inner scrolling region, set that element’s scrollTop instead of the document position.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
The target section is not visible at the expected offset
Page content above the target may change height between runs, or the page may have a sticky header. Use a stable viewport and page state; if the target is identified by a selector, consider scrolling that element into view rather than relying on a numeric offset. Confirm whether the intended coordinate is document-relative or within a nested container.
Images or content are missing
domcontentloaded means the document was parsed, not that every image or asynchronous update is complete. Wait for the important image or content selector, or use a task-specific readiness check. Avoid assuming that a generic network-idle state is suitable for pages with ongoing requests.
The scheduled workflow does not run on time
GitHub may delay scheduled work during high load, especially near the start of an hour. Check the Actions run history rather than assuming the cron minute is exact; schedule away from the hour and add monitoring if delays or dropped runs are consequential.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsThe workflow runs manually but not on schedule
Confirm the workflow file is on the default branch and that the repository remains eligible for scheduled workflows. In a public repository, schedules are automatically disabled after 60 days without activity. Review the event and run history in Actions.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
The workflow fails while installing or launching Chromium
Ensure the Playwright package is installed from the project lockfile and that the browser installation step uses the same Playwright version. In GitHub Actions, npx playwright install --with-deps chromium installs Chromium and its system dependencies for the runner.
Or skip the browser setup
ScreenshotNeo offers a screenshot API and MCP server. A single GET request can return a screenshot or PDF; its screenshot features include viewport controls, full-page capture, and custom CSS or JavaScript. Cookie banners, popups, and chat widgets are removed before the shot, and bot checks, blank pages, and failed loads are not billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. See ScreenshotNeo and its API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
The API call captures a URL but does not by itself reproduce the Playwright script’s fixed scroll offset. Use the browser method when the exact page scroll position is essential. Sign up for 1,000 free screenshots a month with no card.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

