AgentSkillsCN

Public

公开

SKILL.md

Link Bouquet - AI Agent Skill

Create a curated link bouquet and return a shareable URL.

API Endpoint

code
POST https://thutucxsmfvtteafbndw.supabase.co/rest/v1/bouquets

Headers

code
apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRodXR1Y3hzbWZ2dHRlYWZibmR3Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzA4MTA3MDEsImV4cCI6MjA4NjM4NjcwMX0.OhJ8v3xGjAg4ZfkfS_oKxGDzob7N7pIda53cDzBMCGc
Content-Type: application/json

Request Body

json
{
  "slug": "sweet-rose-1234",
  "image_url": "/flowers.png",
  "paths": [],
  "items": [
    {
      "id": "1",
      "type": "youtube",
      "mediaId": "dQw4w9WgXcQ",
      "x": 15,
      "y": 25,
      "rotation": 0,
      "scale": 0.8
    }
  ],
  "note": "Happy Valentines Day!",
  "bg_color": "#F77196"
}

Return to User

After successful POST, give user this link:

code
https://linkbouquet.com?b={slug}

Field Reference

slug (required)

Unique ID for the bouquet URL. Format: {adjective}-{noun}-{4digits}

Adjectives: sweet, lovely, dear, precious, tender, gentle, warm, bright, rosy, golden Nouns: heart, rose, bloom, petal, garden, dream, wish, kiss, hug, love

Example: tender-bloom-4829

image_url (required)

The flower image to display:

  • /flowers.png - Colorful bouquet (default)
  • /flowers2.png - Alternative bouquet
  • ascii - ASCII art flower

paths (required)

Always set to []

items (required)

Array of media items. Each item:

FieldTypeDescription
idstringUnique ID (just use "1", "2", "3", etc.)
typestringyoutube, spotify, letterboxd, substack, twitter, instagram
mediaIdstringThe media identifier (see below)
xnumberPosition 20-80 (left to right, stay on flower)
ynumberPosition 25-75 (top to bottom, stay on flower)
rotationnumberRotation in degrees (-30 to 30)
scalenumberSize 0.3 to 3.0 (default 0.8)

note (optional)

Personal message shown when recipient opens the bouquet.

bg_color (optional)

Background color as hex:

  • #ffffff - White (default)
  • #F77196 - Pink
  • #C2021B - Red
  • Any hex color

Media Types & IDs

YouTube

  • Type: youtube
  • mediaId: Video ID
  • Extract from: youtube.com/watch?v=VIDEO_ID or youtu.be/VIDEO_ID

Spotify

  • Type: spotify
  • mediaId: track/TRACK_ID, album/ALBUM_ID, or playlist/PLAYLIST_ID
  • Extract from: open.spotify.com/track/TRACK_ID

Letterboxd

  • Type: letterboxd
  • mediaId: Full URL
  • Example: https://letterboxd.com/film/her

Substack

  • Type: substack
  • mediaId: Full article URL
  • Example: https://example.substack.com/p/article-name

Twitter/X

  • Type: twitter
  • mediaId: Tweet ID
  • Extract from: x.com/user/status/TWEET_ID

Instagram

  • Type: instagram
  • mediaId: Post/Reel ID
  • Extract from: instagram.com/reel/POST_ID

Recommended Positions

For a balanced layout overlapping the flower, use these (x, y) positions:

code
Top left:     (25, 30)
Top right:    (75, 30)
Middle left:  (20, 50)
Middle right: (80, 50)
Bottom left:  (30, 70)
Bottom right: (70, 70)
Top center:   (50, 25)
Bottom center:(50, 75)

Keep x between 20-80 and y between 25-75 to stay on the flower.


Complete Example

User wants: a YouTube video, a Spotify song, and a Letterboxd film with a love note on pink background.

json
{
  "slug": "lovely-heart-7392",
  "image_url": "/flowers.png",
  "paths": [],
  "items": [
    {
      "id": "1",
      "type": "youtube",
      "mediaId": "dQw4w9WgXcQ",
      "x": 25,
      "y": 30,
      "rotation": -5,
      "scale": 0.8
    },
    {
      "id": "2",
      "type": "spotify",
      "mediaId": "track/4uLU6hMCjMI75M1A2tKUQC",
      "x": 75,
      "y": 50,
      "rotation": 5,
      "scale": 0.7
    },
    {
      "id": "3",
      "type": "letterboxd",
      "mediaId": "https://letterboxd.com/film/her",
      "x": 30,
      "y": 70,
      "rotation": 0,
      "scale": 0.75
    }
  ],
  "note": "Dear love,\n\nThese remind me of you.\n\nForever yours",
  "bg_color": "#F77196"
}

Return to user: https://linkbouquet.com?b=lovely-heart-7392