Руководство 2: Статьи и организация контента
Изображения, теги, оглавление, поиск и публикация ссылок.
На этой странице
Создать статью
npm run new-post -- my-first-post
# --locales en,pt-br
Только русский: npm run new-post – my-first-post –locales ru. Slug содержит строчные латинские буквы, цифры и дефисы. src/content/blog/ru/my-first-post.md создаёт /ru/blog/my-first-post/. Существующие файлы сохраняются. –locales создаёт файлы, но не включает язык.
Переводы используют одинаковый slug. Если перевода нет, меню ведёт в список статей выбранного языка; hreflang не выдаёт список за перевод статьи.
Заполнить frontmatter
---
title: 'My first post'
description: 'My notes and projects'
pubDate: '2026-10-03'
tags: ['astro', 'notes']
---
Обязательны title, description и pubDate. subtitle, updatedDate и author необязательны; по умолчанию используется автор сайта. Сортировка идёт по pubDate. Фильтра черновиков и отложенной публикации нет: draft: true и будущие даты ничего не скрывают. Храните незавершённые тексты вне src/content/blog/.
heroImage: ./cover.jpg берёт изображение рядом со статьёй. При наличии файлов в src/assets/blog/default-covers/ команда выбирает постоянную обложку. Загрузки изображений из сети нет. Время чтения и показатели приблизительные. readMinutes, wordCount, tokenCount, aiLatencyMs и aiConfidence позволяют задать свои значения, не подключая сервис ИИ.
Оглавление и теги
Используйте заголовки Markdown ## и ###. Оглавление появляется справа на широком экране и перед текстом на узком. Без заголовков оно скрыто. toc: false отключает его для статьи; toc: true имеет приоритет над настройкой сайта. Заголовки внутри компонентов MDX и HTML автоматически не собираются.
tags: [‘astro’, ‘notes’] создаёт страницы в /ru/tags/. Регистр значим; пробелы по краям и повторы удаляются. Для нелатинских названий используются кодированные URL. Переименование меняет ссылку. theme.tags.enabled: false отключает ссылки и страницы тегов.
Изображения и код
Используйте  либо , добавив соответствующий файл. Обычные изображения открываются по клику или Enter/Пробелу, закрываются Escape, кнопкой или фоном. Обложки и изображения внутри ссылок и кнопок исключены. Просмотр использует выбранный браузером файл, не загружая увеличенный оригинал.
Блоки кода Markdown с тройными обратными кавычками получают кнопку копирования. Отступы и переносы сохраняются. Нужен HTTPS или localhost; при ошибке копируйте вручную.
Поиск
Выполните npm run build и npm run preview. Поиск работает по заголовкам и тексту текущего языка. В dev показывается только уведомление. search: false исключает статью из индекса, но не скрывает её из списков или по прямой ссылке. theme.search.enabled: false отключает поиск и индекс. После изменения статей нужна сборка.
Изображения для ссылок
Без ogImage сборка создаёт PNG 1200×630 с заголовком, автором и названием сайта. heroImage остаётся отдельной обложкой. Свой файл: ogImage: ./share.png либо /images/share.png; HTTPS также поддерживается. Отсутствующий локальный файл вызывает ошибку; внешний зависит от сервиса.
Автоматические карточки используют встроенный фон с дождём кода, терминалами и неоновой сетью, сохраняя ваше название сайта, заголовок и автора. Небольшая подпись Theme by Anglefeint справа внизу зависит от theme.footer.showCredits (по умолчанию true); false скрывает подписи и в подвале, и на изображении. После изменения пересоберите и опубликуйте сайт. Собственные файлы ogImage не изменяются. Фон работает офлайн и не добавляет JavaScript в браузер.
Явный ogImage имеет приоритет. theme.socialImage.enabled: false отключает только генерацию; иначе используется обложка или стандартное изображение. Проверяйте og:image в HTML и dist/_social/. Платформы могут кешировать старые превью. Не гарантируются все эмодзи и системы письма.
Отдельные страницы
npm run new-page – projects –theme cyber создаёт src/pages/[lang]/projects.astro. Отредактируйте содержимое самостоятельно; перевод и пункт навигации не добавляются. Темы: base, ai, cyber, hacker и matrix. Допускаются пути вроде projects/labs. Если файл существует, команда завершается ошибкой.