Bookmarklet tool modelled after a Playwright observer script (Node), generated by Chat GPT 5.
It crawls the page, saves DOM inventory, visible text, local/session storage, IndexedDB list, layout metrics, screenshots, and a HAR.
I used it to record a page on localhost development server, feed the dump to ChatGPT, and have it create a specification of the web app.
Prompt:
Analyse this observer json dump of a local web app and write up the specifications into the "specs/"
folder with each domain topic (including technical topic) as a seperate markdown file. Create a
"SPECS.md" in the root of the directory which is an overview document that contains a table that
links to all the specs.
Partial example:
- Single page app with a full-viewport map container id="map".
- Top-left: Leaflet.draw toolbar with create (polyline, polygon, rectangle) and a separate edit/delete section.
- Bottom-left: Legend block labelled "Industry Types" with categories: Agriculture, Forestry, Mining, Oil and Gas, Rural, Transportation, Unknown, Urban, Utility, Unclassified.
- Left-side floating panel: "Layer Visibility" with toggles for Drawn Project, Imported Project, Surface Disturbance - Areas, Surface Disturbance - Linear.
- Right-side floating panel: "Base Maps" grid with options: Light Grey, OpenStreetMap, Satellite Imagery, Topographic.
- Bottom-right: Attribution control (Leaflet | Powered by Esri | Tiles © Esri — Esri, DeLorme, NAVTEQ).
- Header/home banner with link to "./" and label 🏠 Surface Disturbance - Dev.
- Leaflet for mapping (DOM classes
leaflet-*
). - Leaflet.draw for drawing/editing features (DOM classes
leaflet-draw-*
). - File import control (DOM class
leaflet-control-better-filelayer
). - Basemap sources: OpenStreetMap and Esri (World Imagery, Topographic, Light Grey).
- Attribution displayed via Leaflet attribution control.
Assumed JS/CSS assets are loaded in the HTML hosting the map.