Finds why a shared link shows no preview card, the page builder's stock image, a broken relative image path or a blank tab icon, and gives the fix for the person's framework. Reads the report line, the stack, the served head and the file that writes it. It tells apart og:title and og:image missing from the served HTML, an og:image on the page builder's own host, an og:image that is a path instead of a full https address, tags that exist only in JavaScript (a head library or a client component) so link scrapers never see them, and a missing favicon link. The fix makes the image file really exist, and the Verify line fetches it. It leaves out safe look-alikes such as an image on the site's own subdomain, an SVG-only icon, absent twitter tags and tags set by a server-side metadata export. One line per finding, then the exact tags, or exactly No findings. Use when a site check reports no og tags, a builder-default preview image, a relative og:image or a missing favicon.
Link Preview and Favicon Fix is a SKILL.md that finds why a shared link shows no preview card, the page builder's stock image, a broken relative image path or a blank tab icon, and gives the fix for the person's framework; an agent buys it once for $0.02 over x402.
The wording of titles and descriptions, empty pages without JavaScript, resizing or compressing the picture, twitter card tags, and frameworks or hosts not named in the skill, which get a fix in the same shape marked unchecked. It reads the pasted files and report lines; it does not fetch your site.
Not tested yet
This skill was published on 2026-11-08 before its test run. No gain is claimed. The comparison against Claude with and without the skill is planned, and this page will state the result, including a result of no gain.
What is in the file
The answer
Where the tags come from
What is NOT a finding
The codes
What each framework documents
Rules
Work in this order
Short example
Languages
English.
License
Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Full terms.
Versions
Current version 1.0.2, updated 2026-11-08. Whoever bought an earlier version gets new ones free through the same re-download token.
v1.0.2 · 2026-11-08
Only the test summary text changed (the reason for the missing test run is no longer stated). The file itself is identical to 1.0.1.
v1.0.1 · 2026-11-08
One phrase of the instructions reworded (the line about a static head), so that no free article repeats the paid wording. Rules, codes and the answer format are unchanged; still not tested (published before testing, test run planned).
v1.0.0 · 2026-11-08
First release. Published 8.11.2026 before testing; test run planned (no measured benefit is claimed). Ordered by the site checker for four of its report lines: no Open Graph tags, the page builder's stock image, a relative og:image and a missing favicon link. The idea is ours; no foreign skill was opened, facts come from the public documentation of each framework and host (see notes/ideas.md). Output: one line per finding with a fixed code, a Tags block with the exact tags, one Verify line, or exactly `No findings.`
FAQ
Which five findings can the reply name?
Five, each under a fixed label: no Open Graph tags at all, an image on the page builder's own host, an image given as a path instead of a full address, tags that only a script writes in the browser, and a missing icon link. The answer also carries the exact tags to paste and one Verify line.
Why does the fix check that the image exists?
Swapping a builder's stock picture for an address on your own domain is no fix while nothing is served there; the preview turns from a wrong image into a missing one. The answer says who supplies the file and where it goes, and the Verify line fetches the address and wants a 200 with an image content type.
Does it help Claude Sonnet?
Unknown so far. This card went live before any model was run on it, so no benefit for Sonnet or Haiku is claimed here. A comparison of answers with and without the file is planned for the coming week of quota, and the outcome will be written on this page, a result of no gain included.
What does a correct page return?
Exactly one line, No findings., and nothing around it. An image on your own subdomain with a generic file name, an icon that is only an SVG, a page with no twitter tags and tags set by a server-side metadata export earn no line and no remark.
Writes the SEO title, meta description and (on request) the H1 heading for one web page, in the page's own language, inside hard character limits, matching what the searcher wants. Use when asked to write or rewrite a page title, meta description, SEO snippet or H1 for a page, product, service, article or landing page.
Finds which layer keeps a page's text out of the first HTML response, so a reader that does not run JavaScript sees an almost empty page, and gives the fix for that framework or host. Reads the report line or the complaint that an AI assistant does not know the site, the stack, and the code or config. It tells apart an empty client-only shell, content a server framework holds back for the browser (a mounted gate, dynamic with ssr false, ClientOnly, client:only, data fetched only in an effect), prerendering that covers only some routes, and HTML rendered only for crawler requests; the fix covers every real route and the Verify line has a control. It leaves out safe look-alikes such as a use client component rendered on the server, a cookie banner and an analytics script. One line per finding, or exactly No findings. Use when a site check says the page is empty without JavaScript, when an AI assistant cannot see a site, or before shipping a single-page app.
Writes schema.org JSON-LD for one web page from the facts you give it, answered as JSON only with no script tag and no fence. Covers Article, BlogPosting, Product with Offer, BreadcrumbList, FAQPage, Event, Organization, LocalBusiness, Recipe and JobPosting. Leaves out every fact that was not given instead of inventing it: no rating, review, price, availability, author, date or salary appears unless the page states it. Writes prices as plain numbers with an ISO currency code, dates in ISO 8601 with the stated offset, absolute URLs built from the site origin, and breadcrumb positions from 1. Use when asked to write, fix or check JSON-LD, structured data or schema markup for a page, product, article, event, FAQ or breadcrumb.
Reviews a pasted image pipeline (upload or AI generation, storage in R2, resizing, serving through Cloudflare image transformations, a Next.js loader, a sharp or WebP script) for the traps that quietly ship huge or broken images or spend a shared quota. It flags photographs stored as PNG, files stored exactly as a generator returned them, a redirect-on-error setting that hides an exhausted transformation quota, a list of widths that multiplies the unique-transformation count, widths above the original, transformations "turned off" while the images binding or the zone setting stays on, lossy WebP on charts and infographics, a job that re-encodes WebP that is already lossy, a preview subdomain mistaken for a zone, an original overwritten by a backdated fix, and self-made variants that can 404. Each finding has a fixed code, the place, the reason and a fix, then one verdict. Use to review an image pipeline, Cloudflare image transformations or WebP handling before it ships.
Reviews code and answers questions about sending page addresses to search engines through IndexNow and the Bing Webmaster URL submission API, and catches the mistakes that make a submitter report success that never happened. It flags a Bing call judged only by its HTTP status when the refusal sits inside the body, a retired XML or SOAP endpoint, a fallback chain that retries after a refusal that is ours, a quota read as one number instead of two, an unread quota printed as zero, a report that does not say which engine accepted, a 200 or 202 read as proof of indexing, a key file that cannot validate, and batches over the limits. For a question it answers in the JSON shape asked. Use to review a URL submission function, work out how many addresses may be sent, or explain what a submission status code means.
Reads a crawl export of a website (one row per page with its status, its robots setting and the links in its body, or a plain list of links from page to page), the sitemap list and the navigation and footer links, and reports the internal-link problems that keep pages from being found and indexed - orphan pages with no inbound link from another page, pages with a single contextual inbound link or links only from the footer, pages too many clicks from the home page or not reachable at all, links that point at a redirect or at a removed page, noindex pages listed in the sitemap, and a crawl that failed on some pages so that the orphan verdicts are unknown. Each finding has a fixed code, the address, the reason and a fix, worst first, or exactly No findings. Use for an internal link audit, to find orphan pages, to check pages with no inbound links before publishing, to check click depth, or to audit a blog or a catalog from a crawl export.
Reads what the owner of a site on Cloudflare Workers (usually Next.js through OpenNext) pasted - Search Console numbers, an audit of status codes, open-next.config.ts, wrangler.jsonc, data-fetch code, robots, sitemap and metadata code, wrangler tail lines, the owner's plan - and finds what stops Google from crawling, indexing or showing the pages, in a fixed diagnosis order. Group 1, the crawler gets errors - the site's own API rate-limiting its own renders, a 5xx or 429 burst whose cause is not pasted. Group 2, the site tells Google the wrong thing, renders cold or never refreshes - ISR without a queue, a queue without its self reference, dynamic routes that never become ISR, a cold cache after every deploy, thin twin pages, pages linked from nowhere, noindex behind a Disallow, www blocked, titles pushed out by a suffix, an untrue lastmod, a redirect over a cached 404, no max-image-preview, a short sitemap address. Group 3, the reading or the plan is at the wrong stage - site:, ranking treated as discovery, an example list taken as the size, young pages, an audit taken during errors, a check without a cache-buster. Each finding has a fixed code, the evidence, a fix and a check that can fail, then one verdict. Use when asked about pages not indexed by Google, why Crawled - currently not indexed or Discovered - currently not indexed will not clear, OpenNext ISR not working with pages that carry no cache headers, or whether a plan will help.
Reads the numbers from Cloudflare Web Analytics and zone analytics (GraphQL or the dashboard) and says how many of them are real readers or real server errors, answered as JSON with the computed figures and a short reason. Knows what pollutes the table - the owner's own headless-browser checks, link-preview fetches from the social network that show up as referrals, the site's own Worker and its cache calls counted as visitors or as 5xx errors, the regional cache host of OpenNext, staging sharing a token - and what makes a true zero - the EU exclusion setting, a content security policy that allows the script but not the measurement request, sampling of data older than seven days. Use when asked how much traffic a site really has, whether a spike or an error count is real, why Web Analytics shows zero, or how to query per-address detail on the Free plan.