llms.txt and JSON-LD in Webasyst
How to get llms.txt and structured data in Webasyst and Shop-Script - what each app contributes, where the data comes from, how files and markup are refreshed, and what to check after installation
Two layers on one site
Section titled “Two layers on one site”The map
- App datacategories, products, pages, posts
- A scheduled buildor a button in settings
- llms.txt and llms-full.txtat the root of the domain
The meaning
- Page dataproduct, post, topic, question, photo
- Built on rendercached for an hour
- A JSON-LD blockin the code of every page
What each app contributes
Section titled “What each app contributes”| App | What goes into llms.txt | What JSON-LD describes |
|---|---|---|
| Shop-Script | categories, products, brands, information pages, contacts; prices and availability optionally | Product, Offer, Brand, rating and reviews, breadcrumbs, the store |
| Site | published pages, the site name and contacts | WebPage with dates, Organization, WebSite, breadcrumbs |
| Blog | posts, categories and tags | BlogPosting with author and dates, Person, the stream and categories as collections |
| Hub | public sections and published topics | DiscussionForumPosting, comments, votes, QAPage when a solution is marked |
| Helpdesk | public FAQ and pages | FAQPage with a question and its answer, breadcrumbs |
| Photos | public albums and pages | ImageObject with caption and dimensions, ImageGallery |
Only published, public content takes part in either layer. Helpdesk tickets and correspondence, hidden albums and unpublished topics never reach the files or the markup.
The llms.txt layer
Section titled “The llms.txt layer”- Files are built in advance. The extension assembles
llms.txtandllms-full.txtand stores them with the installation data. Routing serves the stored file at/llms.txt. There is no physical file in the web root. - Rebuilds run on a schedule. Editing a product or a page sets a “changed” flag. The file itself is rebuilt by a scheduler job or by a button in settings. The site owner adds the schedule once: a nightly full build and a frequent check of the flag.
- Helpdesk reports no edits. The app does not notify extensions about changes, so its map is refreshed by the schedule only.
- A large catalog is split. When the full file exceeds a set size, sections move into separate files named
llms-full-<section>.txt. - One root file per domain. When several apps share a domain, the app at the root owns the map and the others are included in it.
- Prices in the file are a choice. A store can include price, old price and availability, or keep names and addresses only.
- Staleness is visible. Settings warn when a file has not been rebuilt for a long time.
The result is an ordinary file: a title, a short summary, sections of links. It is checked like one written by hand: Validating files and markup.
The JSON-LD layer
Section titled “The JSON-LD layer”- The block is printed in the page code. No theme edits are needed.
- Markup is built when a page is rendered and cached for an hour. A change of price or text changes the cache key at once. A change the key does not see reaches the markup within the hour.
- Entities are linked. A page points to the site, the site to the organization, a post to its author, a comment to its topic.
- The company card is filled in settings. Phone and address are taken from Shop-Script when it runs on the same domain.
- Pages closed to indexing are not marked up.
What a product page gets
Section titled “What a product page gets”In Shop-Script product markup comes in two editions.
| What | Base edition | Extended edition |
|---|---|---|
| Product and offer | Product, Offer: name, SKU, price, currency, availability | the same |
| Brand | from the attribute the owner nominated | plus the manufacturer as a separate property |
| Rating and reviews | AggregateRating, up to 20 reviews with replies | the same |
| Images | up to 20, with dimensions | plus video |
| Breadcrumbs | yes | plus the category chain and category pages |
| Variants | one product for the selected SKU | ProductGroup with a price, SKU and availability per variant |
| Barcode and part number | no | gtin with a check-digit test, mpn |
| Store | name, site address, logo | contacts, address, opening hours, pickup points, shipping, returns, payment methods |
| Storefronts | one domain | every storefront |
A few things are handled strictly:
- Availability takes three values: in stock, out of stock, back order. The third appears only when the store allows selling without stock.
- Price is published in the storefront currency, not in the currency a visitor picked.
- A product without a price gets no offer.
AggregateOfferis not used. Variants of one product are described by separate offers.- Brand and barcode are never guessed. No nominated attribute, no property.
- A variant group is built when variants differ by color, size, material or pattern. SKUs that differ by something else produce one product.
Markup and feed from one source
Section titled “Markup and feed from one source”The answer to “which attribute holds the brand, the barcode, the color, the size” is stored in the store once. Both the markup and the product feed extension read it, so the page and the feed name the same source for the same fact.
Why it matters: Markup and the product feed.
What is left to do by hand
Section titled “What is left to do by hand”- Add scheduler jobs that rebuild
llms.txt: without them the file will not refresh. - In the markup settings, name the product attribute that is the brand and the one that is the barcode.
- Fill in the company card: name, logo, phone, address.
- Make sure the site theme does not print its own markup of the same type.
- Open
/llms.txtand confirm a200response that is text, not HTML. - Run two or three pages through the Google and Schema.org validators.
- Confirm that
robots.txtdoes not block the files from the robots you want.
What not to expect
Section titled “What not to expect”What is known and what is not
Confirmed
- Files and markup are built from app data and refreshed without manual editing.
- Only public content reaches either layer.
- Google and Yandex read product markup: their documentation says so.
Not proven
- That
llms.txtwill affect rankings or the number of citations. - That a particular AI system will read the store’s markup directly.
What it does not mean
- Markup is not refreshed instantly on every change: the cache lives up to an hour.
llms.txtdoes not refresh by itself: a scheduler is required.- An extension will not fix a price or a description that is wrong in the catalog.
The extensions remove manual work. They promise nothing about search results or AI answers.
Extensions for llms.txt
Section titled “Extensions for llms.txt”Webasyst
Site
A map of site pages
- Data source
- Published site pages, the site name and contacts
- Creates
llms.txtllms-full.txt
Webasyst
Shop-Script
A map of an online store
- Data source
- Categories, products, brands, information pages and contacts
- Creates
llms.txtllms-full.txt
Webasyst
Blog
A map of blog posts
- Data source
- Published posts, categories and tags
- Creates
llms.txtllms-full.txt
Webasyst
Hub
A map of community discussions
- Data source
- Public sections and published discussions
- Creates
llms.txtllms-full.txt
Webasyst
Helpdesk
A map of a knowledge base
- Data source
- Public FAQ and pages; tickets and correspondence are left out
- Creates
llms.txtllms-full.txt
Webasyst
Photos
A map of photo albums
- Data source
- Public albums and pages
- Creates
llms.txtllms-full.txt
Promo code for a discount on your first Webasyst order:BE462B3B6D
Commercial extensions from the Webasyst Store. Each one builds llms.txt and llms-full.txt from the data of its app and rebuilds them on a schedule or on demand. A file made by an extension is checked the same way as one written by hand.
Extensions for structured data
Section titled “Extensions for structured data”Webasyst
Shop-Script
Markup for products and the store
- Data source
- Products, SKUs, prices, availability, reviews, categories and store settings
- Describes
ProductOfferAggregateRatingBreadcrumbListOnlineStore
Webasyst
Site
Markup for pages and the company
- Data source
- Site pages, their dates and nesting, the company card from settings
- Describes
WebPageOrganizationWebSiteBreadcrumbList
Webasyst
Blog
Markup for posts and authors
- Data source
- Posts, publication and update dates, authors, categories and tags
- Describes
BlogPostingPersonBlogBreadcrumbList
Webasyst
Hub
Markup for discussions and answers
- Data source
- Published topics, comments, votes and the accepted solution
- Describes
DiscussionForumPostingCommentQAPagePerson
Webasyst
Helpdesk
Markup for questions and answers
- Data source
- Public questions and answers only; tickets are not read
- Describes
FAQPageQuestionAnswerBreadcrumbList
Webasyst
Photos
Markup for photos and albums
- Data source
- Public photos and albums: captions, tags, dimensions, upload date
- Describes
ImageObjectImageGalleryBreadcrumbList
Promo code for a discount on your first Webasyst order:BE462B3B6D
Commercial extensions from the Webasyst Store. Each one adds a JSON-LD block built from the data of its app to the page code, with no theme edits. Markup made by an extension is checked with the same validators as markup written by hand.
What to read next
Section titled “What to read next”- An AI-ready site - every layer in order
- Structured data and JSON-LD - which markup fits which site
- What is llms.txt - why a map is needed
- Validating files and markup - how to confirm it all works