Show HN: Screen.rip – API for capturing web screenshots
screen.rip
screen.rip
laktek, I'd be interested in hearing how you would turn this into a consumer product? For myself, I'd like an API that wraps devtools for remote debugging (on users machines). Am able to extract useful info via performance counters and computed styles. But the entire process can be made much more friendly I imagine.
Good luck, and keep building!
However, APIs do seem to arouse curiosity among people. Lot of the emails I've been getting follows the theme of "I saw your API and was wondering how we can use to solve X". This way I get a more focused set of real problems (and their potential value), rather than I try to hypothesis problem spaces.
PS: Another cool thing about releasing API first is I can start charging people sooner, rather than having to wait till I build a finished product. It helps since I'm bootstrapping.
I love this.
https://www.prerender.cloud/docs/api
curl http://service.prerender.cloud/screenshot/https://google.com/ > out.jpg(and people have purchased Screen.rip tokens in the last hour or so :))
I tried dabbling with [chromeless](https://github.com/graphcool/chromeless) and wasted a bunch of time on some random error that I eventually found out was a bug.
If I had to do it myself I'd use Docker + Selenium, but I'd definitely give this a shot first.
This looks like very favorable pricing if you don't need certain features.
But, if you need support for setting: location, turning on flash, proxies, and https://urlbox.io/ is also very useful.
What I found is that this market is relatively crowded at the low end, with services that either don't state what browser they are using to render a site for a visual check, or which state and only support one browser.
It looks like screen.rip is also aiming at this low-end. I don't see anything on there about what browser uses, and nothing about choosing a browser. And it is only $7 (for 10000 images).
It seems to me that there may also be a market for people happy to pay $70 for the same thing, with the ability to specify which browser, and have the list of available browsers include the ones that are kind of inconvenient to support (older IE). Sure, it's a lot more of a technical slog, but I imagine someone facing the sort of troubles and trying to monitor the appearance of their site across all the major browsers would find that 10 X the stated price is a relatively good deal compared to the misery of setting all that up locally.
It’s tangently similar to screen.rip, but it’s much more focused on getting up and started quickly and making it easy to monitor sides that require authentication. Let me know what you think.
Disclosure: I know the creator.
Disclosure: I know the parent commenter. And the creator. :)
Mark me down on this list. In particular, I'd like an API that lets me have a more detailed look into the web page - for example, list all images used by the web page (this is a lot harder than it sounds once you consider images can be loaded by CSS, IMG HTML tag, can be delayed loading, etc).
In short, I'd love an API where I can see the same details of a webpage as Chrome's debugger shows. I looked into Chrome headless, but there was some issue with hooking into the debugger (admittedly I know only the basics about Chrome headless).
For training our customers we often record little demos of how to achieve something in our app, and then send it to them as an animated GIF in Intercom. We've been using Giphy but it's pretty clumsy. The app itself is always in the way, especially on a laptop screen and then you need to record the clip, save it to disk and then drag it from disk into an Intercom conversation.
After trying a few other solutions there doesn't seem to be a pain-free way of recording a clip and then having it available as an animated GIF ready to paste into the browser. I'm not sure if some of the issue is that it's just not possible to but an animated GIF in the clipboard on OSX (it just comes through as a single still shot).
Does anyone have any recommendations for this workflow?
[0]: https://chrome.google.com/webstore/detail/chrome-capture/gga...
My wife recommends https://www.useloom.com/ for you, though I myself have not used it.
There is also apparently https://screencast-o-matic.com/
You could maybe immitate the workflow used by wraith? https://github.com/bbc-news/wraith
For example to setup screenshot diffs between an existing production site and local dev, use:
# (required) The domains to take screenshots of.
domains:
current: "https://prod.yoursite.com"
new: "http://localhost:8000"
paths:
home: /pageyouareworkingon.html
Not sure how to connect to localhost 8000 from the web though...I'm a cheapskate, though, and don't mind spending the time to write my own screenshot script via Selenium.
I'd suggest adding some kind of Stripe branding to your payment form to make it a little more trustworthy.
Get it for $0.000365 per screenshot from me (shameless)
[1]: https://www.prerender.cloud/docs/api
curl http://service.prerender.cloud/screenshot/https://google.com/ > out.jpgDisclaimer: I created screen.rip
No need for a disclaimer, after all, this is your Show HN ;)
What I like about them in particular is their buffering: once a screenshot is made, it can be served from their server 'unlimited' times without counting as a new screenshot.
A real improvement on their service (worth paying extra for me !) would be a way to dismiss the banner on github projects for new visitors. Obviously their browser is not logged into Github at the moment of the screenshot, so those screenshots mainly shows a general Github welcome banner :-(
I run a website builders review website and have always wanted to write a script that captures every pricing page so that my readers could scan them all at once.
Two problems have kept me from this:
1) Scrolling (which it looks like you've fixed— haven't seen other screenshot APIs do this— awesome!) 2) Pricing pages change often— so manual screenshots don't make sense. Does your auto-updating take care of this? (ie: captures a new screenshot each time the page is updated)
const express = require('express')
const app = express()
const puppeteer = require('puppeteer')
const uuidv1 = require('uuid/v1')
const fs = require('fs')
const validUrl = require('valid-url')
app.get('/', function (req, res) {
(async () => {
const url = req.query.url;
if (!url) {
return res.send({error: 'Need to specify url param e.g. ?url=https://google.com/'});
}
if (!validUrl.isUri(url)) { // Also protects against file://...
return res.send({error: 'url not valid'})
}
const id = uuidv1();
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080})
await page.goto(url)
const buffer = await page.screenshot({path: id + '.png'})
const fullPath = __dirname + '/' + id + '.png';
res.sendFile(fullPath, function () {
fs.unlink(fullPath)
})
await browser.close()
})();
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})In fact, the two are often inversely correlated because engineers can be so worried about what technology, what stack, what language, instead of worrying about the real deal: getting the users.
IMO there should be a line of what to outsource and what to build yourself. In my mind simple things like this go into second category.
if (!validUrl.isUri(url)) { // Also protects against file://...
It does? ▶ cat valid.js
var validUrl = require('valid-url');
if (validUrl.isUri("file:///etc/passwd")){
console.log('Looks like a URI');
}
▶ node valid.js
Looks like a URI
Perhaps the problem requires a little more than 15 minutes to do well :)So assuming a rate of $80/hr (which is on the low-side), it cost you $20 in time to do what you could have for $7.
A CTO worth 500k/year would probably realise that paying $7 is more cost effective.
Basically:
1. sign up for droplet 10 min
2. install google-chrome and webserver 10 min
3. call google headless from a CGI script 10 minimg: https://imgur.com/a/ULr4I
page: http://www.juliendesrosiers.com/
Edit: I know I should've used @font-face for my logo, but still, it bugs me.
I actually tried to make the font rendering better. Installed few custom fonts and also tweaked few system options. I agree it might not be crisp as macOS.
Wonder if hardcore Linux desktop enthusiasts have any tips here?
Next step: animated screengrabs (gif/webp)? :)
EDIT: This is also a really nice font library as well: https://www.emojione.com/ though you have to pay for a commercial license if that's your end game
100's of millions?
$7 per 10k stops being cost effective at that scale.
It's literally 3 lines of code. Or even a one-liner if you really want.
require('casper')
.create()
.start('https://rms.sexy')
.then(function() {
this.capture('test.png');
}).run();So yeah, in my case casper is a no-go.
Time to Google.