diff --git a/src/components/HeadSEO.astro b/src/components/HeadSEO.astro
index bc5ba16608d..f894fffdb20 100644
--- a/src/components/HeadSEO.astro
+++ b/src/components/HeadSEO.astro
@@ -14,6 +14,7 @@ const formattedContentTitle = metadata?.title
? `${metadata.title} | ${SITE.title}`
: `${PAGE.titleFallback} | ${SITE.title}`
const description = metadata?.description ?? SITE.description
+const excerpt = metadata?.excerpt ?? description
// Check that the metadata image property exists, else use OPEN_GRAPH.image.src
var canonicalImageSrc = OPEN_GRAPH.image.src
@@ -41,6 +42,10 @@ const { isApiReference, product, isVersioned } = detectApiReference(currentPage)
+
+
+
+
@@ -48,7 +53,7 @@ const { isApiReference, product, isVersioned } = detectApiReference(currentPage)
-
+
diff --git a/src/content/any-api/getting-started.mdx b/src/content/any-api/getting-started.mdx
index 3f99f25e1cd..54a495ce088 100644
--- a/src/content/any-api/getting-started.mdx
+++ b/src/content/any-api/getting-started.mdx
@@ -2,10 +2,10 @@
section: nodeOperator
date: Last Modified
title: "Getting Started with Any API"
-excerpt: "Calling APIs from Smart Contracts"
whatsnext:
{ "Learn how to bring data onchain and do offchain computation using Chainlink Functions": "/chainlink-functions" }
metadata:
+ excerpt: "Calling APIs from Smart Contracts"
image: "/files/04b8e56-cl.png"
---
diff --git a/src/content/ccip/concepts/cross-chain-tokens.mdx b/src/content/ccip/concepts/cross-chain-tokens.mdx
index ea23b44a9a4..e282f30da12 100644
--- a/src/content/ccip/concepts/cross-chain-tokens.mdx
+++ b/src/content/ccip/concepts/cross-chain-tokens.mdx
@@ -3,6 +3,9 @@ section: ccip
date: Last Modified
title: "Cross-Chain Token (CCT) standard"
whatsnext: { "CCT Guides": "/ccip/tutorials/cross-chain-tokens" }
+metadata:
+ description: "Chainlink's Cross-Chain Token (CCT) standard enables permissionless listing of tokens in CCIP. Learn how to make your tokens cross-chain compatible or deploy new cross-chain tokens using this self-service standard. Token developers can deploy and configure their own token pools without third-party intervention, streamlining the process of enabling ERC20-compatible tokens for cross-chain operations."
+ excerpt: "create cct create cross chain token create cross-chain token deploy cross chain token enable token for ccip make token cross chain compatible cross chain token tutorial"
---
import { Aside, ClickToZoom } from "@components"
@@ -507,7 +510,7 @@ Once the administrator has been proposed and is in a pending state, the final st
The `transferAdminRole` function allows the current token administrator to initiate the transfer of their role to a new administrator. The transfer process is a secure two-step procedure, requiring the new administrator to explicitly accept the role before the transfer is finalized.
-1. **Initiate Role Transfer**: The current administrator calls the `transferAdminRole()` function on the **TokenAdminRegistry**, specifying the token address and the new administrator’s address.
+1. **Initiate Role Transfer**: The current administrator calls the `transferAdminRole()` function on the **TokenAdminRegistry**, specifying the token address and the new administrator's address.
1. **Set Pending Administrator**: The **TokenAdminRegistry** contract verifies that the caller is the current administrator of the token and sets the new administrator as **pending**. The role will remain in this pending state until it is accepted.
1. **Accept the Role**: The new administrator must call the `acceptAdminRole()` function to finalize the transfer and assume the administrator role.
@@ -525,7 +528,7 @@ The `setPool` function allows the token administrator to assign or update the to
1. **Set Token Pool**: The current administrator calls the `setPool()` function on the **TokenAdminRegistry**, providing the token address and the new pool address.
1. **Validate Pool**: If the new pool address is not `address(0)`, the contract validates that the provided pool supports the token by calling `isSupportedToken()` on the pool contract.
-1. **Update or Remove Pool**: If validation succeeds, the token’s pool is updated in the registry. Setting the pool to `address(0)` effectively delists the token from cross-chain operations.
+1. **Update or Remove Pool**: If validation succeeds, the token's pool is updated in the registry. Setting the pool to `address(0)` effectively delists the token from cross-chain operations.
The sequence diagram below shows how the token administrator sets or updates the pool for a token. If the pool is set to `address(0)`, the token is delisted from cross-chain operations.
diff --git a/src/content/ccip/service-responsibility.mdx b/src/content/ccip/service-responsibility.mdx
index e69a17e624a..0f86e6e745f 100644
--- a/src/content/ccip/service-responsibility.mdx
+++ b/src/content/ccip/service-responsibility.mdx
@@ -58,6 +58,12 @@ Token Developers may enable token transfers on CCIP for the tokens that they adm
- **Best Practices**: Token Developers are responsible for following the appropriate best practices for creating, managing, and enabling transfers of their tokens on Chainlink CCIP.
- **Risk Management Network coverage**: Token Developers must check the deployment status of the Risk Management Network on the chains they build on, which can be found on the [CCIP Directory](/ccip/directory) page. If the Risk Management Network is not yet active on a chain, Token Developers must validate that its absence conforms to their requirements.
- **Token Developer Attestation**: Token Developers are responsible for ensuring the quality, reliability, and security of their associated attestation endpoint(s). Token Developers are responsible for adhering to specifications as defined by Chainlink Labs and maintaining an up-to-date implementation. Neither Chainlink Labs nor the Chainlink Foundation are responsible for the development, maintenance, or operation of Token Developer Attestation endpoints.
+- **Liquidity Management**: Token Developers who choose the **Lock and Mint** or **Lock and Unlock** mechanism must ensure their token pools have sufficient liquidity when releasing tokens. Failure to maintain adequate liquidity can result in stalled or failed cross-chain transfers, causing a degraded user experience. Token Developers are responsible for:
+
+ - **Ensuring sufficient liquidity**: Continuously monitor transaction volumes and add liquidity to the pool before it is depleted to avoid having user funds stuck in transit.
+ - **Avoiding fragmented liquidity**: Where possible, minimize the use of **Lock and Unlock** across multiple blockchains to reduce operational complexity and prevent liquidity from being split across multiple pools.
+ - **Monitoring liquidity health and automating alerts**: Implement monitoring and alerting systems that notify Token Developers when liquidity drops below certain thresholds, allowing for proactive liquidity management before user transfers fail.
+ - **Proper use of provideLiquidity and withdrawLiquidity**: Only authorized entities (such as a trusted liquidity manager) should manage liquidity. Ensure all access controls are in place to prevent unauthorized manipulation of the token pool.
Although Token Developers may request that their tokens be added to Transporter, tokens may be added to Transporter at any time even if it has not been explicitly requested.
diff --git a/src/content/ccip/tutorials/cross-chain-tokens/index.mdx b/src/content/ccip/tutorials/cross-chain-tokens/index.mdx
index 57fc1fc549d..3bbddd8c048 100644
--- a/src/content/ccip/tutorials/cross-chain-tokens/index.mdx
+++ b/src/content/ccip/tutorials/cross-chain-tokens/index.mdx
@@ -4,7 +4,8 @@ date: Last Modified
title: "Cross-Chain Token (CCT) Tutorials"
isIndex: true
metadata:
- description: "Learn how to deploy and configure cross-chain tokens using CCIP. Step-by-step guides for different deployment methods including Remix IDE, Hardhat, and Foundry."
+ description: "Complete guide to make your tokens cross-chain compatible using Chainlink's CCT standard. Learn how to deploy new cross-chain tokens or enable existing tokens for CCIP by implementing the Cross-Chain Token (CCT) standard. Step-by-step tutorials using Remix IDE, Hardhat, or Foundry, covering both EOA and Safe Smart Account deployments with Burn & Mint and Lock & Mint mechanisms."
+ excerpt: "create cct create cross chain token create cross-chain token deploy cross chain token enable token for ccip make token cross chain compatible cross chain token tutorial"
---
import { Aside, ClickToZoom } from "@components"
diff --git a/src/content/config.ts b/src/content/config.ts
index 489341b748c..38963570d33 100644
--- a/src/content/config.ts
+++ b/src/content/config.ts
@@ -44,6 +44,7 @@ const metadata = z
image: z.string().optional(),
linkToWallet: z.boolean().optional(),
canonical: z.string().optional(),
+ excerpt: z.string().optional(),
})
.optional()
@@ -56,7 +57,6 @@ const baseFrontmatter = z
isMdx: z.boolean().optional(),
isIndex: z.boolean().optional(),
metadata,
- excerpt: z.string().optional(),
datafeedtype: z.string().optional(),
fileExtension: z.string().optional(),
})
diff --git a/src/content/data-feeds/ens.mdx b/src/content/data-feeds/ens.mdx
index 69cda1f34ed..60fe2f35699 100644
--- a/src/content/data-feeds/ens.mdx
+++ b/src/content/data-feeds/ens.mdx
@@ -2,7 +2,8 @@
section: dataFeeds
date: Last Modified
title: "Using ENS with Data Feeds"
-excerpt: "Ethereum Name Service"
+metadata:
+ excerpt: "Ethereum Name Service"
---
import { EnsLookupForm } from "../../features/ens/components/EnsLookupForm.tsx"
diff --git a/src/content/data-feeds/getting-started.mdx b/src/content/data-feeds/getting-started.mdx
index 3c4a121ebef..d0502a44ea3 100644
--- a/src/content/data-feeds/getting-started.mdx
+++ b/src/content/data-feeds/getting-started.mdx
@@ -2,7 +2,6 @@
section: dataFeeds
date: Last Modified
title: "Consuming Data Feeds"
-excerpt: "Smart Contracts and Chainlink"
whatsnext:
{
"See examples for how to read feeds onchain and offchain": "/data-feeds/using-data-feeds",
@@ -12,6 +11,7 @@ whatsnext:
metadata:
title: "Consuming Data Feeds"
description: "Learn how to consume Chainlink Data Feeds in your smart contracts."
+ excerpt: "Smart Contracts and Chainlink"
image: "/files/1a63254-link.png"
---
diff --git a/src/content/data-feeds/selecting-data-feeds.mdx b/src/content/data-feeds/selecting-data-feeds.mdx
index 79fbccd49c8..93a5026f479 100644
--- a/src/content/data-feeds/selecting-data-feeds.mdx
+++ b/src/content/data-feeds/selecting-data-feeds.mdx
@@ -2,7 +2,8 @@
section: dataFeeds
date: Last Modified
title: "Selecting Quality Data Feeds"
-excerpt: "Learn how to assess data feeds that you use in your smart contracts."
+metadata:
+ excerpt: "Learn how to assess data feeds that you use in your smart contracts."
---
import { Aside } from "@components"
diff --git a/src/content/data-streams/getting-started-hardhat.mdx b/src/content/data-streams/getting-started-hardhat.mdx
index c4636cbf0cb..ab3e2d3cacf 100644
--- a/src/content/data-streams/getting-started-hardhat.mdx
+++ b/src/content/data-streams/getting-started-hardhat.mdx
@@ -4,7 +4,7 @@ date: Last Modified
title: "Getting Started with Chainlink Data Streams (Hardhat CLI)"
metadata:
linkToWallet: true
-excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
+ excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
whatsnext: {
"Find the list of available Stream IDs": "/data-streams/crypto-streams",
"Find the schema of data to expect from Data Streams reports.": "/data-streams/reference/report-schema",
diff --git a/src/content/data-streams/getting-started.mdx b/src/content/data-streams/getting-started.mdx
index eac84157dee..ac984346657 100644
--- a/src/content/data-streams/getting-started.mdx
+++ b/src/content/data-streams/getting-started.mdx
@@ -4,7 +4,7 @@ date: Last Modified
title: "Getting Started with Chainlink Data Streams (Remix)"
metadata:
linkToWallet: true
-excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
+ excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
whatsnext: {
"Find the list of available Stream IDs": "/data-streams/crypto-streams",
"Find the schema of data to expect from Data Streams reports": "/data-streams/reference/report-schema",
diff --git a/src/content/getting-started/conceptual-overview.mdx b/src/content/getting-started/conceptual-overview.mdx
index afc3cb5a4ed..6a6f7b9df5b 100644
--- a/src/content/getting-started/conceptual-overview.mdx
+++ b/src/content/getting-started/conceptual-overview.mdx
@@ -2,7 +2,6 @@
section: global
date: Last Modified
title: "Smart Contract Overview"
-excerpt: "Smart Contracts and Chainlink"
whatsnext:
{
"Deploy Your First Smart Contract": "/quickstarts/deploy-your-first-contract",
@@ -11,6 +10,7 @@ whatsnext:
metadata:
title: "Conceptual Overview"
description: "Learn the basic concepts about what smart contracts are and, how to write them, and how Chainlink oracles work with smart contracts."
+ excerpt: "Smart Contracts and Chainlink"
image: "/files/1a63254-link.png"
---
diff --git a/src/content/vrf/v2-5/getting-started.mdx b/src/content/vrf/v2-5/getting-started.mdx
index 9f0af74a16e..66e7abe2213 100644
--- a/src/content/vrf/v2-5/getting-started.mdx
+++ b/src/content/vrf/v2-5/getting-started.mdx
@@ -2,7 +2,6 @@
section: vrf
date: Last Modified
title: "Getting Started with Chainlink VRF V2.5"
-excerpt: "Using Chainlink VRF"
whatsnext:
{
"Security Considerations": "/vrf/v2-5/security",
@@ -12,6 +11,7 @@ whatsnext:
metadata:
title: "Getting Started with Chainlink VRF V2.5"
description: "Learn how to use randomness in your smart contracts using Chainlink VRF."
+ excerpt: "Using Chainlink VRF"
image: "/files/2a242f1-link.png"
---
diff --git a/src/content/vrf/v2/getting-started.mdx b/src/content/vrf/v2/getting-started.mdx
index 51fe2fe9860..54658f4da47 100644
--- a/src/content/vrf/v2/getting-started.mdx
+++ b/src/content/vrf/v2/getting-started.mdx
@@ -2,7 +2,6 @@
section: legacy
date: Last Modified
title: "Getting Started with Chainlink VRF"
-excerpt: "Using Chainlink VRF"
whatsnext:
{
"Get a Random Number": "/vrf/v2/subscription/examples/get-a-random-number",
@@ -14,6 +13,7 @@ whatsnext:
metadata:
title: "Getting Started with Chainlink VRF V2"
description: "Learn how to use randomness in your smart contracts using Chainlink VRF."
+ excerpt: "Using Chainlink VRF"
image: "/files/2a242f1-link.png"
---