Very excited to be launching WordCloud today on ProductHunt!

A simple API to create attractive, unique preview images from any URL.

The API wraps the open source stylecloud and wordcloud packages, with all profits from the API being set aside for these OSS authors.

Our core mission at Saasify is to provide sustainable funding for open source developers, and today marks a big step in that direction.

I'm particularly excited as this is our first launch for an API written in Python, where we're relying heavily on FastAPI to generate the OpenAPI schema that powers the API.

It's also open source -- check out the relatively simple code we used to generate this webapp.

WordCloud generated from the U.S. Constitution

Generating from a URL

curl -X POST -o 'example.png' \
  'https://ssfy.sh/dev/wordcloud/stylecloud' \
  -H 'content-type: application/json' \
  -d '{
    "url": "https://www.bbc.com/sport/athletics/50460861",
    "icon": "fas fa-running"
  }'

This example generates an image stored in example.png, containing a wordcloud from this article with the running icon.

example.png

Breaking down the example above, you can see the payload looks like:

Default Payload

{
  "url": "https://www.bbc.com/sport/athletics/50460861",
  "icon": "fas fa-running"
}

Changing these parameters will change the generated image.

Generating from Wikipedia

Let's try changing the shape to a swimming icon fas fa-swimmer from Font Awesome and use the wikipedia page for Michael Phelps.

curl -X POST -o 'example.png' \
  'https://ssfy.sh/dev/wordcloud/stylecloud' \
  -H 'content-type: application/json' \
  -d '{
    "url": "https://en.wikipedia.org/wiki/Michael_Phelps",
    "icon": "fas fa-swimmer",
    "gradient": "none"
  }'
example.png

Custom color palettes

Now let's try changing the palette to cmocean.sequential.Matter_10 from palettable.

curl -X POST -o 'example.png' \
  'https://ssfy.sh/dev/wordcloud/stylecloud' \
  -H 'content-type: application/json' \
  -d '{
    "url": "https://blog.ycombinator.com/ycs-essential-startup-advice/",
    "icon": "fab fa-y-combinator",
    "palette": "cmocean.sequential.Matter_10",
    "gradient": "none"
  }'
example.png

Awesome! To continue playing with the full power of the API, check out the API docs.

Hitting the public rate limit? Consider upgrading to remove all rate limits.

Thanks! 🙏