Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk8 min

How to Schedule Daily Website Screenshots and Keep a PDF Archive

Build a daily website archive with Playwright, GitHub Actions, dated screenshots and PDFs, plus practical checks for missed runs and storage.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a browser automation script to capture the page, a scheduler to run it daily, and dated storage with a separate backup to keep the record. A practical self-managed setup is Playwright plus GitHub Actions: Playwright renders screenshots and PDFs; the workflow starts the script. Keep the target, viewport, browser and capture scope consistent so changes between records are easier to interpret.

Choose what each daily record should capture

Decide whether you need the visible viewport, the entire scrollable page, or a particular element. Playwright supports viewport and full-page screenshots through its page screenshot API; its CLI also supports targeting an element. The choice affects what the archive can show: a viewport is a snapshot of what a visitor sees at that scroll position, while a full-page image includes the page’s scrollable content.

As an Amazon Associate I earn from qualifying purchases.

  • Record the target URL or URLs.
  • Set a fixed viewport width and height, browser engine and, if relevant, device scale factor.
  • Choose viewport, full-page or element capture.
  • Decide whether the PDF should reflect print styling or screen styling.
  • Wait for a meaningful page-specific readiness condition when content loads asynchronously.

A fixed delay can be too short on a slow day and unnecessarily long on a fast one. Prefer a condition that indicates the content you care about is ready, with a timeout so a stalled page does not hang indefinitely. The correct selector depends on the site.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build a Playwright capture script

Install Playwright in a Node.js project and install its Chromium browser. Save the following as capture.mjs; it writes a full-page PNG and a PDF for the configured URL under a date-based directory. Replace the URL and readiness selector with values appropriate to the site. The script uses UTC for its archive date and timestamp.

#1 Best Overall
Canon Canoscan Lide 300 Scanner (PDF, AUTOSCAN, Copy, Send)
  • Scanner type: Document
  • Connectivity technology: USB
  • With Auto Scan Mode, the scanner automatically detects what you're scanning
  • Digitize documents and images
import { chromium } from 'playwright';
import { mkdir } from 'node:fs/promises';

const url = process.env.TARGET_URL ?? 'https://example.com';
const readySelector = process.env.READY_SELECTOR;
const viewport = { width: 1440, height: 900 };
const now = new Date();
const date = now.toISOString().slice(0, 10);
const timestamp = now.toISOString().replaceAll(':', '-');
const outputDir = `archive/${date.slice(0, 4)}/${date.slice(5, 7)}/${date.slice(8, 10)}`;

await mkdir(outputDir, { recursive: true });
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport });

try {
  const response = await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
  if (readySelector) {
    await page.locator(readySelector).waitFor({ state: 'visible', timeout: 30000 });
  }

  const stem = `${outputDir}/site-${timestamp}-1440x900`;
  await page.screenshot({ path: `${stem}.png`, fullPage: true });
  await page.pdf({ path: `${stem}.pdf`, format: 'A4', printBackground: true });

  console.log(JSON.stringify({
    requestedUrl: url,
    finalUrl: page.url(),
    status: response?.status() ?? null,
    capturedAt: now.toISOString(),
    viewport,
    screenshot: `${stem}.png`,
    pdf: `${stem}.pdf`
  }));
} finally {
  await browser.close();
}

From the project directory, install the dependency and browser, then run the script:

npm install playwright
npx playwright install chromium
TARGET_URL='https://example.com' READY_SELECTOR='main' node capture.mjs

Use a selector that actually exists on the target page, or omit READY_SELECTOR if navigation completion is sufficient. The example treats a missing HTTP response (for example, a navigation that does not produce one) as unknown status rather than as a successful status. For a production archive, consider making non-success HTTP status codes or missing expected content a failed run, so they are visible in the scheduler’s logs.

Capture the visible viewport or a specific element

For only the current viewport, change the screenshot call to await page.screenshot({ path: `${stem}.png` });. For a single element, use a locator screenshot, for example await page.locator('main').screenshot({ path: `${stem}.png` });. Select a stable site-specific selector; generic selectors may capture the wrong region or fail after a redesign.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose PDF rendering deliberately

page.pdf() uses print CSS media by default. That is usually appropriate for a printable document, but print styles can rearrange or omit screen content and color adjustment can change appearance. If you want the PDF to use screen media styles, call await page.emulateMedia({ media: 'screen' }); immediately before page.pdf(). Inspect a sample PDF before relying on daily output. Keep the PNG too if visual fidelity matters: a PDF and screenshot are different renderings, not pixel-identical copies.

Rank #2
Sale
Epson Workforce ES-50 Compact & Lightweight Mobile Document Scanner | For Computers including PC and Mac Receipt and Document Scanner USB Powered
  • PORTABLE SCANNER FOR USE ON-THE-GO — The fastest and lightest mobile single-sheet-fed compact document scanner in its class¹
  • QUICK DOCUMENT SCANNING ― This Epson ultra-fast scanner scans a single page as quickly as 5.5 seconds²; Windows and Mac compatible
  • VERSATILE PAPER HANDLING ― Portable scanner scans documents up to 8.5 x 72 in; Also easily digitizes receipts and ID cards to make accounting, bookkeeping, and organizing simpler
  • INTUITIVE, HIGH-SPEED SOFTWARE — Epson ScanSmart Software³ is a smart tool allowing you to easily scan, review, and save; Stay organized easily with the help of this Epson scanner
  • EASY SETUP — USB-powered connect to your computer for quick and simple scanning; No batteries or external power supply required to operate portable document scanner; Standard Connectivity: USB 2.0

Schedule the capture once per day with GitHub Actions

GitHub Actions runs the capture script when a schedule event triggers the workflow. Add .github/workflows/daily-capture.yml to the repository’s default branch. This example schedules a run at 07:17 UTC every day and uploads each run’s archive directory as a workflow artifact.

name: Daily website archive

on:
  schedule:
    - cron: '17 7 * * *'
  workflow_dispatch:

jobs:
  capture:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm ci
      - run: npx playwright install --with-deps chromium
      - name: Capture page
        env:
          TARGET_URL: ${{ vars.TARGET_URL }}
          READY_SELECTOR: ${{ vars.READY_SELECTOR }}
        run: node capture.mjs
      - name: Upload archive files
        uses: actions/upload-artifact@v4
        with:
          name: website-archive-${{ github.run_id }}
          path: archive/
          if-no-files-found: error

Commit a lockfile so npm ci installs the dependency versions recorded by the project. Configure TARGET_URL and, optionally, READY_SELECTOR as repository variables under the repository’s Settings. Review the workflow permissions and artifact retention settings in GitHub before relying on artifacts as long-term storage.

Understand schedule timing and limits

GitHub schedule expressions use five cron fields. The example 17 7 * * * means 07:17 each day in the schedule’s applicable timezone; UTC is the default, and GitHub also documents support for an IANA timezone. Scheduled workflows run using the latest commit on the default branch. GitHub warns that scheduled runs can be delayed during high load, and queued jobs may be dropped when load is sufficiently high. Scheduling away from the top of the hour can reduce exposure to peak scheduling demand, but it does not guarantee an exact start time. Public-repository schedules are automatically disabled after 60 days without repository activity. See GitHub’s schedule event documentation before depending on this for a critical record.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep files organized and verify the archive

The script creates a predictable archive/YYYY/MM/DD/ structure and names each file with the UTC capture timestamp and viewport. This avoids overwriting the prior day’s files. For multiple pages, include a sanitized page name in each filename.

Rank #3
Sale
Brother DS-640 Compact Mobile Document Scanner, (Model: DS640)
  • FAST SPEEDS - Scans color and black and white documents a blazing speed up to 16ppm (1). Color scanning won’t slow you down as the color scan speed is the same as the black and white scan speed.
  • ULTRA COMPACT – At less than 1 foot in length and only about 1. 5lbs in weight you can fit this device virtually anywhere (a bag, a purse, even a pocket).
  • READY WHENEVER YOU ARE – The DS-640 mobile scanner is powered via an included micro USB 3. 0 cable allowing you to use it even where there is no outlet available. Plug it into you PC or laptop and you are ready to scan.
  • WORKS YOUR WAY – Use the Brother free iPrint&Scan desktop app for scanning to multiple “Scan-to” destinations like PC, Network, cloud services, Email and OCR. (2) Supports Windows, Mac and Linux and TWAIN/WIA for PC/ICA for Mac/SANE drivers. (3)
  • OPTIMIZE IMAGES AND TEXT – Automatic color detection/adjustment, image rotation (PC only), bleed through prevention/background removal, text enhancement, color drop to enhance scans. Software suite includes document management and OCR software. (4)

Store a manifest or run log with the requested URL, final URL, capture time, browser/version, viewport, HTTP outcome and output filenames. It helps distinguish a real page change from a redirect, incomplete load or failed capture. Review the Actions run history for missed days and failures; a successful workflow status alone does not prove the intended page content appeared in the file.

  • Use artifacts for convenient retrieval during their configured retention period, not as an assumed permanent archive.
  • For a small history, committing files to a repository makes changes reviewable, but frequent large images and PDFs can make the repository grow quickly.
  • Keep a second copy separately from the account or machine that runs the job if the records matter, and periodically open files from that copy.

A PDF and screenshot preserve rendered output, not the complete website or its interactive behavior. If you need broader offline web preservation, ArchiveBox documents formats including HTML, PDF, PNG and WARC. Each format preserves different aspects; none guarantees every interactive feature can later be recreated. Its cited manual is for release 0.4.17, so consult the project’s current documentation rather than treating older installation instructions as current: ArchiveBox documentation.

Or skip the browser setup

ScreenshotNeo is a website screenshot API with an MCP server. A single GET request can return an image or PDF, so a scheduled job can call it instead of maintaining a local browser. The endpoint and options are documented at ScreenshotNeo API documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Example cURL call for an image:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

In your scheduled workflow, store the API key as a secret rather than putting it in the script or repository. The call above captures on invocation; use the same scheduler approach described earlier to run it daily, and choose an output path that includes the capture date so each run is retained.

Rank #4
Hczrc Portable Scanner, Photo Scanner for A4 Documents, Handheld Scanner for Business, Photo, Picture, Receipts, Books, JPG/PDF Format Selection, UP to 900 DPI, with 16G SD Car
  • Note: No software installation is required. You need 2 AA batteries ( not included) and a memory card ( included) to use it directly. Scan mode: Press and hold "Scan" for 2 seconds to turn on the device, and then press "Scan", the green light is on. The scanner moves to scan the file until the green light turns off automatically (or press the "Scan" key and the green light goes out). The number shown on the display increases by 1 to indicate that the scan is complete.
  • Portable Scanner scans images or pictures quickly: Store JPEG/PDF files within seconds, scan images or pictures quickly, plug and play, no need any software preinstalled. Compatible with Windows XP/7/Vista/Mac OS 10.4 or above version.
  • Lightweight and travel-friendly: Stored in Micro SD card directly, support read data on your computer or phone with USB connected. Powered by 2pcs AA batteries, Compact Design, it is convenient to carry outside.
  • 3 Image Resolution: 3 modes of resolution for your options: 300dpi/600dpi/900dpi, you can save it at the clearest way, picture and document are showed clear as it is. Freely choose your favorite resolution.File Format: JPEG/PDF format is all available, Great storage capacity as it supports 32G Micro SD card(Included 16GB Card),total meet your need for business trip or daily use.
  • Widely Used: It is applicable in bank, insurance business, real estate agency,home, office, library or outdoors. suitable for lawyer, businessmen, students, travelers and amateur archivists. Scan your important files and save them immediately, no struggling in finding a printing shop, keep it confidential.
  • Cookie banners and more than 60 known consent platforms, newsletter popups and chat widgets are removed before capture; each step can be turned off.
  • Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed; the response includes X-Page-Verdict and X-Billed headers.
  • An MCP server provides take_screenshot, get_page_info and capture_pdf tools for AI agents, including Claude, Cursor and other MCP clients.
  • The Free plan includes 1,000 shots a month with no card; paid plans start at $5 for 3,000 shots. Every feature is on every plan.

Sign up for ScreenshotNeo’s free plan to start with 1,000 screenshots a month and no card.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot missed or misleading captures

The workflow did not run at the expected minute

Scheduled runs are not exact-time guarantees. Check the workflow run history, confirm the workflow file is on the default branch, and verify the cron expression and timezone. If the repository is public and inactive, check whether the schedule was disabled after 60 days without activity.

The capture failed while waiting for a selector

Confirm that the selector exists at the requested URL and becomes visible within the timeout. A page redesign, consent prompt or conditional content can make an old selector invalid. Choose a page-specific readiness condition and inspect the run log; increasing a timeout will not fix a selector that never appears.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The PDF looks different from the screenshot

Check whether print CSS is responsible. Playwright’s PDF export defaults to print media; emulate screen media before export if screen styles are needed. Review colors and page breaks in an actual generated PDF, and retain a PNG when you need a separate visual record.

Best Value
Sale
MUNBYN Portable Scanner, 900 DPI Handheld Wand Scanner, A4, 16GB SD, Black
  • 【Easy to Carry--Portable Scanner】Length: 9.5 in = 1.5 pens. Weight: 0.66 lbs = An apple. Carry way: Small bag. Power Source: a pair of AA batteries (NEED TO BUY EXTRA). Support scanning up to A4 size.
  • 【Easy to Scan--Handheld Scan】Portable Scanner scans your photos, documents, and book pages in 3-5 seconds on 900 dpi resolution independently. Easy to use once you take a tiny bit of time to get the hang of this portable scanner. Compared to the feeding scanner, the wand scanner will not fold or damage old photos during scanning.
  • 【Easy to use--No Driver】Portable Scanner does not require downloading a driver. Easily connect the portable scanner to a computer through a USB cable to transfer your scanned photos or documents anywhere and anytime.
  • 【Easy to Digitalize--Clear Image】The highest 900dpi scan resolution can convert pictures, documents, book pages, or other targets into digital files in high clarity.
  • 【Easy to Store--16G SD Card】Wand scanner with 16G SD card will store thousands of scan files. With OCR software (you can find some software from Google Play Store), easy to transfer PDF scan files into Word/Excel format and edit them.

The archive has a missing day or a failed artifact upload

Inspect the Actions run and upload step, including whether the capture produced files. The workflow sets if-no-files-found: error so an empty archive is not silently treated as a successful upload. Check repository permissions, artifact configuration and retention settings; use an independent backup for records you cannot afford to lose.

The stored capture shows a redirect or an error page

Compare the requested URL, final URL and HTTP status in the run output. Confirm that the destination is still correct, the expected content appeared, and any required access conditions are handled appropriately. A written file is not proof that it contains the intended page.

FAQ

Can GitHub Actions guarantee that the screenshot is taken at an exact time?

No. GitHub documents possible schedule delays during high load and dropped queued runs under sufficiently high load.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does a PDF preserve a website for later interactive use?

No. It is a rendered document; it does not preserve the site’s complete underlying content or interactive behavior.

Should I save both a screenshot and a PDF?

Save both when you need a visual record and a document suitable for reading or printing. They can render differently, so inspect both formats for the page and purpose you care about.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.