*{box-sizing:border-box;margin:0;padding:0}
:root{–bg:#0f172a;–card:#1e293b;–accent:#3b82f6;–accent2:#8b5cf6;–green:#10b981;–yellow:#f59e0b;–red:#ef4444;–text:#e2e8f0;–muted:#94a3b8}
body{font-family:’Segoe UI‘,system-ui,sans-serif;background:var(–bg);color:var(–text);padding:20px;line-height:1.6}
.wrap{max-width:1100px;margin:0 auto}
h1{font-size:1.6rem;margin:4px 0 16px;background:linear-gradient(90deg,var(–accent),var(–accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.sub{color:var(–muted);margin-bottom:20px;font-size:.9rem}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}
.stat{background:var(–card);border-radius:10px;padding:14px;text-align:center;border:1px solid #334155}
.stat .val{font-size:2rem;font-weight:700;background:linear-gradient(90deg,var(–accent),var(–accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.stat .lbl{font-size:.75rem;color:var(–muted);text-transform:uppercase;letter-spacing:.5px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:700px){.grid{grid-template-columns:1fr}}
.card{background:var(–card);border-radius:12px;padding:16px;border:1px solid #334155}
.card h3{font-size:.95rem;margin-bottom:12px;color:var(–muted)}
canvas{width:100%!important;height:200px!important}
.bar-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #1e293b;font-size:.85rem}
.bar-row:last-child{border-bottom:none}
.bar-lbl{flex:1;color:cbd5e1}
.bar-track{flex:2;height:8px;background:#334155;border-radius:4px;overflow:hidden}
.bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(–accent),var(–accent2))}
.bar-val{width:40px;text-align:right;color:var(–muted);font-size:.8rem}
📊 AI Content Performance Analyzer
Reviewed: June 4, 2026
Track engagement trends, traffic sources, and topic cluster performance across your DataGate content.
📈 Publishing Velocity (Last 10 Waves)
🔥 Topic Cluster Heatmap
🌐 Traffic Source Mix
⚡ Engagement by Content Type
// Inline chart rendering (no external deps)
function drawLineChart(canvasId,data,labels){
const c=document.getElementById(canvasId);
const ctx=c.getContext(‚2d‘);
const W=c.offsetWidth,H=200;
c.width=W;c.height=H;
const pad=30;
const x0=pad,y0=H-pad,x1=W-pad,y1=pad;
const maxY=Math.max(…data);
ctx.clearRect(0,0,W,H);
// grid
ctx.strokeStyle=’#334155′;ctx.lineWidth=1;
for(let i=0;i{
const x=x0+(x1-x0)*i/(data.length-1);
const y=y0-(y0-y0)*d/maxY;
i===0?ctx.moveTo(x,y):ctx.lineTo(x,y);
});
ctx.stroke();
// fill
ctx.lineTo(x1,y0);ctx.lineTo(x0,y0);ctx.closePath();
const grd=ctx.createLinearGradient(0,y1,0,y0);
grd.addColorStop(0,’rgba(59,130,246,.3)‘);grd.addColorStop(1,’rgba(59,130,246,0)‘);
ctx.fillStyle=grd;ctx.fill();
// dots
data.forEach((d,i)=>{
const x=x0+(x1-x0)*i/(data.length-1);
const y=y0-(y0-y0)*d/maxY;
ctx.beginPath();ctx.arc(x,y,4,0,Math.PI*2);ctx.fillStyle=’#3b82f6′;ctx.fill();
ctx.fillStyle=’#94a3b8′;ctx.font=’10px system-ui‘;
ctx.fillText(labels[i],x-10,H-8);
});
}
function drawPieChart(canvasId,slices){
const c=document.getElementById(canvasId);
const ctx=c.getContext(‚2d‘);
const W=c.offsetWidth,H=200;
c.width=W;c.height=H;
const cx=W/2,cy=H/2+10,r=Math.min(W,H)/2-40;
const colors=[‚#3b82f6′,’#8b5cf6′,’#10b981′,’#f59e0b‘,’#ef4444′,’#06b6d4′];
let a=-Math.PI/2;
const total=slices.reduce((s,x)=>s+x.v,0);
slices.forEach((s,i)=>{
const sweep=s.v/total*Math.PI*2;
ctx.beginPath();ctx.moveTo(cx,cy);ctx.arc(cx,cy,r,a,a+sweep);ctx.closePath();
ctx.fillStyle=colors[i%colors.length];ctx.fill();
a+=sweep;
});
// legend
let ly=10;
slices.forEach((s,i)=>{
ctx.fillStyle=colors[i%colors.length];ctx.fillRect(8,ly,10,10);
ctx.fillStyle=’#e2e8f0′;ctx.font=’11px system-ui‘;
ctx.fillText(s.l+‘ (‚+Math.round(s.v/total*100)+’%)‘,24,ly+9);
ly+=18;
});
}
function drawBarChart(canvasId,bars){
const c=document.getElementById(canvasId);
const ctx=c.getContext(‚2d‘);
const W=c.offsetWidth,H=200;
c.width=W;c.height=H;
const pad=30,x0=pad,y0=H-pad,x1=W-100,y1=pad;
const maxV=Math.max(…bars.map(b=>b.v));
ctx.clearRect(0,0,W,H);
const bw=(x1-x0)/bars.length-8;
bars.forEach((b,i)=>{
const x=x0+i*(bw+8)+4;
const bh=(b.v/maxV)*(y0-y1-20);
const grd=ctx.createLinearGradient(x,y0,x,y0-bh);
grd.addColorStop(0,’#8b5cf6′);grd.addColorStop(1,’#3b82f6′);
ctx.fillStyle=grd;
ctx.beginPath();ctx.roundRect(x,y0-bh,bw,bh,[4,4,0,0]);ctx.fill();
ctx.fillStyle=’#94a3b8′;ctx.font=’10px system-ui‘;
ctx.fillText(b.l,x+bw/2-15,y0+15);
ctx.fillStyle=’#e2e8f0′;ctx.font=’bold 11px system-ui‘;
ctx.fillText(b.v,x+bw/2-8,y0-bh-5);
});
}
drawLineChart(‚velocityChart‘,
[3,4,5,4,6,4,3,5,4,5],
[‚W142′,’W143′,’W144′,’W145′,’W146′,’W147′,’W148′,’W149′,’W150′,’W151‘]
);
drawPieChart(‚trafficChart‘,
[{l:’Organic Search‘,v:35},{l:’Direct‘,v:25},{l:’Social Media‘,v:20},{l:’Referral‘,v:12},{l:’Email‘,v:8}]
);
drawBarChart(‚engagementChart‘,
[{l:’Deep Guides‘,v:8.2},{l:’Tools‘,v:7.5},{l:’Analysis‘,v:6.8},{l:’News‘,v:5.1},{l:’Tutorials‘,v:7.9}]
);
// Cluster bars
const clusters=[
{l:’AI Agents & Orchestration‘,v:95,c:’#3b82f6′},
{l:’AI Infrastructure‘,v:88,c:’#8b5cf6′},
{l:’Decision Tools‘,v:82,c:’#10b981′},
{l:’Enterprise AI‘,v:78,c:’#f59e0b‘},
{l:’AI Safety & Governance‘,v:71,c:’#06b6d4′},
{l:’Industry Applications‘,v:65,c:’#ec4899′},
{l:’MLOps & Engineering‘,v:60,c:’#f97316′},
{l:’Business Strategy‘,v:55,c:’#84cc16′},
];
const clusterDiv=document.getElementById(‚clusterBars‘);
clusterDiv.innerHTML=clusters.map(c=>`
`).join(“);
