diff --git a/src/app/actions.ts b/src/app/actions.ts index 6c5e2ae..b041ca8 100644 --- a/src/app/actions.ts +++ b/src/app/actions.ts @@ -41,6 +41,7 @@ export async function extractMetaData(url: string) { $('meta[name="description"]').attr("content") || "No description found"; const image = $('meta[property="og:image"]').attr("content") || null; + const h1 = $('h1').first().text().trim() || "No H1 found"; const faqData: FaqItem[] = []; $('script[type="application/ld+json"]').each((i, el) => { @@ -78,6 +79,7 @@ export async function extractMetaData(url: string) { title, description, image, + h1, faq: faqData.length > 0 ? faqData : null, }, }; diff --git a/src/components/meta-form.tsx b/src/components/meta-form.tsx index f7df065..6058402 100644 --- a/src/components/meta-form.tsx +++ b/src/components/meta-form.tsx @@ -17,6 +17,7 @@ interface MetaData { title: string; description: string; image?: string | null; + h1: string; faq?: { question: string; answer: string }[] | null; } @@ -28,15 +29,18 @@ export function MetaForm() { const [isEditingTitle, setIsEditingTitle] = useState(false); const [isEditingDescription, setIsEditingDescription] = useState(false); + const [isEditingH1, setIsEditingH1] = useState(false); const [editableTitle, setEditableTitle] = useState(""); const [editableDescription, setEditableDescription] = useState(""); + const [editableH1, setEditableH1] = useState(""); const [imageError, setImageError] = useState(false); useEffect(() => { if (metaData) { setEditableTitle(metaData.title); setEditableDescription(metaData.description); + setEditableH1(metaData.h1); setImageError(false); } }, [metaData]); @@ -48,6 +52,7 @@ export function MetaForm() { setMetaData(null); setIsEditingTitle(false); setIsEditingDescription(false); + setIsEditingH1(false); setImageError(false); const result = await extractMetaData(url); @@ -217,6 +222,55 @@ export function MetaForm() {
)} ++ The primary heading of the page, which should be unique. +
+ {isEditingH1 ? ( + setEditableH1(e.target.value)} + className="w-full" + placeholder="H1 Heading" + /> + ) : ( ++ {editableH1 || "Not found"} +
+ )} +