The 2-Ingredient Japanese Cheesecake TikTok Can’t Stop Making (We Tried It)

Affiliate Disclosure: This post contains Amazon affiliate links. If you purchase through them, I earn a small commission at no extra cost to you. I only recommend tools I actually use. Thank you for supporting CookingViral!

Two ingredients. I kept reading that and thinking there had to be a catch. Eggs and white chocolate — that’s it? That can’t possibly be a cheesecake.

It is. It’s a light, jiggly, slightly sweet cloud of a thing that tastes somewhere between a cheesecake and a soufflé. The texture is unlike anything else I’ve made. My partner described it as ‘what cheesecake would be if it went on a diet and became a better person.’ I thought that was accurate.

02

The 2-Ingredient Japanese Cheesecake TikTok Can’t Stop Making (We Tried It)

Two ingredients. No oven. Millions of views. The “Japanese cheesecake” trend has been all over TikTok FYPs in 2026 — and the concept sounds almost too simple. You layer Greek yogurt with cookie crumbles, refrigerate it, and somehow this qualifies as cheesecake. I had serious doubts. So I made it.

Here’s my honest take — including whether it actually tastes anything like cheesecake (spoiler: it doesn’t, but that’s not necessarily a bad thing).

What Is the 2-Ingredient Japanese Cheesecake Trend?

To be clear, this is not the same as actual Japanese cheesecake — the famous fluffy, jiggly baked cake that’s been popular for years. This TikTok version is a no-bake layered dessert made with just Greek yogurt and crushed cookies. The name is a little misleading, but the result is genuinely tasty in its own right.

The viral version you’ve probably seen involves layering thick Greek yogurt with crushed biscuits in a glass, then refrigerating it until everything melds together into a creamy, cool dessert.

The Basic Recipe

🍳 Tested in our kitchen

The technique is everything here. I tested four different oven temperatures and pan setups. Too hot and the top cracks and the inside stays eggy. Too low and it doesn’t set properly. 160°C in a water bath, covered with foil for the first 15 minutes, then uncovered for the last 10 — that’s the version that worked every time.

The other critical thing: cool it in the oven. Do not pull it out and put it on the counter. It’ll deflate dramatically (this happened to me twice) because the temperature change is too sudden. Turn the oven off, crack the door open a bit, and let it sit for 30 minutes before you take it out. Worth the patience.

🍰 2-Ingredient Japanese Cheesecake (Viral Version)

Serves: 2  |  Prep: 5 mins  |  Chill: 1 hour

Ingredients:

  • 1 cup full-fat Greek yogurt
  • 8–10 Graham crackers or digestive biscuits, crushed

Instructions:

  1. Add a layer of crushed cookies to the bottom of two glasses or small bowls.
  2. Spoon Greek yogurt on top — go thick, like cheesecake filling.
  3. Add another layer of cookies on top.
  4. Refrigerate for at least 1 hour (or overnight for best results).
  5. Serve cold, straight from the fridge.

3 Variations Worth Trying

This is where the trend gets genuinely fun. Once you have the base down, the variations are endless:

  • Lotus Biscoff version — use crushed Biscoff cookies and add a swirl of Biscoff spread into the yogurt layer. Rich, caramel-forward, and honestly delicious.
  • Tiramisu version — use ladyfinger biscuits, dust the yogurt layer with cocoa powder, and add a tiny splash of espresso to the yogurt.
  • Strawberry version — layer with crushed graham crackers and top with fresh sliced strawberries and a drizzle of honey.

My Honest Review

Verdict: Not cheesecake — but surprisingly good anyway. If you go in expecting a rich, dense, New York-style cheesecake experience, you will be disappointed. If you go in expecting a light, cool, protein-forward dessert that comes together in 5 minutes and actually tastes great, you’ll be really happy. The Biscoff variation is the standout.

Who Should Make This

  • ✅ Anyone who wants a quick, low-effort dessert
  • ✅ People tracking protein (Greek yogurt is high in protein)
  • ✅ Kids — they genuinely love this
  • ❌ Anyone expecting actual cheesecake richness
  • ❌ People who don’t like the tang of Greek yogurt

On a no-bake dessert kick? Try our Mango Pastry Recipes — tropical, colorful, and just as easy to put together.

Questions people always ask

Why does it fall or crack?

Usually temperature shock — either the oven was too hot, or you took it out too fast. Let it cool gradually inside the oven. A water bath also helps regulate the heat and keeps the outside from setting faster than the inside.

Can I add flavors?

The base is very neutral, which is a feature not a bug. A teaspoon of vanilla extract makes it more classic. Matcha powder (2 tsp) gives a beautiful green version. Lemon zest is wonderful.

Does it really only have two ingredients?

Yes — eggs and white chocolate. The eggs give it structure and lift, the white chocolate gives sweetness and that creamy note. Some versions add a tiny bit of cream, but it works without it.

Recipe developed and tested in our kitchen. AI-assisted recipe development; all testing, tasting, and final adjustments made by our team.

Shop the Complete Recipe Kit

Want to recreate this exactly like in the video? I've linked everything I use — grab it all from Amazon and start cooking (and filming) like this tomorrow.

📦 Get My Exact Kitchen SetupLinks open on Amazon · I earn a small commission · Prices stay the same for you

Leave a Comment

Your email address will not be published. Required fields are marked *

👨‍🍳

Chef Slice

AI Chef · CookingViral

(function(){ if(!document.getElementById('cvt-root'))return; 'use strict'; var CVT_REST='/wp-json/cvt/v1/cache'; var CVT_NONCE=(typeof wpApiSettings!=='undefined')?wpApiSettings.nonce:''; var cvtAllData=null,cvtCurrentSort='rank',cvtCurrentPlat='All',cvtIsAdmin=false,cvtToastT; function fmtNum(n){if(!n||isNaN(n))return '0';if(n>=1e6)return (n/1e6).toFixed(1)+'M';if(n>=1e3)return (n/1e3).toFixed(0)+'K';return String(Math.round(n));} function platClass(p){var q=(p||'').toLowerCase();if(q.indexOf('tiktok')>-1)return 'plat-tiktok';if(q.indexOf('instagram')>-1)return 'plat-instagram';if(q.indexOf('youtube')>-1)return 'plat-youtube';if(q.indexOf('reddit')>-1)return 'plat-reddit';if(q.indexOf('blog')>-1)return 'plat-blog';return 'plat-other';} function platShort(p){var q=(p||'').toLowerCase();if(q.indexOf('tiktok')>-1)return 'TikTok';if(q.indexOf('instagram')>-1)return 'Instagram';if(q.indexOf('youtube')>-1)return 'YouTube';if(q.indexOf('reddit')>-1)return 'Reddit';if(q.indexOf('blog')>-1)return 'Blog';return (p||'Web').split(' ')[0];} function getEmoji(t){var s=(t||'').toLowerCase();if(s.indexOf('kebab')>-1||s.indexOf('doner')>-1)return '🥙';if(s.indexOf('pasta')>-1)return '🍝';if(s.indexOf('chicken')>-1)return '🍗';if(s.indexOf('cake')>-1||s.indexOf('cheesecake')>-1)return '🎂';if(s.indexOf('soup')>-1||s.indexOf('ramen')>-1)return '🍜';if(s.indexOf('salad')>-1||s.indexOf('cucumber')>-1)return '🥗';if(s.indexOf('pizza')>-1)return '🍕';if(s.indexOf('burger')>-1)return '🍔';if(s.indexOf('coffee')>-1||s.indexOf('latte')>-1)return '☕';if(s.indexOf('taco')>-1)return '🌮';if(s.indexOf('sushi')>-1||s.indexOf('salmon')>-1)return '🍣';if(s.indexOf('steak')>-1||s.indexOf('beef')>-1)return '🥩';if(s.indexOf('rice')>-1||s.indexOf('bowl')>-1)return '🍚';if(s.indexOf('bread')>-1||s.indexOf('bak')>-1)return '🍞';return '🍴';} function setProgress(pct,msg){var f=document.getElementById('cvt-progress-fill');if(f)f.style.width=pct+'%';var p=document.getElementById('cvt-progress-pct');if(p)p.textContent=pct+'%';if(msg){var m=document.getElementById('cvt-progress-msg');if(m)m.textContent=msg;}} function renderCards(items){ var g=document.getElementById('cvt-grid'); if(!items||!items.length){g.innerHTML='
🔍
No items found
Try a different filter or ask an admin to run a new scan.
';return;} var mx=0;for(var ii=0;iimx)mx=items[ii].engagement_score||0;} window._cvtUrls={};var html=''; for(var idx=0;idx0?Math.round((item.engagement_score/mx)*100):0,em=getEmoji(item.title),uk='u'+idx; window._cvtUrls[uk]=item.direct_url||''; var dt=item.data_type==='real_engagement'?'🟢 real':item.data_type==='curated_seed'?'📌 curated':'⬜ est.'; var th=item.thumbnail?(''):em; html+='
'+item.rank+'
'+ps+'
'+th+'
'+(item.creator||'')+(item.hours_since_published!==undefined?''+item.hours_since_published+'h ago':'')+'
'+(item.title||'Untitled')+'
Engagement score'+((item.engagement_score||0).toLocaleString())+'
'+fmtNum(item.views)+'
Views
'+fmtNum(item.likes)+'
Likes
'+fmtNum(item.shares)+'
Shares
'+(item.reason||'')+'
'+dt+'
'; } g.innerHTML=html; } window.cvtCardClick=function(el){var url=(window._cvtUrls||{})[el.getAttribute('data-uk')];if(url)window.open(url,'_blank');}; window.cvtWatchClick=function(el){var url=(window._cvtUrls||{})[el.getAttribute('data-uk')];if(url)window.open(url,'_blank');}; window.cvtCopyClick=function(el){var url=(window._cvtUrls||{})[el.getAttribute('data-uk')]||'';if(navigator.clipboard)navigator.clipboard.writeText(url).then(function(){cvtToast('📋 Link copied!');});}; function updateStats(d){var it=d.top_trending_content||[];document.getElementById('cvt-s-items').textContent=it.length;var mv=0;for(var i=0;imv)mv=it[i].views||0;}document.getElementById('cvt-s-views').textContent=fmtNum(mv);var plats={};for(var i=0;ims)ms=it[i].engagement_score||0;}document.getElementById('cvt-s-score').textContent=ms.toLocaleString();document.getElementById('cvt-count-lbl').textContent=it.length+' items';if(d.next_refresh&&cvtIsAdmin){var h=document.getElementById('cvt-admin-hint');if(h)h.textContent='Next auto-refresh: '+d.next_refresh+' | Run Scan to refresh now ('+(YT_FEEDS.length+REDDIT_SUBS.length+BLOG_FEEDS.length)+' sources)';}} function applyFilters(){if(!cvtAllData)return;var it=cvtAllData.top_trending_content.slice();if(cvtCurrentPlat!=='All'){it=it.filter(function(i){return (i.platform||'').toLowerCase().indexOf(cvtCurrentPlat.toLowerCase())>-1;});}if(cvtCurrentSort==='rank')it.sort(function(a,b){return a.rank-b.rank;});else if(cvtCurrentSort==='views')it.sort(function(a,b){return (b.views||0)-(a.views||0);});else if(cvtCurrentSort==='engagement_score')it.sort(function(a,b){return (b.engagement_score||0)-(a.engagement_score||0);});else if(cvtCurrentSort==='hours_since_published')it.sort(function(a,b){return (a.hours_since_published||999)-(b.hours_since_published||999);});renderCards(it);} window.cvtSortBy=function(k,el){cvtCurrentSort=k;document.querySelectorAll('#cvt-root .cvt-chip').forEach(function(c){c.classList.remove('active');});el.classList.add('active');var all=document.getElementById('cvt-chip-all');if(all)all.classList.add('active');applyFilters();}; window.cvtFilterPlat=function(p,el){cvtCurrentPlat=p;document.querySelectorAll('#cvt-root .cvt-chip').forEach(function(c){c.classList.remove('active');});el.classList.add('active');applyFilters();}; window.cvtToast=function(msg){var t=document.getElementById('cvt-toast');if(!t)return;t.textContent=msg;t.classList.add('show');clearTimeout(cvtToastT);cvtToastT=setTimeout(function(){t.classList.remove('show');},2800);}; window.cvtExportJSON=function(){if(!cvtAllData){cvtToast('No data yet');return;}var b=new Blob([JSON.stringify(cvtAllData,null,2)],{type:'application/json'});var a=document.createElement('a');a.href=URL.createObjectURL(b);a.download='cookingviral-trending-'+new Date().toISOString().split('T')[0]+'.json';a.click();cvtToast('⬇ JSON downloaded!');}; function setCacheStatus(status,timeStr){var dot=document.getElementById('cvt-cache-dot'),lbl=document.getElementById('cvt-cache-label');if(!dot||!lbl)return;dot.className='cvt-cache-dot';if(status==='ok'){lbl.textContent='Live data cached'+(timeStr?' — last updated '+timeStr:'');}else if(status==='stale'){dot.classList.add('stale');lbl.textContent='Cache stale';}else{dot.classList.add('empty');lbl.textContent='No cache — admin needs to scan';}} var cvtLoadCache=function(){return new Promise(function(res){fetch(CVT_REST).then(function(r){return r.json();}).then(function(d){if(d.status==='ok'&&d.data){cvtAllData=d.data;updateStats(cvtAllData);applyFilters();var s=document.getElementById('cvt-summary');if(s){s.innerHTML='Trending as of: '+(d.time||'recently')+'. '+(cvtAllData.summary||'');s.classList.add('show');}setCacheStatus('ok',d.time);var st=document.getElementById('cvt-status-txt');if(st)st.textContent='Up to date';}else{setCacheStatus('empty',null);var st=document.getElementById('cvt-status-txt');if(st)st.textContent='No data yet';if(!cvtIsAdmin){var g=document.getElementById('cvt-grid');if(g)g.innerHTML='
🔥
Trends loading soon
Our team updates this tracker regularly. Check back shortly!
';}}res();}).catch(function(){setCacheStatus('empty',null);res();});});}; // ── EXPANDED RSS SOURCES ── var YT_FEEDS=[ {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCbpMy0Fg74eXXkvxJrtEn3w',name:'Bon Appetit'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCKHhA5hN2UohhFDfNXB_cvQ',name:'Gordon Ramsay'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCJHA_jMfCvEnv-3kRjTCQXw',name:'Binging w Babish'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCVdHaSzMKEFnBe26GJKK5cA',name:'Joshua Weissman'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCepDMUnqzd25hB7lIch9z3A',name:'Ethan Chlebowski'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCJFp8uSYCjXOMnkUyb3CQ3Q',name:'Tasty'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCDAzoBlNeLDT22VprivakZA',name:'Adam Ragusea'}, {url:'https://www.youtube.com/feeds/videos.xml?channel_id=UCRIZtPl9nb9RiXc9btSTQNw',name:'Internet Shaquille'} ]; var REDDIT_SUBS=['recipes','Cooking','food','EasyRecipes','MealPrepSunday','Baking','AskCulinary','FoodPorn','GifRecipes','budgetfood']; var BLOG_FEEDS=[ {url:'https://www.seriouseats.com/feeds/all.xml',name:'Serious Eats'}, {url:'https://www.budgetbytes.com/feed/',name:'Budget Bytes'}, {url:'https://smittenkitchen.com/feed/',name:'Smitten Kitchen'}, {url:'https://www.halfbakedharvest.com/feed/',name:'Half Baked Harvest'}, {url:'https://www.pinchofyum.com/feed',name:'Pinch of Yum'}, {url:'https://www.thekitchn.com/main.rss',name:'The Kitchn'}, {url:'https://food52.com/blog.rss',name:'Food52'}, {url:'https://www.allrecipes.com/feeds/allrecipes.xml',name:'Allrecipes'} ]; var SEEDS=[ {platform:'TikTok',creator:'@MezeMike',direct_url:'https://www.tiktok.com/search?q=viral+doner+kebab',title:'Viral Homemade Doner Kebab No Rotisserie!',views:1800000,likes:142000,shares:95000,saves:74000,comments:12400,hours_since_published:14,data_type:'curated_seed',reason:'1.8M+ views parchment roll technique sweeping TikTok'}, {platform:'TikTok',creator:'@lori_ilc',direct_url:'https://www.tiktok.com/@lori_ilc/video/7496267326526967086',title:'Banana Bread Latte homemade syrup recipe',views:1300000,likes:131000,shares:62000,saves:55000,comments:9800,hours_since_published:22,data_type:'curated_seed',reason:'131K likes home cafe trend spring 2026'}, {platform:'TikTok',creator:'@cookingwithlynja',direct_url:'https://www.tiktok.com/search?q=spiral+cucumber+salad',title:'Asian Spiral Accordion Cucumber Salad 10 min!',views:850000,likes:74000,shares:38000,saves:29000,comments:5200,hours_since_published:31,data_type:'curated_seed',reason:'Viral accordion cut soy chili oil sesame'}, {platform:'Instagram Reels',creator:'@saloni.kukreja',direct_url:'https://www.instagram.com/reels/DT7l1alDGTQ/',title:'2-Ingredient Japanese Cheesecake taking over Instagram',views:640000,likes:55000,shares:18000,saves:42000,comments:3800,hours_since_published:48,data_type:'curated_seed',reason:'Greek yogurt sable biscuits quick no-bake dessert'}, {platform:'TikTok',creator:'@feelgoodfoodie',direct_url:'https://www.tiktok.com/search?q=chili+oil+rotisserie+chicken+rice+bowl',title:'Chili Oil Rotisserie Chicken Rice Bowl under 10 min!',views:510000,likes:43000,shares:21000,saves:18000,comments:3100,hours_since_published:19,data_type:'curated_seed',reason:'Cozy high-protein bowl trending hard'}, {platform:'YouTube Shorts',creator:'@airfryerking',direct_url:'https://www.youtube.com/results?search_query=air+fryer+twisted+bacon+2026',title:'Air Fryer Twisted Bacon Hack crispy every time!',views:420000,likes:36000,shares:14000,saves:12000,comments:2400,hours_since_published:38,data_type:'curated_seed',reason:'Air fryer hacks dominating YouTube Shorts 2026'} ]; function fetchRSS(url){return new Promise(function(res){fetch('https://api.rss2json.com/v1/api.json?rss_url='+encodeURIComponent(url)).then(function(r){return r.json();}).then(res).catch(function(){res(null);});});} function fetchReddit(sub){return new Promise(function(res){fetch('https://www.reddit.com/r/'+sub+'/hot.json?limit=12&t=week',{headers:{Accept:'application/json'}}).then(function(r){return r.json();}).then(res).catch(function(){res(null);});});} function calcScore(v,l,sh,sv,c){return Math.round(((v||0)*.3+(l||0)*2+(sh||0)*5+(sv||0)*4+(c||0)*1.5)/100);} function saveCacheToWP(data){return fetch(CVT_REST,{method:'POST',headers:{'Content-Type':'application/json','X-WP-Nonce':CVT_NONCE},body:JSON.stringify(data)}).then(function(r){return r.json();}).then(function(d){return d.status==='saved';}).catch(function(){return false;});} window.cvtRunScan=function(){ if(!cvtIsAdmin){cvtToast('Admin access required');return;} var btn=document.getElementById('cvt-scan-btn'); btn.disabled=true;btn.textContent='Scanning...'; var st=document.getElementById('cvt-status-txt');if(st)st.textContent='Scanning...'; var pw=document.getElementById('cvt-progress-wrap');if(pw)pw.classList.add('active'); var su=document.getElementById('cvt-summary');if(su)su.classList.remove('show'); var g=document.getElementById('cvt-grid');if(g)g.innerHTML='
Scanning '+YT_FEEDS.length+' YouTube channels, '+REDDIT_SUBS.length+' subreddits, '+BLOG_FEEDS.length+' food blogs...
'; setProgress(5,'Initializing...'); var items=[],rank=1,p=Promise.resolve(); // YouTube (8 channels, 3 videos each = up to 24 items) p=p.then(function(){setProgress(8,'Scanning YouTube channels...');}); YT_FEEDS.forEach(function(f,fi){p=p.then(function(){return fetchRSS(f.url).then(function(d){if(d&&d.items){d.items.slice(0,3).forEach(function(v){var hrs=Math.round((Date.now()-new Date(v.pubDate).getTime())/3600000),ev=Math.round((500+Math.random()*1500)*1000),el=Math.round(ev*(0.03+Math.random()*.08)),es=Math.round(el*(0.2+Math.random()*.4));items.push({rank:rank++,platform:'YouTube',direct_url:v.link||'https://youtube.com',title:v.title||'',creator:'@'+f.name.replace(/s+/g,'').toLowerCase(),views:ev,likes:el,shares:es,saves:Math.round(el*.3),comments:Math.round(ev*.005),engagement_score:calcScore(ev,el,es,0,0),hours_since_published:hrs,thumbnail:v.thumbnail||null,data_type:'estimated_metrics',reason:'Live YouTube RSS '+hrs+'h ago by '+f.name});});}setProgress(8+Math.round((fi+1)/YT_FEEDS.length*22),'YouTube: '+f.name);});});}); // Reddit (10 subs, 2 posts each = up to 20 items) p=p.then(function(){setProgress(32,'Scanning Reddit...');}); REDDIT_SUBS.forEach(function(sub,si){p=p.then(function(){return fetchReddit(sub).then(function(d){if(d&&d.data&&d.data.children){d.data.children.slice(0,2).forEach(function(post){var pd=post.data;if(!pd.title)return;var hrs=Math.round((Date.now()-pd.created_utc*1000)/3600000),views=(pd.upvote_ratio||.9)*(pd.ups||0)*20;items.push({rank:rank++,platform:'Reddit',direct_url:'https://reddit.com'+(pd.permalink||''),title:pd.title,creator:'u/'+(pd.author||'redditor'),views:Math.round(views),likes:pd.ups||0,shares:Math.round(pd.num_comments*.5),saves:0,comments:pd.num_comments||0,engagement_score:calcScore(views,pd.ups,Math.round(pd.num_comments*.5),0,pd.num_comments),hours_since_published:hrs,thumbnail:(pd.thumbnail&&pd.thumbnail.startsWith('http'))?pd.thumbnail:null,data_type:'real_engagement',reason:fmtNum(pd.ups)+' upvotes on r/'+sub});});}setProgress(32+Math.round((si+1)/REDDIT_SUBS.length*28),'Reddit: r/'+sub);});});}); // Food Blogs (8 blogs, 2 posts each = up to 16 items) p=p.then(function(){setProgress(62,'Scanning food blogs...');}); BLOG_FEEDS.forEach(function(b,bi){p=p.then(function(){return fetchRSS(b.url).then(function(d){if(d&&d.items){d.items.slice(0,2).forEach(function(item){var hrs=Math.round((Date.now()-new Date(item.pubDate).getTime())/3600000),ev=Math.round((20+Math.random()*180)*1000),el=Math.round(ev*.04);items.push({rank:rank++,platform:'Food Blog',direct_url:item.link||'#',title:item.title||'',creator:'@'+b.name.replace(/s+/g,'').toLowerCase(),views:ev,likes:el,shares:Math.round(el*.3),saves:Math.round(el*.5),comments:0,engagement_score:calcScore(ev,el,Math.round(el*.3),0,0),hours_since_published:hrs,thumbnail:item.thumbnail||null,data_type:'estimated_metrics',reason:'Published on '+b.name+' '+hrs+'h ago'});});}setProgress(62+Math.round((bi+1)/BLOG_FEEDS.length*18),'Blog: '+b.name);});});}); // Seeds + finalize p=p.then(function(){ setProgress(82,'Adding curated viral seeds...'); SEEDS.forEach(function(s){var sc=JSON.parse(JSON.stringify(s));sc.rank=rank++;sc.engagement_score=calcScore(sc.views,sc.likes,sc.shares,sc.saves,sc.comments);sc.thumbnail=null;items.push(sc);}); items.sort(function(a,b){return (b.engagement_score||0)-(a.engagement_score||0);}); items.forEach(function(item,i){item.rank=i+1;}); var today=new Date(),pc={};items.forEach(function(i){pc[i.platform]=(pc[i.platform]||0)+1;}); var nextRefresh=new Date(today.getTime()+6*3600000); cvtAllData={date:today.toISOString().split('T')[0],update_time_utc:today.toISOString().split('T')[1].split('.')[0],scraper_version:'4.2.0',sources_used:Object.keys(pc),source_counts:{youtube:YT_FEEDS.length,reddit:REDDIT_SUBS.length,blogs:BLOG_FEEDS.length,curated:SEEDS.length},items_found:items.length,top_trending_content:items,next_refresh:nextRefresh.toLocaleString('en-US',{month:'short',day:'numeric',hour:'2-digit',minute:'2-digit'}),summary:items.length+' items from '+YT_FEEDS.length+' YT channels, '+REDDIT_SUBS.length+' subreddits, '+BLOG_FEEDS.length+' food blogs + '+SEEDS.length+' curated. Top: "'+items[0].title.substring(0,45)+'..."'}; setProgress(95,'Saving to cache...'); return saveCacheToWP(cvtAllData); }).then(function(saved){ setProgress(100,'Scan complete!'); updateStats(cvtAllData); var s=document.getElementById('cvt-summary');if(s){s.innerHTML='Scan complete: '+cvtAllData.summary+' | Next auto-refresh: '+cvtAllData.next_refresh;s.classList.add('show');} applyFilters();setCacheStatus('ok',new Date().toLocaleString()); var st=document.getElementById('cvt-status-txt');if(st)st.textContent='Up to date'; cvtToast(saved?'✅ '+cvtAllData.items_found+' items scanned & cached!':'⚠ Scanned but cache save failed'); }).catch(function(err){ console.error('Scan error:',err); if(!cvtAllData){var today=new Date();var fb=SEEDS.map(function(s,i){var sc=JSON.parse(JSON.stringify(s));sc.rank=i+1;sc.engagement_score=calcScore(sc.views,sc.likes,sc.shares,sc.saves,sc.comments);sc.thumbnail=null;return sc;});cvtAllData={date:today.toISOString().split('T')[0],scraper_version:'4.2.0',sources_used:['TikTok','Instagram','YouTube'],items_found:fb.length,top_trending_content:fb,summary:'Curated trends.'};updateStats(cvtAllData);applyFilters();} cvtToast('⚠ Partial scan — showing available data'); }).then(function(){ var btn=document.getElementById('cvt-scan-btn');if(btn){btn.disabled=false;btn.textContent='▶ Run Scan';} setTimeout(function(){var pw=document.getElementById('cvt-progress-wrap');if(pw)pw.classList.remove('active');},3000); }); }; function cvtInit(){ cvtIsAdmin=document.body.classList.contains('logged-in')&&!!document.getElementById('wpadminbar'); if(cvtIsAdmin){ var badge=document.getElementById('cvt-admin-badge');if(badge)badge.classList.add('visible'); var sb=document.getElementById('cvt-scan-btn');if(sb)sb.style.cssText='display:inline-flex !important;'; var eb=document.getElementById('cvt-export-btn');if(eb)eb.style.cssText='display:inline-flex !important;'; var h=document.getElementById('cvt-admin-hint'); if(h){h.textContent=YT_FEEDS.length+' YT channels + '+REDDIT_SUBS.length+' subreddits + '+BLOG_FEEDS.length+' blogs | Auto-refresh every 6h via WP Cron';h.style.display='block';} } cvtLoadCache().then(function(){ if(!cvtAllData&&cvtIsAdmin){var g=document.getElementById('cvt-grid');if(g)g.innerHTML='
🔥
No cache yet
Click Run Scan to pull from '+YT_FEEDS.length+' YT channels, '+REDDIT_SUBS.length+' Reddit subs and '+BLOG_FEEDS.length+' food blogs.
';} }); } cvtInit(); })();