Skip to content

Commit 926daaf

Browse files
mbastianclaude
andcommitted
Improve SEO titles, descriptions and add structured data
- Rewrite titles/descriptions of home, desktop, lite and quickstart pages to target generic network visualization/analysis queries - Add JSON-LD (WebSite, Organization, SoftwareApplication, WebApplication, SoftwareSourceCode, FAQPage) - Add Sitemap line to robots.txt - Fix leftover apple-mobile-web-app-title Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
1 parent 707fa80 commit 926daaf

8 files changed

Lines changed: 91 additions & 12 deletions

File tree

‎public/robots.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
User-agent: *
2-
Disallow:
2+
Disallow:
3+
4+
Sitemap: https://gephi.org/sitemap-index.xml

‎src/layouts/Layout.astro‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,21 @@ interface Props {
99
class?: string;
1010
pageId?: string;
1111
title?: string;
12+
fullTitle?: string;
1213
description?: string;
1314
image?: string;
1415
noindex?: boolean;
16+
jsonLd?: object | object[];
1517
}
1618
1719
const DEFAULT_TITLE = "Gephi - The Open Graph Viz Platform";
1820
const DEFAULT_DESCRIPTION =
1921
"Gephi is the leading visualization and exploration software for all kinds of graphs and networks. Gephi is open-source and free.";
2022
const DEFAULT_IMAGE = "/gephi-screenshot.jpg";
2123
22-
const { class: className, pageId, title, description, image, noindex } = Astro.props;
24+
const { class: className, pageId, title, fullTitle, description, image, noindex, jsonLd } = Astro.props;
2325
24-
const pageTitle = title ? `${title} | Gephi` : DEFAULT_TITLE;
26+
const pageTitle = fullTitle ? fullTitle : title ? `${title} | Gephi` : DEFAULT_TITLE;
2527
const pageDescription = description || DEFAULT_DESCRIPTION;
2628
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
2729
const ogImageURL = new URL(image || DEFAULT_IMAGE, Astro.site);
@@ -55,12 +57,13 @@ const appPages = [
5557
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
5658
<link rel="shortcut icon" href="/favicon.ico" />
5759
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
58-
<meta name="apple-mobile-web-app-title" content="MyWebSite" />
60+
<meta name="apple-mobile-web-app-title" content="Gephi" />
5961
<link rel="manifest" href="/site.webmanifest" />
6062
<link rel="sitemap" href="/sitemap-index.xml" />
6163
<meta name="description" content={pageDescription} />
6264
{noindex && <meta name="robots" content="noindex" />}
6365
<title>{pageTitle}</title>
66+
{jsonLd && <script is:inline type="application/ld+json" set:html={JSON.stringify(jsonLd)} />}
6467

6568
<meta property="og:type" content="website" />
6669
<meta property="og:site_name" content="Gephi" />

‎src/pages/desktop/index.astro‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,26 @@ import layout01 from "../../images/desktop/layout_01.png";
1212
import layout02 from "../../images/desktop/layout_02.png";
1313
import realtime01 from "../../images/desktop/realtime_01.png";
1414
import realtime02 from "../../images/desktop/realtime_02.png";
15+
16+
const jsonLd = {
17+
"@context": "https://schema.org",
18+
"@type": "SoftwareApplication",
19+
name: "Gephi",
20+
url: "https://gephi.org/desktop/",
21+
description: "Open-source desktop application to visualize, analyze and explore networks and graphs.",
22+
applicationCategory: "DataVisualization",
23+
operatingSystem: "Windows, macOS, Linux",
24+
license: "https://www.gnu.org/licenses/gpl-3.0.html",
25+
image: "https://gephi.org/gephi-screenshot.jpg",
26+
offers: { "@type": "Offer", price: "0", priceCurrency: "USD" },
27+
};
1528
---
1629

1730
<Layout
1831
pageId="desktop"
19-
title="Gephi Desktop"
20-
description="Gephi is an open-source desktop application to visually analyze and explore networks and graphs. Free download for Windows, macOS and Linux."
32+
fullTitle="Gephi Desktop: Free Network Analysis and Visualization Software"
33+
description="Gephi is a free, open-source desktop application to visualize, analyze and explore networks and graphs. Download for Windows, macOS and Linux."
34+
jsonLd={jsonLd}
2135
>
2236
<style>
2337
:root {

‎src/pages/faq/index.astro‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,12 +286,26 @@ const QUESTIONS: Group<Question | Group<Question>>[] = [
286286
],
287287
},
288288
];
289+
290+
const flatten = (items: (Question | Group<Question>)[]): Question[] =>
291+
items.flatMap((item) => ("label" in item ? flatten(item.children) : [item]));
292+
293+
const jsonLd = {
294+
"@context": "https://schema.org",
295+
"@type": "FAQPage",
296+
mainEntity: flatten(QUESTIONS.flatMap((group) => group.children)).map(({ question, answer }) => ({
297+
"@type": "Question",
298+
name: question,
299+
acceptedAnswer: { "@type": "Answer", text: answer.trim() },
300+
})),
301+
};
289302
---
290303

291304
<Layout
292305
class="faq-page"
293306
pageId="faq"
294-
title="FAQ"
307+
fullTitle="Gephi FAQ: Network Visualization and Analysis Questions"
308+
jsonLd={jsonLd}
295309
description="Answers to frequently asked questions about Gephi, the open-source network visualization and exploration software."
296310
>
297311
<Banner containerClass="my-5 py-4">

‎src/pages/index.astro‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,30 @@ import Layout from "../layouts/Layout.astro";
1010
1111
import GephiLitePaper from "../images/homepage/gephi-lite-paper.png";
1212
import GephiPaper from "../images/homepage/gephi-paper.png";
13+
14+
const jsonLd = [
15+
{
16+
"@context": "https://schema.org",
17+
"@type": "WebSite",
18+
name: "Gephi",
19+
url: "https://gephi.org/",
20+
},
21+
{
22+
"@context": "https://schema.org",
23+
"@type": "Organization",
24+
name: "Gephi",
25+
url: "https://gephi.org/",
26+
logo: "https://gephi.org/gephi-logo.svg",
27+
sameAs: ["https://github.com/gephi", "https://www.reddit.com/r/Gephi/", "https://www.youtube.com/@gephi-official"],
28+
},
29+
];
1330
---
1431

15-
<Layout>
32+
<Layout
33+
fullTitle="Gephi: Open-Source Network Visualization and Analysis Software"
34+
description="Gephi is free, open-source software for network visualization and analysis. Explore graphs and networks with Gephi desktop or Gephi Lite, right in your browser."
35+
jsonLd={jsonLd}
36+
>
1637
<Banner>
1738
<div class="row align-items-center">
1839
<div class="col-lg-8 mb-5">

‎src/pages/lite/index.astro‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,26 @@ import Datatable from "../../images/lite/datatable.png";
1414
import Multitouch from "../../images/lite/multi-touch.jpg";
1515
import Responsive from "../../images/lite/responsiveness.jpg";
1616
import Retina from "../../images/lite/retina.png";
17+
18+
const jsonLd = {
19+
"@context": "https://schema.org",
20+
"@type": "WebApplication",
21+
name: "Gephi Lite",
22+
url: "https://gephi.org/lite/",
23+
description: "Open-source web application for network visualization and analysis, no install required.",
24+
applicationCategory: "DataVisualization",
25+
operatingSystem: "Any (web browser)",
26+
browserRequirements: "Requires a modern web browser with WebGL",
27+
license: "https://github.com/gephi/gephi-lite/blob/main/LICENSE.md",
28+
offers: { "@type": "Offer", price: "0", priceCurrency: "USD" },
29+
};
1730
---
1831

1932
<Layout
2033
pageId="lite"
21-
title="Gephi Lite"
22-
description="Gephi Lite is an open-source web application dedicated to visual network analysis. Works on desktop, tablets and mobiles, no install required."
34+
fullTitle="Gephi Lite: Online Network Visualization Tool, No Install"
35+
description="Gephi Lite is a free, open-source web application for network visualization and analysis. Works on desktop, tablets and mobiles, no install required."
36+
jsonLd={jsonLd}
2337
>
2438
<style>
2539
:root {

‎src/pages/quickstart/index.astro‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import Layout from "../../layouts/Layout.astro";
1010
<Layout
1111
class="no-sticky-nav"
1212
pageId="quickstart"
13-
title="Quickstart"
14-
description="Get started quickly with Gephi: install the software and learn the basics of visualizing and exploring your first network."
13+
fullTitle="Gephi Quickstart: Visualize and Analyze Your First Network"
14+
description="Get started with Gephi: install the software, import your data, and learn the basics of network visualization and analysis step by step."
1515
>
1616
<Banner>
1717
<h1>Quickstart</h1>

‎src/pages/toolkit/index.astro‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,23 @@ import { Image } from "astro:assets";
44
import Banner from "../../components/Banner.astro";
55
import Architecture from "../../images/toolkit/architecture.svg";
66
import Layout from "../../layouts/Layout.astro";
7+
8+
const jsonLd = {
9+
"@context": "https://schema.org",
10+
"@type": "SoftwareSourceCode",
11+
name: "Gephi Toolkit",
12+
url: "https://gephi.org/toolkit/",
13+
description: "Java library to script Gephi and reuse its Graph, Layout, Filters and I/O modules in any Java program.",
14+
programmingLanguage: "Java",
15+
codeRepository: "https://github.com/gephi/gephi-toolkit",
16+
};
717
---
818

919
<Layout
1020
pageId="toolkit"
1121
title="Gephi Toolkit"
1222
description="Gephi Toolkit lets you script Gephi from any Java program. Reuse Gephi's core modules, including Graph, Layout, Filters, and I/O."
23+
jsonLd={jsonLd}
1324
>
1425
<Banner>
1526
<div class="banner-contents">

0 commit comments

Comments
 (0)