Use Puppeteer for the capture and a scheduler to launch your Node.js script once a day. Puppeteer’s Page.screenshot() takes the image; it does not provide a persistent daily schedule. Choose a scheduler, make its timezone explicit, and save each capture under a date-based filename so it does not overwrite the previous day.
What you need to decide first
- Schedule and timezone: Choose a local time and an IANA timezone, such as
America/New_York, or deliberately schedule in UTC. Daylight-saving transitions can affect local-clock schedules. - Capture scope: A viewport screenshot shows the currently visible browser area; a full-page screenshot captures the page beyond it.
- Readiness: Pick a navigation wait condition or a site-specific readiness check that reflects when the page is actually ready to capture.
- Runtime: The machine or hosted workflow must be available when the scheduler launches the job and must support Puppeteer’s browser and system dependencies.
- Retention: Decide where captures should be stored and how long to keep them. A local file is not a backup if the machine or workspace is later removed.
Build a daily screenshot script
Install Node.js 22.12 or newer, which Puppeteer’s current system-requirements page specifies, and install Puppeteer in a project. The requirements page lists supported Chrome for Testing platforms and architectures; check it and your operating system’s required packages before deploying, particularly on Linux: Puppeteer system requirements.
- Create a project and install Puppeteer:
npm init -y, thennpm install puppeteer. - Set the project to use ES modules by adding
"type": "module"topackage.json. - Create a
screenshotsdirectory and save the following ascapture.js. - Set
TARGET_URLand run the script once manually before scheduling it.
import puppeteer from 'puppeteer';
import { mkdir } from 'node:fs/promises';
const targetUrl = process.env.TARGET_URL;
if (!targetUrl) {
throw new Error('Set TARGET_URL to the page to capture.');
}
const outputDir = 'screenshots';
await mkdir(outputDir, { recursive: true });
// This filename uses the UTC calendar date. See below if you need local dates.
const date = new Date().toISOString().slice(0, 10);
const outputPath = `${outputDir}/${date}.png`;
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 900 });
await page.goto(targetUrl, { waitUntil: 'networkidle2' });
await page.screenshot({ path: outputPath, fullPage: true, type: 'png' });
console.log(`Saved ${outputPath}`);
} finally {
await browser.close();
}
Run it once in a terminal with the target set, for example: TARGET_URL=https://example.com node capture.js. On Windows PowerShell, set it for that session with $env:TARGET_URL="https://example.com", then run node capture.js. The script creates the output directory, launches a browser, captures the page, and closes the browser even if capture fails. Puppeteer documents this capture flow in its Screenshots guide; its Page.screenshot() API reference describes screenshot options.
Choose a stable capture date and path
The example’s ISO date comes from UTC, so it labels a capture by the UTC date, which can differ from the date where the job runs. If filenames must follow a local calendar day, format the date in the same IANA timezone as the schedule. Also use a persistent output location: a hosted runner’s temporary filesystem may not preserve files between runs. Upload the result to durable storage or otherwise retain it if you need a continuing archive.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- 20PCS Premium CRV Bits: Our mini screwdriver set includes 20 high-hardness, rust-resistant CRV bits, covering 5 common bit types and featuring a variety of sizes. This versatile set is an essential household tool for daily maintenance, DIY projects, and electronics repair
- Strong Magnetic Design: The handle’s internal magnetic design holds bits firmly in place, while the magnetic bits make it easy to pick up and hold small screws. Say goodbye to the hassle of screws falling into crevices or tight corners—work faster and more efficiently
- Non-Slip Handle with 360° Rotating Cap: The ergonomic handle provides a secure, sweat-resistant grip to prevent slipping during precision repairs. Combined with the 360° rotating cap, it allows for smooth one-handed operation, great for delicate tasks
- Practical & Complete Accessories: The magnetic driver bit set also includes a pry bar, triangle pry tool, and SIM card eject pin. This complete set of accessories makes it easy to pry open cases, lift screens, and remove SIM cards
- Compact & Wide Application: Comes in a travel-friendly case, no more lost bits! This portable repair tool kit is ideal for repairing phones, laptops, PCs, game consoles, and other electronics. Also suitable for eyeglasses, jewelry, and everyday household items
Choose image dimensions and page scope
The example fixes the viewport at 1440 by 900 CSS pixels so the browser layout starts from a consistent size. Change those dimensions to match the use case; consistency matters when comparing captures. With fullPage: true, Puppeteer captures the whole page. Set it to false for a viewport-sized image. The documented default for fullPage is false, and PNG is the default image type; the example sets both explicitly. Puppeteer’s screenshot options also support clip for capturing a defined region and path for choosing the output filename.
Wait for the page you actually want
waitUntil: 'networkidle2' is one navigation wait condition shown in Puppeteer’s guide, not a guarantee that every page is visually settled. Pages that poll continuously, load images lazily, animate, or update content after navigation may need a different condition or an explicit wait for a known selector. For example, after page.goto(), use await page.waitForSelector('.report-ready') if the target site exposes a reliable element that appears when the relevant content is ready. Use a selector appropriate to the page; do not assume that navigation completion and visual readiness are identical.
Schedule it to run once a day
For a script that runs, captures, and exits, an operating-system scheduler or hosted scheduled workflow is usually a more natural fit than keeping a Node process alive just to wait. The right choice depends on persistence, timezone behavior, logs, retries, and whether the environment can run Puppeteer.
Rank #2
- 【MINI PC With Built-In Fan】The HIGOLE MINI PC equipped with a built-in fan【UPGRADE 1】, ensures optimal temperature control, enhancing both performance and stability. Users can enjoy a seamless experience without experiencing any lag or system crashes caused by overheating. Additionally, the integrated fan effectively reduces noise levels, prolongs the lifespan of the MINI PC, and provides a worry-free and comfortable user experience.
- 【MINI PC FULL-FEATURED TYPE-C】The HIGOLE MINI PC, featuring a convenient and versatile Full Functionality TYPE-C port【UPGRADE 2】, allows for effortless connectivity and compatibility with a wide range of devices. Users can easily transfer data, connect peripherals, and even charge their devices, including power banks. This versatility enhances convenience and flexibility in usage, resulting in increased productivity and seamless integration within the digital ecosystem.
- 【MINI PC WITH Touch Screen&2500 mAh battery】The HIGOLE MINI PC can be used for touch screen business office, leisure and entertainment,easy use . HIGOLE MINI PC can also be used to remotely control other micro PCs or smart home systems using remote desktop protocol.This mini computer is equipped with a 2500mAh battery, allowing you to use it anytime and anywhere for extended work and video watching.
- 【MINI Computer Win 11】Micro PC with latest Win 11 Pro and a valid license, which is support to remote desktop access, supports Win 11 pro upgrade. supports Win 10, Support IOT building,Ideal for developers and programmers running dual custom OS. 【Extra large memory 】8GB DDR4,128GB Upgrade 256GB Emmc【UPGRADE 3】.
- 【Celeron N5095 CPU】This small mini PC, features the Faster Celeron N5095 processor【UPGRADE 4】,J4125 Upgrade N5095 with CPU/GPU throttling. It's a competent quad-core that does a decent job for lightweight tasks, with a base operating frequency of 2.0 GHz/s to 2.9GHz (4MB cache). Drawing under 10 watts of power.Its metal body helps to expel heat quickly and the device is completely silent, improving efficiency.With the latest wireless connectivity.The tiny PC with WiFi 5.0,dual-band WiFi2.4G/5.0G,it provides speeds up to 450Mbps/2.4GHz and 1000Mbps/5GHz. Gigabit Ethernet supports 10/100/1000Mbps,Bluetooth 4.2 fast data transfer speed up to 2Mbps.
| Option | Does a process need to stay running? | Persistence and timezone considerations | Use it when |
|---|---|---|---|
| System cron | No Node scheduler process; the operating system starts the command. | Runs on the configured machine. Configure its timezone deliberately and ensure the machine is on. The Node Schedule project points to cron for persistence. | You control a server or other machine that stays available and want the job launched locally. |
| GitHub Actions scheduled workflow | No continuously running Node process on your own machine. | GitHub documents schedules as UTC by default and supports an optional IANA timezone. Its schedule documentation describes behavior when a scheduled time falls into a skipped spring-forward hour. | Your script and workflow fit a GitHub repository and you want a hosted scheduled run. |
| Node Schedule | Yes. The Node process must remain active for scheduled callbacks to run. | Scheduling depends on that process and environment staying available; verify timezone and daylight-saving behavior in the library’s current documentation. | Your application already runs continuously and you want the schedule inside that process. |
This comparison describes documented operating models, not a test of scheduler punctuality. A schedule specifies when a job should be launched; do not assume exact-second execution unless the platform documents that guarantee. For GitHub Actions’ current schedule details, including its minimum interval and timezone behavior, see GitHub Actions schedule events. Node Schedule explains its in-process model and points to cron when persistence is required: Node Schedule.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteExample: GitHub Actions cron schedule
Add a workflow such as .github/workflows/daily-screenshot.yml. This example runs daily at 09:00 in UTC; change the cron expression and timezone together if you mean a local time. GitHub’s workflow syntax accepts a timezone alongside the schedule.
name: Daily website screenshot
on:
schedule:
- cron: '0 9 * * *'
timezone: 'Etc/UTC'
workflow_dispatch:
jobs:
capture:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.12'
- run: npm ci
- name: Capture page
run: node capture.js
env:
TARGET_URL: ${{ secrets.TARGET_URL }}
- name: Save screenshot as workflow artifact
uses: actions/upload-artifact@v4
with:
name: website-screenshot-${{ github.run_id }}
path: screenshots/*.png
Commit the lockfile so npm ci can install the dependencies deterministically. Store a private target URL in a repository secret rather than exposing it in workflow text. This workflow uploads each run’s file as an artifact; artifact retention and storage are separate from the capture schedule, so check GitHub’s current artifact policies or upload the image to storage you control if you need a long-term archive. Scheduled workflows also depend on the repository and runner being available, and should be monitored for failed runs. Consult GitHub’s current syntax and timezone documentation before relying on a particular transition behavior.
Rank #3
- 【One Compact PC, Multiple Applications】Pre-installed with Windows 11 Pro and Linux-ready for flexible system deployment. Built-in Wi-Fi 5, Bluetooth 5.0, and a G-Sensor support convenient wireless connectivity and automatic screen rotation. The responsive touchscreen is ideal for remote meetings, smart-home control, self-service kiosks, industrial HMI, and inventory management. Designed for everyday and light-duty applications, it is best suited for essential tasks rather than heavy multitasking, gaming, or video rendering
- 【Portable Power for Work Anywhere】Stay productive without being tied to a power outlet. The built-in 2500mAh rechargeable battery provides up to 4.5 hours of runtime, while the lightweight 0.32 kg design makes it easy to carry wherever you go. From home and office use to field debugging, equipment inspections, and on-site tasks, enjoy the freedom to work wherever you need
- 【Touchscreen Mini PC, No Monitor Required】Enjoy a complete computing experience without the need for a separate display. This compact 5.5-inch IPS touchscreen mini PC features a 720×1280 resolution, Intel Celeron processor, 16GB RAM 256GB eMMC storage, and Windows 11 Pro. Ideal for everyday tasks like web browsing, document editing, and media playback, while also fitting seamlessly into digital signage, kiosks, POS systems, and light-duty industrial applications
- 【Dual-Display Support & Extensive Connectivity】Expand your workspace with dual-display output through HDMI up to 4K@30Hz and Type-C video output. A full selection of ports—including Gigabit Ethernet, four USB 3.0 ports, a TF card slot, and a PD charging port—makes it easy to connect keyboards, external storage, network devices, and other peripherals. Whether you're creating a compact home workstation, setting up a POS system, or integrating it into an industrial control environment, this mini PC provides the connectivity you need
- 【Intel Celeron N5095 Processor with Quiet Cooling】Powered by a quad-core Intel Celeron N5095 processor with speeds up to 2.9GHz and 4MB cache, this compact mini PC delivers smooth and reliable performance for everyday computing. The built-in quiet cooling fan helps dissipate heat efficiently during extended use while keeping operating noise to a minimum
Example: system cron
On a Unix-like host, a five-field cron entry such as 0 9 * * * means minute 0 of hour 9 each day in the cron environment’s configured timezone. Open the crontab with crontab -e and add a command using the actual project path and Node executable path on your machine:
0 9 * * * cd /srv/daily-shot && TARGET_URL='https://example.com' /usr/bin/node capture.js >> /var/log/daily-shot.log 2>&1
Replace /srv/daily-shot and /usr/bin/node with real paths; scheduled jobs may not inherit the interactive shell’s PATH or environment. Confirm the host’s timezone and cron implementation, and keep the machine powered on at the scheduled time. If a run is missed during downtime, a basic cron schedule does not by itself guarantee a catch-up run.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, 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 minuteTimezone, daylight saving, and daily filenames
“The same time every day” needs a timezone definition. A UTC schedule stays at the same UTC hour, while its local clock time may shift when daylight saving begins or ends. A local-time schedule aims to keep the wall-clock hour but can encounter a skipped or repeated time at a transition. GitHub Actions documents what happens when its scheduled time falls in a skipped spring-forward hour; other schedulers can behave differently. Verify the selected scheduler’s current documentation and choose whether the priority is a fixed UTC instant or a local-clock time.
Rank #4
- Parameters: This is a new type of mini computer chassis screen. There is no need to install AIDA64, and only a USB cable is required to detect whether the running parameters are normal. Display area: 49X74 (mm), overall size: 55X85 (mm), resolution: 320X480, thickness: 7~ 8 (mm), viewing angle: IPS full viewing angle, interface: USB-TYPEC, shell material: metal
- FAQ: Unable to download URL and unzip, use tutorial, what system is supported? Please don't worry, we will upload video tutorial in the link, which will be reflected in the video. At the same time, we will have product instructions. Finally, our products are compatible and easy to operate
- Features: Support horizontal and vertical screen switching, 0°and 180°two options, energy saving and environmental protection, automatic screen off after shutdown, eye comfort, stepless brightness adjustment
- Function: Displays various data of CPU, memory, hard disk and other hardware, so that users can grasp the computer operation status in time. Through special customized chips, it supports dynamic wallpaper and other forms, can add visual effects, and only takes up a small amount of CPU resources. Compared with the traditional HDMI secondary screen, it only needs a USB data cable to connect, avoiding various problems such as cable clutter
- Packing list: 1 x 3.5-inch screen; 1 x USB data cable; 1 x adjustable bracket; 1 x product manual; 1x Acrylic double-sided tape;1 x packaging box. If you encounter the above problems or other problems about the product, the information we provide cannot solve them for you. Please contact us. We are online 24 hours a day and will serve you as soon as possible.
Keep the schedule timezone and filename date convention aligned. If the schedule runs at 00:30 UTC but files use a western local date, the UTC filename can appear to be a day ahead. For a reliable archive, include the intended timezone in logs or filenames and avoid deriving a local date from a UTC timestamp by accident.
Troubleshoot missed or incorrect captures
- No capture at the expected time: Check that the host or workflow was available, that the schedule is enabled, and that the scheduler is configured for the intended timezone. Review the scheduler’s run history or the redirected cron log.
- “TARGET_URL” is missing: Set the environment variable in the scheduler configuration. Interactive shell variables do not automatically carry into cron or a hosted workflow.
- Browser launch fails: Confirm the Node version meets Puppeteer’s current requirements, that the deployment’s operating system and architecture are supported, and that required system packages are installed.
- Navigation times out or never reaches network idle: A site may keep network requests open or load indefinitely. Pick a navigation condition suited to the page, then wait for a site-specific readiness selector where possible. Avoid treating a longer timeout as proof that the content is ready.
- Screenshot is blank or missing late content: Check whether the page needs authentication, a selector wait, additional time for client-side updates, or scrolling to trigger lazy-loaded images. Make the readiness logic specific to the target site.
- Captures overwrite one another: Ensure the filename includes the intended date or timestamp and that the timezone convention is deliberate.
- Files disappear between runs: The workflow or container may use temporary storage. Upload the output to a persistent artifact or storage destination.
- Images differ unexpectedly: Keep viewport dimensions, capture scope, browser/runtime, and readiness checks consistent. Dynamic content, rotating promotions, timestamps, fonts, and animation can still make daily images vary.
Performance, reliability, and cost considerations
Launching a browser for every daily capture keeps each run independent, but it incurs browser startup and page-load work each time. Use one page and one browser per invocation for a single URL, and close the browser in a finally block as shown. If you expand to multiple URLs, reuse a browser within that run rather than launching one for every image, while still closing it when the job finishes.
Scheduler reliability is not the same as capture reliability. Track the scheduled run’s start, completion, output path, and errors; configure retries or alerts if missing a day matters. Keep dependencies pinned through a lockfile, validate the script after updates to Puppeteer or the runtime, and confirm that browser binaries and OS libraries are available in the deployment environment. The capture itself uses compute and storage in your chosen environment; costs depend on that environment and retention policy rather than on Puppeteer providing a scheduling service.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Best Value
- 【12th Gen Alder Lake-N95 & Fan design】The HIGOLEPC Mini PC equipped with the powerful 12th Gen Alder Lake-N95 processor. Featuring 4 cores and 4 threads, with speeds of up to 3.4GHz, this micro PC delivers a 30% performance boost compared to its predecessors, the celeron N5095 and N5105. The design of the cooling fan helps this computer dissipate heat and maintain a stable state..With a low TDP of just 8W, it achieves robust performance at an exceptionally low power consumption.
- 【High-Speed Performance & Expandable Storage&4G data transmission】Enjoy faster computing with 16GB of DDR4 RAM and 256GB of storage,Ideal for home working, business offices, IOT, school education, and billboards. Expand storage effortlessly with a Micro SD card slot (up to 512GB).Supporting the use of 4G for data transfer. Please note, this 4G data transmission functionality does not support calling features.
- 【Triple Video Display & Full-featured TYPE-C】Maximize your visual experience with Triple Video display supported by the ultra HD graphics card (4K@60Hz). One HDMI ports and a full-function USB-C allow simultaneous dual display, enhancing your work efficiency. The USB-C PD 3.1 port supports 4K display, data transfer, and power input, reducing cord clutter and optimizing your workspace.
- 【Wi-Fi 5 & Bluetooth 5.0 & Dual 2.5G Ethernet network】 HIGOLEPC mini PC incorporates advanced Wi-Fi 5 and Bluetooth 5.0 technologies, ensuring reliable dual-band connectivity (2.4GHz and 5GHz). With dual 2.5G ethernet network,You can manually install firmware for this mini PC to use it as a NAS,software router,home server or network firewall with very powerful features.Enjoy the convenience of a portable desktop PC anytime, anywhere, with swift connectivity and adaptable charging options.
- 【Pre-installed OS System & Large capacity battery 】 This mini PC comes with the latest Win11 Pro system and also supports other types of systems such as Debian, Ubuntu, and Linux. All these systems have undergone stable testing to make your mini PC more convenient to use. This computer is equipped with a high-capacity battery of 5000mAh, which can help address the issue of low power. Its battery life exceeds 3 hours, so you can use it to watch videos, listen to music, or work.
Or skip the browser setup
If you want a scheduled workflow without installing and maintaining Puppeteer and its browser runtime, ScreenshotNeo provides a website screenshot API and MCP server. A scheduled job can call its API once per run; use your scheduler for timing and store the returned image as you would any other output. See the ScreenshotNeo documentation for request options. This example writes the response body to a WebP file:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before the shot; each of these steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Visit ScreenshotNeo or sign up free for 1,000 screenshots a month, no card required.
FAQ
Will Puppeteer itself run a screenshot every day?
No. Puppeteer captures when your script calls it. Use a persistent scheduler to start that script on the daily schedule.
Does networkidle2 guarantee the page is ready?
No. It is a navigation wait condition, and some pages continue loading or update visually afterward. Use a readiness condition appropriate to the target site.
Recommended Free Tools
Can the schedule run at exactly the same second each day?
Only rely on that precision if the scheduler explicitly guarantees it. A daily cron expression or hosted schedule identifies a launch time, but the actual start may not be exact to the second.
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.

