const PRISM_API_KEY = 'prism_jrfvXGHXOMscbgOD7NrcMgO5K2oQ4OqZ';
const PRISM_ENDPOINT = 'https://prism.trakkr.ai';
const PRISM_TIMEOUT = 1000; // ms
// Crawler patterns to optimize for (customizable)
const AI_CRAWLERS = [
'gptbot',
'chatgpt-user',
'oai-searchbot',
'claudebot',
'claude-user',
'claude-searchbot',
'perplexitybot',
'meta-externalagent',
'google-extended',
'cohere-ai',
'applebot-extended',
'amazonbot',
'baiduspider',
'bytespider'
];
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
// Quick bypass for non-HTML requests
if (url.pathname.match(/\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$/i)) {
return fetch(request);
}
// Check if AI crawler
const ua = (request.headers.get('user-agent') || '').toLowerCase();
const isAICrawler = AI_CRAWLERS.some(bot => ua.includes(bot));
if (!isAICrawler) {
return fetch(request);
}
// Detect crawler type
const crawlerType = AI_CRAWLERS.find(bot => ua.includes(bot)) || 'unknown';
try {
// Call Prism API with tight timeout
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), PRISM_TIMEOUT);
const prismResponse = await fetch(PRISM_ENDPOINT, {
method: 'POST',
headers: {
'X-API-Key': PRISM_API_KEY,
'X-Crawler-UA': ua.substring(0, 200),
'X-Target-URL': url.toString(),
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: url.toString(),
pathname: url.pathname,
crawler: crawlerType
}),
signal: controller.signal
});
clearTimeout(timeoutId);
// Handle rate limiting
if (prismResponse.status === 429) {
console.log('Prism limit reached');
return fetch(request);
}
// Handle successful optimization
if (prismResponse.ok) {
const data = await prismResponse.json();
if (data.optimizedHTML) {
return new Response(data.optimizedHTML, {
status: 200,
headers: {
'Content-Type': 'text/html;charset=UTF-8',
'X-Prism-Optimized': 'true',
'X-Prism-Cache': data.cache || 'MISS'
}
});
}
}
} catch (error) {
// Timeout or error - serve original immediately
console.error('Prism error:', error.message);
}
// Default: serve original content
return fetch(request);
}
Cut Waste Costs by 60% in 90 Days
Scrapp connects your upstream and downstream waste data — so you can spot where materials, money, and compliance risk are slipping through the cracks.
Track costs and impact at the source, fix issues before they hit the bin, and hit your zero-waste targets without spreadsheets, stress, or extra headcount.