From cade4009dcb559a6a06907893a266a3429ebc440 Mon Sep 17 00:00:00 2001
From: "[dyad]"
Date: Tue, 20 Jan 2026 13:44:56 +0100
Subject: [PATCH] [dyad] Added H1 tag extraction - wrote 3 file(s)
---
src/app/actions.ts | 2 ++
src/components/meta-form.tsx | 54 +++++++++++++++++++++++++++++
src/components/results-skeleton.tsx | 11 ++++++
3 files changed, 67 insertions(+)
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() {
)}
+
+
+
+
+ H1 Heading
+
+
+
+ {editableH1.length} Characters
+
+
+
+
+
+
+
+
+ The primary heading of the page, which should be unique.
+
+ {isEditingH1 ? (
+
setEditableH1(e.target.value)}
+ className="w-full"
+ placeholder="H1 Heading"
+ />
+ ) : (
+
+ {editableH1 || "Not found"}
+
+ )}
+
diff --git a/src/components/results-skeleton.tsx b/src/components/results-skeleton.tsx
index ef04a8d..d012d4a 100644
--- a/src/components/results-skeleton.tsx
+++ b/src/components/results-skeleton.tsx
@@ -52,6 +52,17 @@ export function ResultsSkeleton() {
+