โ† All skills
Tencent SkillHub ยท Content Creation

Forever Moments

Forever Moments social platform on LUKSO - post moments (LSP8 NFTs), mint LIKES tokens, create/join collections, and interact with decentralized social featu...

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Forever Moments social platform on LUKSO - post moments (LSP8 NFTs), mint LIKES tokens, create/join collections, and interact with decentralized social featu...

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
README.md, SKILL.md, references/api-docs.md, scripts/mint-likes.js, scripts/post-moment-ai.js, scripts/post-moment-simple.js

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 16 sections Open source page

Forever Moments - LUKSO Social Platform

Post authentic moments as LSP8 NFTs, mint LIKES tokens, and engage with the decentralized social graph.

USE WHEN

Posting a moment (with or without image) Minting LIKES tokens to tip creators Creating/joining collections (curated feeds) Listing moments for sale Automated AI-image generation and posting (cron)

DON'T USE WHEN

Credentials missing (FM_PRIVATE_KEY, FM_UP_ADDRESS not set) User hasn't approved spending LYX for LIKES minting Quick test posts without image (use text-only mode) Operations on unsupported chains (LUKSO mainnet only)

Quick Commands

# Post text moment node scripts/post-moment.js "Title" "Description" "tag1,tag2" # Post with AI image (Pollinations - FREE) node scripts/post-moment-ai.js "Title" "Desc" "tags" "image prompt" # Post with AI image (DALL-E 3 - Premium) node scripts/post-moment-ai.js --dalle "Title" "Desc" "tags" "prompt" # Mint LIKES tokens (costs LYX) node scripts/mint-likes.js 0.5

The 4-Step Relay Flow (Gasless)

All operations follow this pattern: โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 1. Pin Image โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ 2. Build Tx โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ 3. Prepare Relayโ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ 4. Sign & Submitโ”‚ โ”‚ (if needed) โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Code Template

// 1. Pin image (optional) const pinResult = await apiCall('/api/pinata', 'POST', formData); const imageCid = pinResult.IpfsHash; // 2. Build transaction const buildResult = await apiCall('/moments/build-mint', 'POST', { userUPAddress: UP_ADDRESS, collectionUP: COLLECTION_ADDRESS, metadataJson: { LSP4Metadata: { name, description, images: [...] }} }); // 3. Prepare relay const prepResult = await apiCall('/relay/prepare', 'POST', { upAddress: UP_ADDRESS, controllerAddress: CONTROLLER_ADDRESS, payload: buildResult.data.derived.upExecutePayload }); // 4. Sign raw digest (CRITICAL!) const signature = wallet.signingKey.sign(ethers.getBytes(prepResult.data.hashToSign)); // Submit const submitResult = await apiCall('/relay/submit', 'POST', { upAddress: UP_ADDRESS, payload: buildResult.data.derived.upExecutePayload, signature: signature.serialized, nonce: prepResult.data.lsp15Request.transaction.nonce, validityTimestamps: prepResult.data.lsp15Request.transaction.validityTimestamps, relayerUrl: prepResult.data.relayerUrl });

Negative Examples

โŒ WRONG: Using wrong signing method // WRONG - adds EIP-191 prefix await wallet.signMessage(hashToSign) // CORRECT - sign raw bytes wallet.signingKey.sign(ethers.getBytes(hashToSign)) โŒ WRONG: Wrong IPFS endpoint // WRONG POST /api/agent/v1/pinata // CORRECT POST /api/pinata (no /agent/v1 prefix!) โŒ WRONG: Missing credentials // DON'T proceed if env vars not set if (!process.env.FM_PRIVATE_KEY) { throw new Error('FM_PRIVATE_KEY not set - check .credentials'); }

Post Moment with Image

const metadata = { LSP4Metadata: { name: "Moment Title", description: "Description text", images: [[{ width: 1024, height: 1024, url: `ipfs://${cid}`, verification: { method: "keccak256(bytes)", data: "0x" } }]], tags: ["art", "lukso"] } };

LSP4 Metadata Structure

FieldRequiredFormatnameYesString, max 100 charsdescriptionYesString, max 1000 charsimagesNoArray of arrays with IPFS URLsiconNoSingle image for thumbnailtagsNoArray of strings, max 10 tags

Edge Cases

ScenarioHandlingPollinations rate limitWait 60s, retry with backoffDALL-E not configuredFall back to Pollinations (free)IPFS pin failsRetry once, then fail with errorINVALID_SIGNATURECheck signing method (raw digest!)RELAY_FAILEDVerify controller has EXECUTE_RELAY_CALL permissionCollection already joinedSkip join, proceed with postCron timeout (180s)Increase timeout or optimize image generation

Required Environment Variables

# Required for all operations export FM_PRIVATE_KEY="0x..." # Controller private key export FM_UP_ADDRESS="0x..." # Universal Profile address export FM_CONTROLLER_ADDRESS="0x..." # Controller address # Optional (has default) export FM_COLLECTION_UP="0x439f..." # Default collection # For premium images export DALLE_API_KEY="sk-..." # OpenAI API key

Image Generation Options

MethodCostQualityBest ForPollinations.aiFREEGoodCron jobs, bulk postingDALL-E 3$0.04/imgExcellentManual posts, premium content

Known Collections

Art by the Machine (AI art): 0x439f6793b10b0a9d88ad05293a074a8141f19d77

API Base URL

https://www.forevermoments.life/api/agent/v1 Note: IPFS pin endpoint is /api/pinata (NOT under /api/agent/v1)

Success Indicators

โœ… Good response: { "success": true, "data": { "ok": true, "responseText": "{\"transactionHash\":\"0x...\"}" } } โŒ Bad response: { "success": false, "error": "INVALID_SIGNATURE" }

Related Tools

universal-profile skill - For UP/KeyManager operations bankr skill - For direct LYX transactions (if gasless fails) lsp28-grid skill - For profile grid management

Category context

Writing, remixing, publishing, visual generation, and marketing content production.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
3 Docs3 Scripts
  • SKILL.md Primary doc
  • README.md Docs
  • references/api-docs.md Docs
  • scripts/mint-likes.js Scripts
  • scripts/post-moment-ai.js Scripts
  • scripts/post-moment-simple.js Scripts