astroで記事を下書きにしていても公開されてしまうときの対処方。

一例です。使用しているテーマによって異なることがあります。

/* config.ts */

const blog = defineCollection({
	schema: z.object({
		draft: z.boolean(), // ←これを追加
		title: z.string(),
		excerpt: z.string().optional(),
		publishDate: z.coerce.date(),
		updatedDate: z.coerce.date().optional(),
		isFeatured: z.boolean().default(false),
		tags: z.array(z.string()).default([]),
		seo: seoSchema.optional()
	})
});
/* 各astroファイルやrss.xml.js */

const posts = (await getCollection('blog')).sort(sortItemsByDateDesc);



const posts = (await getCollection('blog', ({ data }) => {
  return data.draft !== true;
})).sort(sortItemsByDateDesc);

記事詳細ページで使われるastroファイルでも上記コードで対応できます。npm run buildしたときも下書きページは出力されません。
しかし、プレビュー時でも非表示になってしまうのを、なんとかできないものでしょうか。