This bundle is 100% static (index.html + catalog.json + images/*.webp) AND includes a built-in Live Google Sheet JSONP Connector so edits in your Google Sheet appear on your personal phone automatically without redeploying!
vine-store) and drag vine-store-cloudflare.zip into the upload box.https://vine-store.pages.dev) that works on any personal iPhone/Android (tap Share β Add to Home Screen for a native app icon!).
In your Vine Tracker Google Sheet, click File β Share β Publish to web (or set link sharing to Anyone with the link can view). Every time you open the site on your phone, it will automatically pull live box moves, status changes, new rows, and Column G (Image URL) photos directly from Google Sheets!
Your Google Sheet now has an Image URL column (Column G), and all 22 rows that were missing Amazon links have been backfilled with working Amazon links!
Right-click any product photo on Amazon β Copy Image Address (e.g. https://m.media-amazon.com/images/I/....jpg) and paste it into Column G (Image URL) of your Google Sheet. Amazon's static media CDN (m.media-amazon.com) serves thumbnails with a 20-year cache header and zero CAPTCHAs.
Note: amazon.com/vine/orders is a text-only table without thumbnails. Open Vine Reviews (Awaiting Review / Reviewed tabs) or Your Orders (where thumbnails are visible), run this in DevTools Console, and paste the copied JSON below:
(()=>{const bag=JSON.parse(sessionStorage.getItem('_vineImgs')||'{}');let n=0;document.querySelectorAll('a[href*="/dp/"],a[href*="/product/"]').forEach(a=>{const m=a.href.match(/\/(?:dp|product)\/([A-Z0-9]{10})/);if(!m)return;let el=a;for(let i=0;i<6&⪙i++){const imgs=[...el.querySelectorAll('img[src*="images/I/"]')];if(imgs.length===1){bag[m[1]]=imgs[0].src.replace(/\._[^.]+_\./,'._AC_SL320_.');n++;break}el=el.parentElement}});sessionStorage.setItem('_vineImgs',JSON.stringify(bag));const out=JSON.stringify(bag);if(typeof copy==='function')copy(out);console.log(`β
Found ${n} on this page (Total saved: ${Object.keys(bag).length}). Copied JSON to clipboard!`);return out})()