게시물 OG 이미지 설정 추가

This commit is contained in:
2026-05-03 10:10:09 +09:00
parent fc5f41b9cc
commit 8c5ccc94ec
14 changed files with 157 additions and 14 deletions

View File

@@ -25,6 +25,7 @@ const mapPostRow = (row) => ({
seoDescription: row.seo_description || '',
canonicalUrl: row.canonical_url || '',
noindex: Boolean(row.noindex),
ogImage: row.og_image || null,
status: row.status,
publishedAt: row.published_at ? row.published_at.toISOString() : null,
createdAt: row.created_at.toISOString(),
@@ -249,6 +250,7 @@ export const createAdminPost = async (input) => {
seo_description,
canonical_url,
noindex,
og_image,
status,
published_at
)
@@ -262,6 +264,7 @@ export const createAdminPost = async (input) => {
${input.seoDescription},
${input.canonicalUrl},
${input.noindex},
${input.ogImage},
${input.status},
${input.publishedAt}
)
@@ -302,6 +305,7 @@ export const updateAdminPost = async (id, input) => {
seo_description = ${input.seoDescription},
canonical_url = ${input.canonicalUrl},
noindex = ${input.noindex},
og_image = ${input.ogImage},
status = ${input.status},
published_at = ${input.publishedAt},
updated_at = now()

View File

@@ -11,6 +11,7 @@ export const adminPostInputSchema = z.object({
seoDescription: z.string().trim().max(180).default(''),
canonicalUrl: z.string().trim().url().or(z.literal('')).default(''),
noindex: z.boolean().default(false),
ogImage: z.string().trim().nullable().default(null),
status: postStatusSchema.default('draft'),
publishedAt: z.string().datetime().nullable().default(null),
tags: z.array(z.string().trim().min(1)).default([])

View File

@@ -13,6 +13,7 @@ export const postSchema = z.object({
seoDescription: z.string().default(''),
canonicalUrl: z.string().default(''),
noindex: z.boolean().default(false),
ogImage: z.string().nullable().default(null),
status: postStatusSchema,
publishedAt: z.string().nullable().default(null),
createdAt: z.string(),

View File

@@ -203,6 +203,13 @@ const getContentMediaUsage = (contentItem, url) => {
})
}
if (contentItem.ogImage === url) {
usages.push({
location: 'ogImage',
label: 'OG 이미지'
})
}
if (contentItem.content?.includes(url)) {
usages.push({
location: 'content',