Skip to content

Commit 63d7d0b

Browse files
committed
feat(seo): enrich structured data for bank listings
1 parent 25cc857 commit 63d7d0b

File tree

2 files changed

+14
-41
lines changed

2 files changed

+14
-41
lines changed

app/page.tsx

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -48,42 +48,6 @@ export default async function Home() {
4848
const rates = info?.rates || [];
4949

5050
const siteUrl = "https://suri-rate.ragnarok22.dev";
51-
const exchangeRateSpecifications = rates.flatMap((bank) =>
52-
bank.rates.flatMap((rate) => [
53-
{
54-
"@type": "ExchangeRateSpecification",
55-
currency: `${rate.currency}/SRD`,
56-
provider: {
57-
"@type": "FinancialService",
58-
name: bank.name,
59-
url: bank.link,
60-
},
61-
description: `${bank.name} buy rate for ${rate.currency} to SRD`,
62-
priceType: "buy",
63-
currentExchangeRate: {
64-
"@type": "UnitPriceSpecification",
65-
price: Number.parseFloat(rate.buy),
66-
priceCurrency: "SRD",
67-
},
68-
},
69-
{
70-
"@type": "ExchangeRateSpecification",
71-
currency: `${rate.currency}/SRD`,
72-
provider: {
73-
"@type": "FinancialService",
74-
name: bank.name,
75-
url: bank.link,
76-
},
77-
description: `${bank.name} sell rate for ${rate.currency} to SRD`,
78-
priceType: "sell",
79-
currentExchangeRate: {
80-
"@type": "UnitPriceSpecification",
81-
price: Number.parseFloat(rate.sell),
82-
priceCurrency: "SRD",
83-
},
84-
},
85-
]),
86-
);
8751

8852
const datasetStructuredData = {
8953
"@context": "https://schema.org",
@@ -124,7 +88,6 @@ export default async function Home() {
12488
"Central Bank Suriname",
12589
"best exchange rate Suriname",
12690
],
127-
hasPart: exchangeRateSpecifications,
12891
};
12992

13093
const faqStructuredData = {

utils/schema.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,24 +102,34 @@ export function getItemListSchema(rates: BankRates[], updatedAt?: string) {
102102
name: "Suriname Exchange Rates Comparison",
103103
description:
104104
"Current USD and EUR exchange rates from major Surinamese banks",
105+
numberOfItems: rates.length,
105106
itemListElement: rates.map((bank, index) => ({
106107
"@type": "ListItem",
107108
position: index + 1,
108109
item: {
109-
"@type": "FinancialService",
110+
"@type": "LocalBusiness",
111+
"@id": bank.link,
110112
name: bank.name,
111113
url: bank.link,
112-
offers: bank.rates.map((rate) => ({
114+
additionalType: "FinancialService",
115+
currenciesAccepted: "USD,EUR,SRD",
116+
areaServed: {
117+
"@type": "Country",
118+
name: "Suriname",
119+
},
120+
makesOffer: bank.rates.map((rate) => ({
113121
"@type": "Offer",
114122
itemOffered: {
115123
"@type": "Service",
116-
name: `${rate.currency}/SRD Exchange`,
124+
name: `${rate.currency} to SRD Currency Exchange`,
125+
serviceType: "Currency Exchange",
117126
},
118127
price: rate.buy,
119128
priceCurrency: "SRD",
129+
description: `Buy ${rate.currency} at ${rate.buy} SRD, Sell at ${rate.sell} SRD`,
130+
validFrom: updatedAt ?? new Date().toISOString(),
120131
})),
121132
},
122133
})),
123-
dateModified: updatedAt ?? new Date().toISOString(),
124134
};
125135
}

0 commit comments

Comments
 (0)