# @seoTitle
@seoDescription
Keywords: @seoKeywords

@{ var shellClass = ViewData["ShellClass"] as string ?? string.Empty; var isMarketingPage = shellClass.Contains("marketing-shell", StringComparison.OrdinalIgnoreCase); var defaultTitle = $"{ViewData["Title"]} - PlotDirector"; var seoTitle = isMarketingPage && ViewData["SeoTitle"] is string seoTitleValue ? seoTitleValue : defaultTitle; var seoDescription = isMarketingPage && ViewData["SeoDescription"] is string seoDescriptionValue ? seoDescriptionValue : null; var canonicalUrl = isMarketingPage && ViewData["CanonicalUrl"] is string canonicalUrlValue ? canonicalUrlValue : null; var seoKeywords = isMarketingPage && ViewData["SeoKeywords"] is string seoKeywordsValue ? seoKeywordsValue : null; var structuredData = isMarketingPage && ViewData["StructuredData"] is IEnumerable<string> structuredDataValues ? structuredDataValues : Array.Empty<string>(); const string ogImageUrl = "https://plotdirector.com/og-image.png"; } @if (isMarketingPage) { @if (!string.IsNullOrWhiteSpace(seoDescription)) { } @if (!string.IsNullOrWhiteSpace(seoKeywords)) { } @if (!string.IsNullOrWhiteSpace(canonicalUrl)) { } @if (!string.IsNullOrWhiteSpace(seoDescription)) { } @if (!string.IsNullOrWhiteSpace(canonicalUrl)) { } @if (!string.IsNullOrWhiteSpace(seoDescription)) { } @foreach (var jsonLd in structuredData) { @Html.Raw("
") } }
@if (TempData["ArchiveMessage"] is string archiveMessage) {
@archiveMessage
} @if (TempData["ArchiveError"] is string archiveError) {
@archiveError
} @if (TempData["ImportMessage"] is string importMessage) {
@importMessage
} @RenderBody()
Help

Choose More from a help popover to open the full guide.

@if ((ViewData["ShellClass"] as string)?.Contains("marketing-shell", StringComparison.OrdinalIgnoreCase) == true) {
}

## Confirm action

Type DELETE to continue
@await RenderSectionAsync("Scripts", required: false)