gnosisguild / tabula

Instant web3 publications for writers, DAOs, and any Ethereum-based account.
https://tabula.gg
GNU Lesser General Public License v2.1
30 stars 7 forks source link

Dynamic metatags and favicons in "social previews" #156

Open auryn-macmillan opened 2 years ago

auryn-macmillan commented 2 years ago

Is your feature request related to a problem? Please describe.

Tabula uses custom dynamic (set via JS), which results in previews (that do not execute JS) will display the same generic metatags on every page (landing, publications, and articles).

image

This is sub-optimal for publishers because:

  1. the miss an opportunity to hook their readers with custom images, titles, and descriptions on their posts.
  2. it makes publications feel more like profiles on a platform and less like something truly owned by the user.

Describe the solution you'd like

We have added custom metatags, but found that web-crawlers did not pick them up because it required the crawler to execute the page's javascript code, which it either did not or did too slowly (IPFS is often quite slow). Meaning social previews did not render as expected.

To solve this, we'll probably need to add some kind of caching layer for the social previews.

Reading this article lead me to a service called prerender.io, which seems to do exactly what we're after. I'm generally not a fan of adding services like this to tabula, but it could be a reasonable compromise since it would presumably only affect the social previews.

That said, perhaps an alternative would be to build something similar to prerender.io using a github action which runs on a schedule (say once every 30 minutes) and rebuilds the cache of social previews based on any new or updated publications and articles.

Additional context

Here is an example of a rich social preview from a publication on mirror.

image

One reason for wanting this is for feature parity with existing publication tools like Medium and Mirror. But more importantly, one of the key design choices of Tabula is to make each publication feel like the top level of the application. Along with #20, allowing publications to customize the metadata on their publication and articles is crucial to publications really feeling like their own space, rather than simply being profiles on a platform.

cedricwaxwing commented 1 year ago

We should consider other solutions that don't necessarily involve us posting it. We should research what else is possible.

See prerender.io