seo: add llms.txt, update robots.txt, refresh sitemap and improve image alt tags
This commit is contained in:
76
apply-all-replacements.js
Normal file
76
apply-all-replacements.js
Normal file
@@ -0,0 +1,76 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const CLOUD_BASE = 'https://res.cloudinary.com/du7xohbct/image/upload/f_auto,q_auto';
|
||||
|
||||
// Mappings from both sources
|
||||
const replacements1 = {
|
||||
'images/muglasurcukursufoto/araba1.JPG': `${CLOUD_BASE}/v1777917585/muglasurucukursu/araba1.jpg`,
|
||||
'images/muglasurcukursufoto/arababakim1.JPG': `${CLOUD_BASE}/v1777917588/muglasurucukursu/arababakim1.jpg`,
|
||||
'images/muglasurcukursufoto/arababakim2.JPG': `${CLOUD_BASE}/v1777917591/muglasurucukursu/arababakim2.jpg`,
|
||||
'images/muglasurcukursufoto/arababakim3.JPG': `${CLOUD_BASE}/v1777917594/muglasurucukursu/arababakim3.jpg`,
|
||||
'images/muglasurcukursufoto/arababakim4.JPG': `${CLOUD_BASE}/v1777917597/muglasurucukursu/arababakim4.jpg`,
|
||||
'images/muglasurcukursufoto/arababakim5.JPG': `${CLOUD_BASE}/v1777917600/muglasurucukursu/arababakim5.jpg`,
|
||||
'images/muglasurcukursufoto/arabadikey1.JPG': `${CLOUD_BASE}/v1777917604/muglasurucukursu/arabadikey1.jpg`,
|
||||
'images/muglasurcukursufoto/arabadikey2.JPG': `${CLOUD_BASE}/v1777917607/muglasurucukursu/arabadikey2.jpg`,
|
||||
'images/muglasurcukursufoto/arabagenel1.JPG': `${CLOUD_BASE}/v1777917612/muglasurucukursu/arabagenel1.jpg`,
|
||||
'images/muglasurcukursufoto/arabagenel2.JPG': `${CLOUD_BASE}/v1777917616/muglasurucukursu/arabagenel2.jpg`,
|
||||
'images/muglasurcukursufoto/arabaparkdikey.JPG': `${CLOUD_BASE}/v1777917619/muglasurucukursu/arabaparkdikey.jpg`,
|
||||
'images/muglasurcukursufoto/arabaparketme1.JPG': `${CLOUD_BASE}/v1777917622/muglasurucukursu/arabaparketme1.jpg`,
|
||||
'images/muglasurcukursufoto/arabasurus1.JPG': `${CLOUD_BASE}/v1777917624/muglasurucukursu/arabasurus1.jpg`,
|
||||
'images/muglasurcukursufoto/logo.JPG': `${CLOUD_BASE}/v1777917625/muglasurucukursu/logo.jpg`,
|
||||
'images/muglasurcukursufoto/motor.JPG': `${CLOUD_BASE}/v1777917627/muglasurucukursu/motor.jpg`,
|
||||
'images/muglasurcukursufoto/motor1.JPG': `${CLOUD_BASE}/v1777917630/muglasurucukursu/motor1.jpg`,
|
||||
'images/muglasurcukursufoto/motor2.JPG': `${CLOUD_BASE}/v1777917633/muglasurucukursu/motor2.jpg`,
|
||||
'images/muglasurcukursufoto/motor3.JPG': `${CLOUD_BASE}/v1777917635/muglasurucukursu/motor3.jpg`,
|
||||
'images/muglasurcukursufoto/motor4.JPG': `${CLOUD_BASE}/v1777917638/muglasurucukursu/motor4.jpg`,
|
||||
'images/muglasurcukursufoto/motor5.JPG': `${CLOUD_BASE}/v1777917641/muglasurucukursu/motor5.jpg`,
|
||||
'images/muglasurcukursufoto/motorhoca.JPG': `${CLOUD_BASE}/v1777917643/muglasurucukursu/motorhoca.jpg`,
|
||||
'images/muglasurcukursufoto/motorhocasurus1.JPG': `${CLOUD_BASE}/v1777917645/muglasurucukursu/motorhocasurus1.jpg`,
|
||||
'images/muglasurcukursufoto/motorsade1.JPG': `${CLOUD_BASE}/v1777917648/muglasurucukursu/motorsade1.jpg`,
|
||||
'images/muglasurcukursufoto/tirdikey.JPG': `${CLOUD_BASE}/v1777917651/muglasurucukursu/tirdikey.jpg`,
|
||||
'images/muglasurcukursufoto/tirgenis.JPG': `${CLOUD_BASE}/v1777917654/muglasurucukursu/tirgenis.jpg`,
|
||||
};
|
||||
|
||||
const urls2 = JSON.parse(fs.readFileSync(path.join(__dirname, 'cloudinary-urls-images.json'), 'utf-8'));
|
||||
const replacements2 = {};
|
||||
for (const [filename, cloudUrl] of Object.entries(urls2)) {
|
||||
replacements2[`images/${filename}`] = cloudUrl.replace('/image/upload/', '/image/upload/f_auto,q_auto/');
|
||||
}
|
||||
|
||||
const allReplacements = { ...replacements1, ...replacements2 };
|
||||
|
||||
const FILES = ['index.html', 'about.html', 'contact.html', 'courses.html', 'services.html', 'team.html', 'css/custom.css'];
|
||||
|
||||
let totalReplacements = 0;
|
||||
|
||||
for (const file of FILES) {
|
||||
const filePath = path.join(__dirname, file);
|
||||
if (!fs.existsSync(filePath)) continue;
|
||||
|
||||
let content = fs.readFileSync(filePath, 'utf-8');
|
||||
let fileCount = 0;
|
||||
|
||||
for (const [localPath, cloudUrl] of Object.entries(allReplacements)) {
|
||||
// Escape for regex and handle possible ../ or ./ prefixes
|
||||
// We want to match (maybe ../ or ./ or nothing) + localPath
|
||||
const escapedLocalPath = localPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
const regex = new RegExp(`(\\.\\.\\/|\\.\\/)?${escapedLocalPath}`, 'g');
|
||||
|
||||
const matches = content.match(regex);
|
||||
if (matches) {
|
||||
fileCount += matches.length;
|
||||
content = content.replace(regex, cloudUrl);
|
||||
}
|
||||
}
|
||||
|
||||
if (fileCount > 0) {
|
||||
fs.writeFileSync(filePath, content);
|
||||
console.log(`✅ ${file}: ${fileCount} yol güncellendi`);
|
||||
totalReplacements += fileCount;
|
||||
} else {
|
||||
console.log(`⏭️ ${file}: değişiklik yok`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`\n🎉 Toplam ${totalReplacements} resim yolu güncellendi!`);
|
||||
Reference in New Issue
Block a user