Nightly PDF snapshot archive of key pages to Slack
Every night at 11pm, capture PDFs of your critical web pages and post them to a Slack audit channel so legal, compliance, and marketing keep a dated trail.
Every night at 11pm on a cron schedule, archive PDF snapshots of a fixed list of critical web pages to a Slack audit channel. This is a deterministic per-URL loop with no LLM reasoning, so build it as a code workflow.
The workflow config holds two things: a list of pages to capture (each entry has a URL and a human-friendly title, for example "General Input Status Page", "Terms of Service", "Acme Pricing") and the Slack channel ID to post into. Typical entries are our own status page, terms and privacy pages, key marketing landing pages, and a few competitor pricing and product pages.
For each page in the list, do two steps in order:
1) Call Anchor Browser's Get Page PDF on the URL to render the page and return the binary PDF. Get Page PDF is one of Anchor's auto-session AI tools, so it manages a throwaway browser session on its own; do not start or stop a session explicitly.
2) Call Slack's Upload a File to post the PDF into the configured audit channel. The filename should be `{dateISO}-{urlSlug}.pdf`, where `dateISO` is today's date in YYYY-MM-DD form and `urlSlug` is a lowercase, hyphenated slug derived from the page title (for example `2026-07-17-acme-pricing.pdf`). Set the initial comment to a short caption that names the page and shows the URL, for example "Acme Pricing — https://acme.com/pricing".
Handle per-URL failures without aborting the whole run. Wrap each iteration so an error on one page (Anchor render failure, Slack upload failure, timeout) is caught, the URL and error message are collected into a failures list, and the loop continues to the next page. At the very end, if the failures list is non-empty, call Slack's Send a Message once to the same audit channel with a plain-text summary shaped like:
failed: https://acme.com/pricing — timeout after 30s failed: https://example.com/tos — 403 Forbidden
One line per failure. If everything succeeded, do not post a summary message. The successful PDF uploads themselves are the signal.
Use the Slack (user OAuth) integration for both the file upload and the failure summary, since it is the integration that exposes Upload a File. The channel ID comes from workflow config; do not look it up dynamically. Do not try to store the PDFs anywhere else; Slack is the archive.
Additional information
What does this prompt do?
- Renders a full PDF of every page on your watchlist once a night, without anyone clicking anything.
- Drops each PDF into a designated Slack channel with a date-stamped filename so history is easy to scroll.
- Adds a short caption on each upload naming the page, so the channel reads like a labeled archive.
- Sends a follow-up note listing any URL that failed to capture, so nothing goes missing quietly.
What do I need to use this?
- A Slack workspace and a channel you want to use as the audit log (private is fine).
- An Anchor Browser account, which is what renders each page into a PDF.
- The list of pages you want captured each night, for example your terms of service, privacy policy, status page, key marketing landing pages, and competitor pricing or product pages.
How can I customize it?
- Change the schedule to a different time of day, or run it weekly instead of nightly.
- Add or remove pages from the watchlist without changing the workflow itself.
- Point the archive at a different Slack channel per team (one for legal, one for marketing).
Frequently asked questions
How many pages can I put on the watchlist?
Will this work on pages that require login?
Where do the PDFs actually live long-term?
What happens if one of the pages is down or slow?
Can I archive to Google Drive or S3 instead of Slack?
Related templates
Never lose a snapshot of a page that quietly changes.
Set this up once and your team wakes up to a dated PDF trail of every page that matters, ready to reference the next time someone asks what it used to say.