Shoppable widgets
Make a Tolstoy video shoppable and put it on the storefront, then track how it performs. Use when the user says "make this video shoppable", "tag <product> on my video", "put my videos on the product page", "create a stories/carousel/spotlight widget", "publish my widget", "which widgets are live", "how are my Meta ads doing", or "push this video to my ad library". Spans the Tolstoy Library MCP: products, onsite shoppable widgets, stores, and paid ads.From its SKILL.md
npx -y skills add GoTolstoy/agent-skills --skill shoppable-widgetsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.6 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
Shoppable widgets
Turn library videos into shoppable storefront experiences: tag products on videos, build onsite widgets (Stories, Carousel, Spotlight, For You Feed, Tile, Collection Grid, Bubble Feed), publish them, and read Meta ads performance. All via the Tolstoy Library MCP.
Mental model
- A video becomes shoppable when you tag store products on it (
tag_video_product). Tagged videos feed theproduct_taggedplaylist and show on those products' pages. - A widget (onsite project) is what shoppers see on the store — it draws from playlists/rules and renders as Stories, Carousel, Spotlight, etc.
- A widget is live in Tolstoy when
live: true, but storefront visibility also needs the Tolstoy app embed enabled in the Shopify theme (one-time, per store). The publish result spells out the steps — relay them. - Tools default to the connected store; pass
appUrl(full or a distinctive fragment) to target another of the account's stores. Uselist_storesto see them.
Make a video shoppable
- Find the video —
search_assets(by name) orlist_assets(recent/favorites). - Find the product —
search_productswith the product title → take itsexternalProductId. - Tag it —
tag_video_product { vodAssetId, addProductIds: [externalProductId], appUrl? }. Untag withremoveProductIds.- The result reports per-product success/failure — if a product id belongs to another store, it fails; pass the matching
appUrl.
- The result reports per-product success/failure — if a product id belongs to another store, it fails; pass the matching
Build & publish a widget
- Create —
create_widget { type }where type isstories,carousel,spotlight,tv(For You Feed),tile-embed,collectionPageTile, orbubble-feed. It starts offline with the platform's defaults (most start from product-tagged videos). - Inspect —
get_widget { publishId }shows the actual media it will render, content rules, and PDP mode. For PDP-mode widgets, passproductIdto see exactly what a given product page would show. - Adjust —
update_widget { publishId, ... }: rename, toggleisPdpMode, setmaxMediaAgeDays, or replace content (sourcesIn/sourcesOutplaylists,rulesfor pin/hide/manual/sort). Read withget_widgetfirst; these are full replacements. - Publish —
update_widget { publishId, live: true }. Relay the returned app-embed setup steps; confirm whether the embed is already enabled on the store.
Read ad performance
list_ad_campaigns— Meta campaigns with real delivery status. ReporteffectiveStatus, not juststatus; ACTIVE-but-not-delivering is not "live."get_ads_performance { level, datePreset }— spend, ROAS, CTR, purchases. Uselevel: "ad"for winner/loser creative comparisons. If purchases are 0 but custom conversions exist, the account tracks conversions differently — don't call it unprofitable.publish_to_meta_ads_library { asset }— push a library video/image into Meta Ads Manager, ready for ad creation. No campaign or spend is created. With multiple ad accounts, passadAccountId.
There is no create/activate/pause-campaign tool — money-moving operations stay in the Tolstoy platform on purpose.
End-to-end example
"Make my unboxing video shoppable for the DBTK 1 shirt, put it in a stories widget, publish it, and show me how my ads are doing."
search_assets "unboxing"→ vodAssetIdsearch_products "DBTK 1"→ externalProductIdtag_video_product { vodAssetId, addProductIds: [externalProductId] }create_widget { type: "stories" }→ publishIdget_widget { publishId, productId: "<DBTK 1 id>" }→ confirm the video shows on that product's pageupdate_widget { publishId, live: true }→ relay app-embed stepsget_ads_performance { level: "campaign", datePreset: "last_7d" }
Notes
- Multi-store: a product id is store-specific. Keep
appUrlconsistent acrosssearch_productsandtag_video_product. get_widgetcontent is the unscoped pool unless you passproductId; PDP-mode widgets show only the per-product subset to shoppers.- App-aware clients (ChatGPT, Claude) render a shoppable-widget card grid and media previews inline.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.