Avatar
BtcPins
50a9326de0b1aed1b364bf02affc4129fe320e27438e471acbb0605c81ab87bb
Pins Shop

They should embrace it. Movies are already being pirated. Now they can get a few sats from that.

Not beyond knowing what I want it to do. I told perplexity what app I wanted and told it to craft a prompt for cursor and include references to whatever libraries it may need.

I'm not versed in making apps, but I am proficient enough at testing and reporting bugs to the AI to get it working.

Replying to Avatar BtcPins

I guess I just vibe coded a V4V Netflix replacement 🤷

What if movies & shows worked like Podcasting 2.0? What if you could grab a video from anywhere, usenet, torrent, whatever, and you could verify it's from the creator. Then when you watch it, they get sats streamed to them. What if they set up a prism to forward sats to everyone who worked to produce it, WHILE you watch it?

Would you pay for movies that you would normally pirate, if it was easy AF to get the movie and to pay what you think it was worth? Would we even need content distributors anymore? Just blast out your movie!

What if the creator could get insight into how much of a movie the audience watches, based on the sats streamed? Or if they get boosted at the really good parts of the movie? Wouldn't that incentivize making really good films?

In just a few hours, with no coding done by me, I have an app that can:

Connect to my AlbyHub via NWC.

Read the metadata of a video file to detect embedded lightning addresses.

Streams 10 sats per minute to that address.

Can you see how huge this is? Not just the fact that some rando that can't code made this. But what something like this could enable for creators and provide a ton of value for audiences?

There's no real UI yet. I just wanted to get a proof of concept working. But it does what it's supposed to. I can stream sats to myself to watch an MP4 I made this morning for my meetup. Ran a quick command to add a lightning address to the file's metadata, and the app read it. 30 sats went from my Alby wallet to my Btcpayserver.

Probably not making a video, but here's the prompt I fed into Cursor to start the project. I had perplexity.ai help write it:

We're building a Lightning-powered video player with Nostr integration. Create a Next.js/React app with these components:

Video File Handling

Use FFmpeg.js/WebAssembly for in-browser video metadata modification

Implement custom metadata tagging in MP4 containers using 'uuid' boxes for:

Lightning addresses (BOLT11 invoices)

Nostr npub signatures (NIP-07)

Payment rate per minute (JSON structure)

Add signature verification using nostr-tools' nip07.verifyEvent()

Player Core

Use Video.js with HLS.js for adaptive streaming

Create payment timer that triggers every minute using requestAnimationFrame

Implement payment queue with exponential backoff retries

Lightning/Nostr Integration

Add NWC (Nostr Wallet Connect) via nostr-wallet-connect-js

Include these Lightning libraries:

lightning-bolt11 for invoice parsing

alby-js-sdk for NWC implementation

lightning-devkit for fallback LSP integration

Create payment metadata builder including:

Video SHA-256 hash

Current timestamp

Content creator's npub

Security Features

Implement WebCrypto API for client-side hash verification

Add budget controls with permissioned NWC scopes

Create payment audit trail using IndexedDB

Sample File Structure:

bash

/src

/components

PlayerCore.tsx

PaymentProcessor.ts

NostrVerifier.ts

/lib

video-metadata.ts

lightning-helpers.ts

crypto-utils.ts

/pages

index.tsx

api/payment-webhook.ts

Key Dependencies:

json

{

"dependencies": {

"video.js": "^8.3",

"hls.js": "^1.4",

"ffmpeg.js": "^4.2.9003",

"nostr-tools": "^2.3.4",

"alby-js-sdk": "^1.0.0",

"lightning-bolt11": "^2.3.1",

"indexeddb": "^5.0.1",

"webcrypto-liner": "^1.2.0"

}

}

Required Cursor Rules:

Prioritize WebLN/NWC compatibility checks

Enforce content verification before payment processing

Maintain offline-first payment queue architecture

Include FFmpeg.js worker thread optimization

First Implementation Steps:

Create video metadata prototype using ffmpeg.js's writeMetadata

Set up NWC connection handler with budget controls

Build payment timer that survives tab hibernation

Implement metadata extraction on video load

Add signature verification overlay UI

Critical Questions to Resolve:

How to handle video seeks/rewinds in payment calculation?

What NWC permissions scope is needed?

How to persist partially watched payment state?

What's the fallback for non-Nostr users?

Example Payment Metadata Structure:

typescript

interface VideoPaymentTags {

version: '0.1';

creator: string; // npub

rate: number; // sats per minute

boostAddresses: {

primary: string;

secondary?: string;

};

signature: string; // NIP-07 signed video hash

createdAt: number; // UNIX timestamp

}

This prompt gives Cursor a clear roadmap while maintaining flexibility for AI-generated implementation details. The architecture balances web video standards with modern Bitcoin/Nostr integrations while emphasizing verification and user control.

The nostr stuff isn't added yet, but that's where it's headed.

Added splits to Pulse - Video!

Here it's streaming sats to nostr:npub1wzc9lz2f40azl98shkjewx3pywg5e5alwqxg09ew2mdyeey0c2rqaespmf , nostr:npub1hxwmegqcfgevu4vsfjex0v3wgdyz8jtlgx8ndkh46t0lphtmtsnsuf40pf and nostr:npub1j4u5gjzjyggr3h96x3gjy4akdgwxuk7mgvumv72gym2qyje7fn5s47d6x9

The code is up at https://github.com/pardus79/Pulse---Video but it's still early and there's a lot to work on.

nostr:nevent1qvzqqqqqqypzq59fxfk7pvdw6xekf0cz4l7yz207xg8zwsuwgudvhvrqtjq6hpamqythwumn8ghj7un9d3shjtnwdaehgu3wvfskuep0q9n8wumn8ghj7enfd36x2u3wdehhxarj9emkjmn99ah8qatzxye85dtw09knqutt0p5xgunkd4uksatsxfkxc7ns8yuxcunewgensemh8puhw7rtw34hqueev4ckgarnxashx6n2894njcelvfex7ctyvdshxapaw3e82egqyzmjas0lcllp65nlz5jw3ma8lucflvau7fpuatehsd3s5hdv3e0cqql6ufw

I guess I just vibe coded a V4V Netflix replacement 🤷

What if movies & shows worked like Podcasting 2.0? What if you could grab a video from anywhere, usenet, torrent, whatever, and you could verify it's from the creator. Then when you watch it, they get sats streamed to them. What if they set up a prism to forward sats to everyone who worked to produce it, WHILE you watch it?

Would you pay for movies that you would normally pirate, if it was easy AF to get the movie and to pay what you think it was worth? Would we even need content distributors anymore? Just blast out your movie!

What if the creator could get insight into how much of a movie the audience watches, based on the sats streamed? Or if they get boosted at the really good parts of the movie? Wouldn't that incentivize making really good films?

In just a few hours, with no coding done by me, I have an app that can:

Connect to my AlbyHub via NWC.

Read the metadata of a video file to detect embedded lightning addresses.

Streams 10 sats per minute to that address.

Can you see how huge this is? Not just the fact that some rando that can't code made this. But what something like this could enable for creators and provide a ton of value for audiences?

There's no real UI yet. I just wanted to get a proof of concept working. But it does what it's supposed to. I can stream sats to myself to watch an MP4 I made this morning for my meetup. Ran a quick command to add a lightning address to the file's metadata, and the app read it. 30 sats went from my Alby wallet to my Btcpayserver.

Cabin weekend to recover from camping weekend.

Replying to Avatar Mandrik

🔥ATTENTION NOSTR🔥

Mandrik's Bitcoin 2025 Meatup is taking place 6PM on Monday May 26, 2025 at Fogo de Chão Las Vegas.

All are welcome, and no ticket is required.

You must RSVP through OpenTable, mention "Mandrik's Meatup," and you're all set!

The event page:

https://www.eventbrite.com/e/mandriks-bitcoin-2025-meatup-tickets-1326133183049

RSVP with Fogo:

https://www.opentable.com/r/fogo-de-chao-brazilian-steakhouse-las-vegas

Select the following:

-Number of guests

-Date: Monday, May 26, 2025

-6:00PM for time

-On the next page, under "Reservation Details," add the note "Mandrik's Meatup."

-You're in!

(Note that OpenTable requires a phone number for the reservation)

EVENTBRITE TICKETS DO NOT GUARANTEE A SPOT AT THE DINNER.

YOU MUST RSVP VIA OPENTABLE ON OR BEFORE MAY 18!

Hope to see you guys there!

In 👍