Repository navigation
Commit f6fd26b
Make the feed ad worth opening: artwork, a brand line, a quieter title (#201)
Reported off rssamplifier.com/topics/rust.rss: the ads read as spam and nobody
would open them. Three changes, none of which touch what the advertiser wrote.
**The title no longer leads with the label.** "[Sponsored] Ship faster" becomes
"Ship faster (Sponsored)". A leading bracket is the first thing the eye meets
in a list of headlines and it reads as a spam subject-line prefix, so the item
is skipped before the offer is ever read. Trailing, the headline gets to say
what it is and the label still travels everywhere the title travels -- and
<category> carries it machine-readably besides. Nothing is hidden; the same
word is in the same field.
**The card carries the artwork.** A feed item sits between real blog posts that
each have a title, a picture and a few paragraphs. A bare line of text next to
them does not read as restrained, it reads as broken, and gets scrolled past.
The card now leads with the advertiser's hero image, then an <h3> headline, the
body, and the call to action. width is set and height deliberately is not:
readers scale to their own column, and a fixed height distorts every image that
is not exactly the ratio we guessed.
**A brand line names who is paying.** The logo where there is one, and always
the destination host. "Sponsored" tells a reader an ad is an ad; the domain
tells them whose it is, which is what they actually decide on. The host cannot
come from our click URL -- that is always crawlproof.com -- so destinationHost
reads it off the advertiser's own logo/image and returns "" rather than
guessing when the only candidate is our own storage.
The companion migration undoes a decision from the format's first migration,
which dropped image_url on the reasoning that a feed item has no artwork. That
was right about the one-line `text` style and wrong about the format. Restores
it from each campaign's medium rectangle, which is the creative the hero image
was resolved for: 96 of 106 campaigns. The other 10 render a card with no
picture, which the renderer treats as ordinary rather than assuming an image.
No copy is invented. Bodies average 76 characters because that is what the
advertisers wrote; an ad describing a product in words its owner never wrote is
a fabricated claim however good it looks. What changed is the layout around it.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 91bef25 commit f6fd26b
3 files changed
Lines changed: 168 additions & 19 deletions
File tree
- lib/ads
- supabase/migrations
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
339 | 345 | | |
340 | 346 | | |
341 | | - | |
| 347 | + | |
| 348 | + | |
342 | 349 | | |
343 | 350 | | |
344 | 351 | | |
| |||
376 | 383 | | |
377 | 384 | | |
378 | 385 | | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
384 | 400 | | |
385 | | - | |
| 401 | + | |
386 | 402 | | |
387 | 403 | | |
388 | | - | |
| 404 | + | |
| 405 | + | |
389 | 406 | | |
390 | 407 | | |
391 | | - | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
392 | 421 | | |
393 | 422 | | |
394 | 423 | | |
| |||
431 | 460 | | |
432 | 461 | | |
433 | 462 | | |
434 | | - | |
435 | | - | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
436 | 467 | | |
437 | 468 | | |
438 | | - | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
439 | 472 | | |
440 | 473 | | |
441 | 474 | | |
| |||
464 | 497 | | |
465 | 498 | | |
466 | 499 | | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
467 | 524 | | |
468 | 525 | | |
469 | 526 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
233 | 234 | | |
234 | 235 | | |
235 | 236 | | |
236 | | - | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
237 | 247 | | |
238 | 248 | | |
239 | 249 | | |
240 | | - | |
| 250 | + | |
241 | 251 | | |
242 | 252 | | |
243 | 253 | | |
| |||
300 | 310 | | |
301 | 311 | | |
302 | 312 | | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
303 | 361 | | |
304 | 362 | | |
305 | 363 | | |
| |||
347 | 405 | | |
348 | 406 | | |
349 | 407 | | |
350 | | - | |
| 408 | + | |
351 | 409 | | |
352 | 410 | | |
353 | 411 | | |
| |||
0 commit comments