30817:linking-to-external-website-archives
Linking to External Website Archives
- signed by
- npub175rna...gsef5g
- published
- 2025-06-05
- event
- fa258a7167...ce08
NIP-YY
Linking to External Website Archives
draft
Abstract
This NIP defines a mechanism for referencing archived websites stored on external systems (e.g., IPFS, Arweave, Archive.org) using Nostr events. It enables Nostr clients to share and retrieve links to archived web content, leveraging external storage for scalability while maintaining Nostr’s decentralized discovery.
Motivation
Archiving websites on external systems like IPFS or Arweave provides scalable, permanent storage. This NIP allows Nostr users to share references to these archives, ensuring discoverability and verifiability within the Nostr ecosystem while offloading storage to specialized platforms.
Event Kind
- Kind 34205: External website archive reference.
Event Structure
content: A JSON object containing:title: The title of the archived website.description: A brief description of the archived content.url: The original URL of the website (if applicable).archived_at: The timestamp of archiving (Unix timestamp).
tags:["u", "<archive URL>"]: The URL or identifier of the archive (e.g.,ipfs://<CID>,https://arweave.net/<tx-id>,https://web.archive.org/web/...).["x", "<SHA-256 hash>"]: The SHA-256 hash of the archived content (e.g., a ZIP file or root HTML) for integrity verification.["m", "<archive type>"]: The type of archive (e.g.,ipfs,arweave,archive.org).["d", "<website identifier>"]: A unique identifier for the website.
pubkey: The public key of the user sharing the archive link.sig: The signature verifying the event’s authenticity.
Example:
{
"kind": 34205,
"content": "{\"title\":\"Example Site\",\"description\":\"An archived website on IPFS\",\"url\":\"https://example.com\",\"archived_at\":1738794235}",
"tags": [
["u", "ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco"],
["x", "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"],
["m", "ipfs"],
["d", "f7d8e9a2-4b3c-4e5a-9f6b-3c8d7f1e2a3d"]
],
"pubkey": "27866e9d854c78ae625b867eefdfa9580434bc3e675be08d2acb526610d96fbe",
"created_at": 1738794235,
"id": "c9d0e1f2-4b3c-4e5a-9f6b-3c8d7f1e2a3d",
"sig": "..."
}
Client Behavior
Publishing an Archive Link
- Archive the website on an external system (e.g., upload to IPFS, Arweave, or Archive.org).
- Compute the SHA-256 hash of the archived content.
- Create a kind 34205 event with the archive URL, hash, and metadata.
- Publish the event to Nostr relays.
Retrieving an Archived Website
- Query relays for the kind 34205 event using the website identifier (via
dtag). - Fetch the archived content from the URL in the
utag. - Verify the content’s SHA-256 hash against the
xtag. - Render the website in the client.
Relay Behavior
- Store and serve kind 34205 events as standard Nostr events.
- Support filtering by
kindanddtag.
Backwards Compatibility
- Non-supporting clients and relays ignore kind 34205, ensuring no disruption.
- Uses standard Nostr tags (
u,x,m,d) for consistency.
Security Considerations
- Integrity: Clients must verify the SHA-256 hash in the
xtag. - Availability: External systems may go offline; clients should support multiple archive URLs (via multiple
utags). - Privacy: Archive content is public unless encrypted (e.g., via NIP-04 or NIP-44).
References
Cited links
github.com
nips/01.md at master · nostr-protocol/nips
Nostr Implementation Possibilities. Contribute to nostr-protocol/nips development by creating an account on GitHub.
github.com
nips/94.md at master · nostr-protocol/nips
Nostr Implementation Possibilities. Contribute to nostr-protocol/nips development by creating an account on GitHub.
Discussion
Connect a key to comment.