feat: SEO backend output (2/4)

This commit is contained in:
Florian Sylvain committed 2026-10-15 21:48:55 +02:00
1 parent 0eb46b0d74
commit eb9876fde3
32 files changed
+3859 -65

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
package article
const (
SEOStatusReady = "ready"
SEOStatusSuggestions = "suggestions"
SEOStatusHidden = "hidden"
SEOTitleMaxRunes = 60
SEODescriptionMinRunes = 70
SEODescriptionMaxRunes = 160
SEOSlugMaxRunes = 75
SEOHeadingMinTextRunes = 1000
SEOShortBodyRunes = 300
SEOFieldTitle = "seo_title"
SEOFieldDescription = "seo_description"
SEOFieldCoverAlt = "cover_image_alt"
SEOFieldCoverID = "cover_image_id"
SEOFieldSlug = "slug"
SEOFieldAuthors = "author_ids"
SEOFieldBody = "body"
)
type SEOSuggestion struct {
Code string `json:"code"`
Field string `json:"field"`
Params map[string]int `json:"params"`
}
type SEOAssessment struct {
Status string `json:"status"`
Suggestions []SEOSuggestion `json:"suggestions"`
}
type SEOSummary struct {
Status string
Suggestions int
}
func (a SEOAssessment) Summary() SEOSummary {
return SEOSummary{Status: a.Status, Suggestions: len(a.Suggestions)}
}
type SEOSlugCheck struct {
Available bool `json:"available"`
Suggestion *string `json:"suggestion"`
}
type SEOCheck struct {
Status string `json:"status"`
Suggestions []SEOSuggestion `json:"suggestions"`
Slug SEOSlugCheck `json:"slug"`
}