QR-master/src/lib/indexnow.ts

85 lines
2.9 KiB
TypeScript

import axios from 'axios';
import dotenv from 'dotenv';
import { blogPostList } from '../lib/blog-data';
dotenv.config();
const INDEXNOW_ENDPOINT = 'https://api.indexnow.org/indexnow';
const HOST = 'www.qrmaster.net';
// You need to generate a key from https://www.bing.com/indexnow and place it in your public folder
// For now, we'll assume a key exists or is provided via env
const KEY = process.env.INDEXNOW_KEY || 'bb6dfaacf1ed41a880281c426c54ed7c';
const KEY_LOCATION = `https://${HOST}/${KEY}.txt`;
export async function submitToIndexNow(urls: string[]) {
try {
const payload = {
host: HOST,
key: KEY,
keyLocation: KEY_LOCATION,
urlList: urls,
};
console.log(`Submitting ${urls.length} URLs to IndexNow...`);
const response = await axios.post(INDEXNOW_ENDPOINT, payload, {
headers: {
'Content-Type': 'application/json',
},
});
if (response.status === 200 || response.status === 202) {
console.log('✅ Successfully submitted URLs to IndexNow.');
} else {
console.error(`⚠️ IndexNow submission returned status: ${response.status}`);
}
} catch (error) {
if (axios.isAxiosError(error)) {
console.error('❌ Error submitting to IndexNow:', error.message);
console.error('Response data:', error.response?.data);
} else {
console.error('❌ Unknown error submitting to IndexNow:', error);
}
}
}
// Function to gather all indexable URLs
export function getAllIndexableUrls(): string[] {
const baseUrl = `https://${HOST}`;
// Free tools
const freeTools = [
'barcode-generator', // Added as per request
'url-qr-code', 'vcard-qr-code', 'text-qr-code', 'email-qr-code', 'sms-qr-code',
'wifi-qr-code', 'crypto-qr-code', 'event-qr-code', 'facebook-qr-code',
'instagram-qr-code', 'twitter-qr-code', 'youtube-qr-code', 'whatsapp-qr-code',
'tiktok-qr-code', 'geolocation-qr-code', 'call-qr-code-generator', 'paypal-qr-code',
'zoom-qr-code', 'teams-qr-code',
].map(slug => `${baseUrl}/tools/${slug}`);
// Blog posts
const blogPages = blogPostList.map(post => `${baseUrl}/blog/${post.slug}`);
// Main pages
const mainPages = [
baseUrl,
`${baseUrl}/qr-code-erstellen`,
`${baseUrl}/qr-code-tracking`,
`${baseUrl}/pricing`,
`${baseUrl}/bulk-qr-code-generator`,
`${baseUrl}/dynamic-qr-code-generator`,
`${baseUrl}/reprint-calculator`,
`${baseUrl}/faq`,
`${baseUrl}/blog`,
`${baseUrl}/signup`,
`${baseUrl}/login`,
];
return [...mainPages, ...freeTools, ...blogPages];
}
// If run directly
if (require.main === module) {
const urls = getAllIndexableUrls();
submitToIndexNow(urls);
}