neurosite: GEO-контракт (ai.txt, summary/faq/service.json, sitemap-llm.xml)
This commit is contained in:
1 parent
33aa24c100
commit
6e2a354397
5 files changed
+229
No files matched your search
@@ -0,0 +1,26 @@
|
|||||||
|
// GEO-контракт: /.well-known/ai.txt — разрешения для AI-краулеров
|
||||||
|
export const prerender = true;
|
||||||
|
|
||||||
|
const content = `# AI.txt for нейросети.рус
|
||||||
|
# Витрина реальных результатов локальных open-source нейросетей
|
||||||
|
# Эндпоинты GEO-контракта, доступные AI-краулерам
|
||||||
|
|
||||||
|
User-agent: *
|
||||||
|
Allow: /ai/summary.json
|
||||||
|
Allow: /ai/faq.json
|
||||||
|
Allow: /ai/service.json
|
||||||
|
Allow: /sitemap-llm.xml
|
||||||
|
Allow: /sitemap.xml
|
||||||
|
Allow: /llms.txt
|
||||||
|
|
||||||
|
# Last updated: 2026-09-07
|
||||||
|
`;
|
||||||
|
|
||||||
|
export function GET() {
|
||||||
|
return new Response(content, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'text/plain; charset=utf-8',
|
||||||
|
'Cache-Control': 'public, max-age=86400, stale-while-revalidate=604800',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
// GEO-контракт: /ai/faq.json — частые вопросы для AI-движков
|
||||||
|
export const prerender = true;
|
||||||
|
|
||||||
|
const faq = {
|
||||||
|
version: '1.0',
|
||||||
|
lastModified: '2026-09-07T00:00:00Z',
|
||||||
|
faqs: [
|
||||||
|
{
|
||||||
|
question: 'Какая локальная нейросеть лучше всего генерирует изображения?',
|
||||||
|
answer: 'Flux.1 от Black Forest Labs — лучшая локальная модель для графики по качеству. Для скорости используйте Flux.1 Schnell (нужно 8 ГБ VRAM), для максимального качества — Flux.1 Dev (12 ГБ VRAM). Stable Diffusion 3.5 — быстрее, но ниже качество. Обе запускаются через ComfyUI.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Можно ли сгенерировать песню с вокалом на русском локально?',
|
||||||
|
answer: 'Да, через Ace Studio (ACE-Step 1.5 XL). Модель генерирует треки с вокалом на русском, WAV 48k, полностью локально и бесплатно. Требует ~19 ГБ VRAM. Это приватная альтернатива Suno и Udio, которые работают в облаке.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Какая нейросеть лучше для текста: Llama 4 или Qwen 3?',
|
||||||
|
answer: 'Llama 4 лучше пишет маркетинговые и творческие тексты, Qwen 3 — код и математику. Обе запускаются через Ollama. Для 12 ГБ VRAM подойдут Llama 4 Scout и Qwen3-30B-A3B. Полное сравнение — в разделе /compare/.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Сколько VRAM нужно для локальной нейросети?',
|
||||||
|
answer: 'Для LLM: 8 ГБ — модели до 8B (Qwen3-8B), 12 ГБ — до 30B (Qwen3-30B-A3B, Llama 4 Scout). Для изображений: Flux Schnell — 8 ГБ, Flux Dev — 12 ГБ. Для музыки Ace Studio XL — 19 ГБ. Подробности в гайдах /guide/.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Локальные нейросети бесплатны?',
|
||||||
|
answer: 'Да. Все модели на сайте — open-source и бесплатны для локального запуска (проверяйте лицензии: Flux Community, Llama 4 Community, Qwen3 License). Вы платите только за железо и электричество.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Чем нейросети.рус отличается от каталогов нейросетей?',
|
||||||
|
answer: 'Мы не просто перечисляем сервисы, а показываем реальные сгенерированные результаты локальных open-source моделей: промпт → что выдала модель → разбор сильных и слабых сторон. Это честные авторские тесты на русском.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export function GET() {
|
||||||
|
return new Response(JSON.stringify(faq), {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8',
|
||||||
|
'Cache-Control': 'public, max-age=86400, stale-while-revalidate=604800',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
// GEO-контракт: /ai/service.json — возможности сайта для AI-движков
|
||||||
|
export const prerender = true;
|
||||||
|
|
||||||
|
const service = {
|
||||||
|
version: '1.0',
|
||||||
|
lastModified: '2026-09-07T00:00:00Z',
|
||||||
|
service: {
|
||||||
|
name: 'нейросети.рус — витрина локальных open-source нейросетей',
|
||||||
|
type: 'Content portal / showcase',
|
||||||
|
description: 'Сайт публикует реальные сгенерированные результаты локальных open-source моделей с честным разбором: что получилось, что подвело, сколько VRAM нужно, как повторить.',
|
||||||
|
audience: 'Разработчики, креаторы, музыканты, SMB — все, кто хочет использовать нейросети локально, бесплатно и приватно.',
|
||||||
|
},
|
||||||
|
features: [
|
||||||
|
{
|
||||||
|
name: 'Примеры результатов',
|
||||||
|
path: '/examples/',
|
||||||
|
description: 'Сгенерированные тексты, коды, изображения и треки с разбором промптов и выводами.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Каталог моделей',
|
||||||
|
path: '/models/',
|
||||||
|
description: 'Open-source модели (Llama 4, Qwen 3, Flux, SD 3.5, Ace Studio) с лицензиями, VRAM и ссылками на Hugging Face.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Сравнения',
|
||||||
|
path: '/compare/',
|
||||||
|
description: 'Честные сравнения на реальных результатах: Llama 4 vs Qwen 3, Flux vs SD 3.5, Ace Studio vs Suno.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Гайды по запуску',
|
||||||
|
path: '/guide/',
|
||||||
|
description: 'Пошаговые инструкции: как запустить Flux локально, как сгенерировать песню через Ace Studio.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Музыкальные нейросети',
|
||||||
|
path: '/ace-studio/',
|
||||||
|
description: 'Генерация треков с вокалом на русском через Ace Studio — уникальный раздел, которого нет у конкурентов.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Новости',
|
||||||
|
path: '/news/',
|
||||||
|
description: 'Оперативные новости мира локальных моделей и open-source AI.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export function GET() {
|
||||||
|
return new Response(JSON.stringify(service), {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8',
|
||||||
|
'Cache-Control': 'public, max-age=86400, stale-while-revalidate=604800',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
// GEO-контракт: /ai/summary.json — саммари сайта для AI-движков
|
||||||
|
export const prerender = true;
|
||||||
|
|
||||||
|
const summary = {
|
||||||
|
version: '1.0',
|
||||||
|
lastModified: '2026-09-07T00:00:00Z',
|
||||||
|
summary: 'нейросети.рус — витрина реальных сгенерированных результатов локальных open-source нейросетей: текст, графика, аудио, видео. Не каталог облачных сервисов, а честные авторские тесты того, что модели реально умеют: промпт → результат → разбор.',
|
||||||
|
keyFeatures: [
|
||||||
|
'Реальные сгенерированные результаты локальных моделей (Llama 4, Qwen 3, Flux, Stable Diffusion, Ace Studio)',
|
||||||
|
'Каталог open-source моделей с лицензиями и системными требованиями',
|
||||||
|
'Сравнения моделей на реальных примерах',
|
||||||
|
'Гайды по локальному запуску (VRAM, установка, настройка)',
|
||||||
|
'Музыкальные нейросети: Ace Studio, генерация песен с вокалом на русском',
|
||||||
|
],
|
||||||
|
targetAudience: [
|
||||||
|
'Разработчики, пробующие локальные модели',
|
||||||
|
'Креаторы, ищущие бесплатные/приватные альтернативы облаку',
|
||||||
|
'Музыканты, генерирующие треки с вокалом',
|
||||||
|
'SMB и маркетологи, автоматизирующие контент',
|
||||||
|
],
|
||||||
|
primaryUseCases: [
|
||||||
|
'Сгенерировать текст/код локально без облака',
|
||||||
|
'Сгенерировать изображение бесплатно (Flux, SD)',
|
||||||
|
'Сгенерировать песню с вокалом на русском (Ace Studio)',
|
||||||
|
'Выбрать модель по задаче и системным требованиям',
|
||||||
|
'Сравнить Llama 4 vs Qwen 3, Flux vs SD 3.5, Ace Studio vs Suno',
|
||||||
|
],
|
||||||
|
relatedEndpoints: [
|
||||||
|
{ path: '/sitemap-llm.xml', description: 'Полный список страниц' },
|
||||||
|
{ path: '/sitemap.xml', description: 'Стандартный sitemap' },
|
||||||
|
{ path: '/llms.txt', description: 'Список разделов для LLM' },
|
||||||
|
{ path: '/ai/service.json', description: 'Возможности сайта' },
|
||||||
|
{ path: '/ai/faq.json', description: 'Частые вопросы' },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export function GET() {
|
||||||
|
return new Response(JSON.stringify(summary), {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json; charset=utf-8',
|
||||||
|
'Cache-Control': 'public, max-age=86400, stale-while-revalidate=604800',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
// GEO-контракт: /sitemap-llm.xml — LLM-оптимизированный sitemap
|
||||||
|
import { getCollection } from 'astro:content';
|
||||||
|
|
||||||
|
export const prerender = true;
|
||||||
|
const BASE = 'https://нейросети.рус';
|
||||||
|
|
||||||
|
function iso(dateStr) {
|
||||||
|
if (!dateStr) return '2026-09-07';
|
||||||
|
const d = typeof dateStr === 'string' ? new Date(dateStr) : dateStr;
|
||||||
|
return isNaN(d) ? '2026-09-07' : d.toISOString().split('T')[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Статичные страницы + все элементы коллекций
|
||||||
|
export async function GET() {
|
||||||
|
const pages: { url: string; priority: string; changefreq: string; lastmod?: string }[] = [
|
||||||
|
{ url: '/', priority: '1.0', changefreq: 'daily' },
|
||||||
|
{ url: '/examples/', priority: '0.9', changefreq: 'daily' },
|
||||||
|
{ url: '/models/', priority: '0.9', changefreq: 'weekly' },
|
||||||
|
{ url: '/compare/', priority: '0.8', changefreq: 'weekly' },
|
||||||
|
{ url: '/news/', priority: '0.8', changefreq: 'daily' },
|
||||||
|
{ url: '/guide/', priority: '0.8', changefreq: 'weekly' },
|
||||||
|
{ url: '/ace-studio/', priority: '0.8', changefreq: 'weekly' },
|
||||||
|
];
|
||||||
|
|
||||||
|
const collections = ['examples', 'models', 'compare', 'news', 'guide', 'aceStudio'];
|
||||||
|
for (const name of collections) {
|
||||||
|
try {
|
||||||
|
const items = await getCollection(name);
|
||||||
|
const slug = name === 'aceStudio' ? 'ace-studio' : name;
|
||||||
|
for (const item of items) {
|
||||||
|
pages.push({
|
||||||
|
url: `/${slug}/${item.slug}/`,
|
||||||
|
priority: '0.7',
|
||||||
|
changefreq: 'monthly',
|
||||||
|
lastmod: iso(item.data.date),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (e) { /* пустая коллекция */ }
|
||||||
|
}
|
||||||
|
|
||||||
|
// GEO-эндпоинты тоже включаем для LLM-краулеров
|
||||||
|
const geoEndpoints = [
|
||||||
|
'/ai/summary.json', '/ai/faq.json', '/ai/service.json',
|
||||||
|
'/.well-known/ai.txt', '/llms.txt',
|
||||||
|
];
|
||||||
|
for (const ep of geoEndpoints) {
|
||||||
|
pages.push({ url: ep, priority: '0.3', changefreq: 'monthly' });
|
||||||
|
}
|
||||||
|
|
||||||
|
const xml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
${pages.map(p =>
|
||||||
|
` <url><loc>${BASE}${p.url}</loc><lastmod>${p.lastmod || '2026-09-07'}</lastmod><changefreq>${p.changefreq}</changefreq><priority>${p.priority}</priority></url>`
|
||||||
|
).join('\n')}
|
||||||
|
</urlset>`;
|
||||||
|
|
||||||
|
return new Response(xml, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/xml; charset=utf-8',
|
||||||
|
'Cache-Control': 'public, max-age=86400, stale-while-revalidate=604800',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in new issue
Block a user