16 ms·
Ask HN: How do you handle user-generated content in your apps?
Hey HN,
My name is Melvin and I am currently working on an MVP for a web service called View, to make it easier for developers to upload, process, and deliver media in their apps.
The idea came to mind while I was working on a photo-sharing app and noticed first-hand how needlessly complex and expensive existing services are.
I wished someone would create an easy-to-use and affordable API/SDK ala Stripe but for audio, video, and images.
Is this something that was a pain point for you? I'd love to hear about your experiences building apps with user-generated content.
Cheers
- codingclaws 5y agoFYI - the hardest part of user generated media is probably the moderation aspect.
- view 5y agoThanks! What do you think is the most common moderation problem? NSFW media?
- PaulHoule 5y agoFirst the pornography comes, then the child pornography. That can even be minors sexting which is not a criminal network but it can still get you in trouble. Politics has a way of turning into violent threats, pictures of nooses, etc. Then there is the spam, actually that comes before the pornography.
- deleted 5y ago[deleted]
- deleted 5y ago[deleted]
- Razengan 5y ago* Urge to acquire wealth (spam, scams) * Urge to fuck (porn) * Urge to expand tribe (politics) That just about covers the roots of all human (and all animals in fact) evils, doesn’t it?
- meowster 5y agoI think those three points can further be distilled down to: greed
- codingclaws 5y agoIt's really just moderation in general. It's a long term, never ending issue. I think the big platforms employ thousands of moderators.
- coldacid 5y agoThere's a reason there's been so much research into AI moderation, although so far it always seems to either be useless or throwing babies out with the bathwater. Not to mention that without human systems to review what the AI decides (or even with) it tends to appear to users as automatic censorship (and they're usually not wrong about that).
- yeldarb 5y agoWe had pretty good success on https://paint.wtf https://paint.wtf (AI-judged Pictionary game) using CLIP for content moderation. Feel free to probe it a bit by drawing a dick or something on one of the prompts; it seems to do a pretty good job (if it doesn’t work please hit the “Report” button and let us know). Wrote about it here: https://blog.roboflow.com/zero-shot-content-moderation-openai-new-clip-model/ https://blog.roboflow.com/zero-shot-content-moderation-opena...
- PaulHoule 5y agoThe difficulty of it is the imbalance. Once I had 10,000 NSFW images in a collection of 1,000,000. You might say that 99% of the images are good and for most classification problems 99% accuracy would be wonderful. But it's not good enough. You might find some simple tricks that eliminate 90% of those NSFW images and now you have 99.9% accuracy. That makes you look like a genius in the machine learning world. But it's not good enough. Even 99.99% accuracy (100 bad images) is not good enough Even if somebody found one NSFW image you could get kicked out of Adsense. One child porn image uploaded to your site won't put you in jail but it is still completely unacceptable.
- tjpnz 5y agoI think a large part of the issue could be solved through taking a more "common sense" approach to product design. Imagine you offer a platform like Facebook and I registered a few hours ago. Is it really smart to allow me to start uploading dozens of images or livestream to potentially thousands of existing users? Surely a better approach would be for my account to have restrictions on what I can do and the number of times/period for which I can do it. Once I become trusted in the eyes of the platform those restrictions can start to be loosened.
- steve_adams_86 5y agoWe've been studying this problem for a product we're working on, and it seems like the depths of this hole get dark and very deep. We expect to need to hire someone to moderate early on. As mentioned, there is child porn, various other forms of illegal porn, illegal violence, hatred, propaganda to incite violence, etc... Then of course any kind of content you might not approve of due to any personal or company policies, if relevant. All of our material will be forced to be public so the user should have no expectation of privacy, but for many people this won't matter. Just look at Facebook; that's a public-facing service, and people upload atrocities to it constantly.
- dredmorbius 5y agoThe current discussion seems to fall under "Trust and Safety". I'm not aware of any specific guidance or organised thought, though I'd be really surprised if there weren't academic coursework or professional training beginning to appear. You'd do well to look at established services. Craigslist's list of prohibited content, the T&C of Facebook, Twitter, Reddit, etc., are going to be useful. Just off the top of my head: Cyberstalking, pornography, child porn, piracy, malware, fraud, illicit goods (guns, drugs, black/grey market, stolen goods), intimidation, gangs, bullying, alcohol, tobacco, prescription medications, hoaxes, various ineefective / "alternative" products and remedies (which themselves run the gamut of legality, even defining this is at best difficult), advertising, advertising for protected or regulated sectors / goods (housing, employent, personal and professional services, beauty care, escorts, security services, licensed professional, ... As with the goods section, this rapidly gets complex), legal services / aid, political activities, fomenting revolutin / freedom fighters. User-generate content is a massive concern. One concept I'm seeing getting increased traction is a focus not on the quantity of posted content but the prevelance or level of access or views. Facebook and YouTube especially are increasingly discussing problematic content not in terms of posts or videos, but of views or presentations of those. This ... starts making trade-offs in moderation much more viable, principally because there is an inverse logarithmic relationship between the number of items and the views: If n items gets n views, then 10*m items get n/10 views. Very roughly. This means that you can set a goal in terms of the number of items viewed (and see what the maximum unmoderated prevalence will be), or target a specific prevalence and determine how many reviewers will be required. For human moderators, the number of items reviewed per day seems to be in the 500--800 range. Note that 800 items/day in 8 hours is 100/hour, or 1.6 per minute, or 36 seconds per item. That's inclusive of breaks, overhead, and non-moderation tasks. Moderation itself is a very psychologically loaded task. You'll either want to rotate people through it from other functions, or see a heck of a lot of staff turnover. If anyone has greater insights from one of the current large UGC services (FB, Twitter, Instagram, Whatsapp, TikTok, Imgur, Reddit, etc.), I'd really like to know what current internal practices are. Some of my previous work had some incidental exposure to this area (I was tasked with removing identified content, working on both our internal and external CDN provider to do so). After a couple of spot checks to see I was unlikely to be deleting content which wouldn't meet removal criteria, as in literally two, I decided I simply didn't want to take the risks of performing additional checks. My removal process turned out to be quite effective --- what the CDN provider's specs suggested might be a weeks-long process removed some millions of items over a weekend. That was on what is by current standards a very modest-sized social network. I've written on this previously citing YouTube and Facebook sources here: https://joindiaspora.com/posts/f3617c90793101396840002590d8e506 https://joindiaspora.com/posts/f3617c90793101396840002590d8e...
- doh 5y agoThat's why we built our Attribution Engine [0]. We help platforms to deal with CSAM, IBSA and any toxic content and copyright. The way it works is that platform uses our SDK through which they "send" all uploaded content. The SDK generates a fingerprint that is sent to our service and a license is issued. The license is non/permissible, so they instruct platform and the uploader (creator) what to do. We also provide payment distribution, usage reporting and ADR (alternative dispute resolution). If platform uses our service, we indemnify them from any liabilities under DMCA, EUCD and others up to $50M in damages (legal cost and/or court orders). We charge % of revenue generated by the platform for our services. If platform generates no revenue, the service is free. We don't charge per lookup nor there is any scale limit (well, there are throughput limits, but they are quite far for most platforms [currently we can search around 1.1k hours of content every second]). We cover video, sound recordings and compositions. Images are coming late this year and text sometimes next year. Just a quick note on the moderation. The benefit of our structure is the moderation is "outsourced" back to law enforcement and gov agencies, like NCMEC and FBI in US, Bundespolizei in Germany, etc.). This means platforms don't have to hire people to moderate the covered content, because the liability is transferred back to the organizations that are create it in the first place. [0] https://pex.com https://pex.com
- codingclaws 5y agoThat sounds interesting, but complicated. We built our adminless Internet forum [1] for the same reason. It's splendid on the dev side because initially we built traditional moderation tools (they still exists in the Git), but then we deleted it all and it felt much simpler. Still waiting to see if it will work from a moderation standpoint. The site's been live for almost a year with no issue yet. Edit: It's a text only forum, which makes this a lot easier. I was thinking about allowing images but with a high per image fee. [1] https://www.peachesnstink.com https://www.peachesnstink.com
- doh 5y agoIt's complicated, because there are legal requirements across many different jurisdiction. The product was built to explicitly solve for the liability issues platforms are facing. I like your solution. Up until it works for you, that's great.
- new_guy 5y ago> and noticed first-hand how needlessly complex and expensive existing services are Can you give some examples? Out of everything I would consider 'complex', handling media wouldn't even make the top 1,000 and services like AWS mean you can store petabytes for pennies.
- eurasiantiger 5y agoMedia is very difficult on the internet. It’s not enough to upload a video and share it, it needs to be transcoded into several different formats (h.264/mp4, vp-9/webm, h.265/hevc), multiple resolutions (from 2160p to 280p) and multiple bitrates (to support low/high bandwidth) as well as different framerates (60/30fps), all while retaining sync with an audio track that gets completely separate processing and compression. None of this is a simple task, and you also need to serve the correct files to the correct clients - fun!
- JamesSwift 5y ago> you also need to serve the correct files to the correct clients Thats been the hardest part for me as a developer. I've had several extended debugging sessions that ended up being "the media is encoded incorrectly for this android device".
- view 5y ago> Can you give some examples? Someone woke up one day with a $8,000 bill while encoding videos: https://github.com/awslabs/video-on-demand-on-aws/issues/48 https://github.com/awslabs/video-on-demand-on-aws/issues/48 There's also this pretty architecture overview in the repo: https://github.com/awslabs/video-on-demand-on-aws/blob/master/architecture.png https://github.com/awslabs/video-on-demand-on-aws/blob/maste... In my opinion, it's too complex and I'd prefer a more simple solution to get to market faster. Imagine adding just a few lines of code to get started instead of setting up all these things on AWS, where you might end up paying up to $0.12/GB for outgoing bandwidth as well.
- eropple 5y ago
- deleted 5y ago[deleted]
- Zealotux 5y agoI'm using AWS' presigned URLs to let my users upload directly to an S3 bucket, with a lambda function to generate thumbnails, I keep track of the user's uploads through my app's database. This is as close as I imagine an "affordable API for audio, video, and images".
- view 5y agoThanks for the feedback! How long did it take you to implement this and are you also encoding videos for adaptive streaming?
- Zealotux 5y agoI had never worked with such API before so it took me roughly two days, the AWS documentation is abysmal, and I could've one that in just a few hours if only they cared about documenting their APIs better. My biggest mistake was going for a kind of presigned URL that was not giving me much control over the size of files sent (I don't find it anymore for some reason, looks like the documentation changed). Go with PresignedPost, it allows quite a lot of control and it's an amazing way to avoid load on your servers. >are you also encoding videos for adaptive streaming? Can't help you with that, I only worked with images, best of luck!
- mooreds 5y agoI have played around with AWS Elastic Transcoder: https://aws.amazon.com/elastictranscoder/ https://aws.amazon.com/elastictranscoder/ If video is of interest, I'd definitely take a look at that and see if it meets your needs. It's one of those specialized serverless offerings from AWS that you pay as you use.
- ddorian43 5y agoA pain point that I'm considering is building a video hosting service but at 0.3x - 0.1x price point of existing ones. Hosting, encoding & streaming video is expensive. The "pennies" that another user mentions add up really fast.
- view 5y agoMaybe we could join forces? I'd be happy to chat with you or anyone interested. My email is admin at view.dev
- jjgreen 5y agoI've worked in that space, the main problem is that your natural audience (small-time producers) tend to have small budgets and short-term needs. So you spend time finding them but they don't pay much and not for long.
- CaptArmchair 5y agoThis is also what prompted YouTube to derive revenue from advertising rather then charging content creators who want to upload video. In the case of YouTube, power laws have inverted the relationship with content creators: it's in YT's interest to not charge at all. A free to use / consume platform has turned YT into a commons which captures large audiences which drive advertising revenue. Vimeo went into the opposite direction. They have a tiered pricing model charging for the use of the features and tools they offer. However, they pivoted away from catering to a large and diverse audience. Instead they focus on B2B communication. Vimeo is excellent for professional videographers or marketing agencies publishing video content. The take away here is that the expense of processing and publishing video isn't going to lower dramatically in the short run. As hardware became ever more powerful over the past 2 decades, the demand for high-quality video has paced along in lockstep: 1080p, 4K,... So, the costs associated with hosting high quality content haven't dropped significantly in that regard. There's not much you can change about that. What you do control is the business model you develop to cover the costs of hosting content. And that means finding a profitable market and asserting a good product/service fit up front, if you can. Instead of building an app "to make it easier for developers to upload, process, and deliver media in their apps", OP ought to think beyond developers, and rather direct themselves to those who are either producing or consuming content. Another way of thinking about this might be: Which problem really is getting solved? And whose problem really is it? Is it hosting audiovisual bitstreams? Is it processing? Is it just providing an at-the-ready API which allows users to just easily upload and embed audiovisual material everywhere without even requiring any technical knowledge? The latter, by the way, already exists in several forms on the Web - e.g. https://oembed.com/ https://oembed.com/ - which is already implemented in e.g. WordPress and supported by large social media platforms such as Instagram and YouTube.
- al2o3cr 5y agoan MVP for a web service called View Nitpick: if someone types in "user-generated content view" to their favorite search engine, they're not likely to find you.
- view 5y agoYeah, I guess you're right. Do you have experience with SEO? What would be the best way to improve search ranking? I suppose running a blog with good content might be helpful so that someone might find the service using a search term like "video streaming api" or similar.
- finiteseries 5y agoHow the hell was “view” available as an HN username til 47 days ago!? On topic, you could try attaching a domain specific word to the end until you’re big enough to take over the generic one, ala Flock Freight, Cured Health, Glow Credit etc. Lot of those lately.
- view 5y agoAppreciate the suggestion, thanks! I got the domains view.dev and view.page, what do you think of those? View.com was taken. They're selling windows, I mean actual glass not the OS.
- option_greek 5y agoNo way you will ever come in the top 10 results even if user is specifically searching for your product. View is a too generic. I search for rust docs etc a lot and I still see a lot of results of generic rust on iron or cleaning products for rust etc.
- rPlayer6554 5y agoI was thinking about this and one thing i came up with was "Stowage." An airplane has stowage so it's "users" can store their "content" then retrieve it. The first page is all dictionary results so it seems pretty unique.
- onion2k 5y agoHow do you handle user-generated content in your apps? Very similar to how I'd handle toxic waste. I'd touch it as little as possible, and ideally I'd like it to be someone else's problem.
- patwolf 5y agoThe app store has requirements for dealing with user-generated content. The biggest pain points for me isn't with enabling users to upload content but instead with the moderation around it. One user might want to block another user and filter out any content they produce. Or we may need to manually review and delete content that a user has reported. That's the biggest pain point.
- TekMol 5y agoMy "pain point" is a bit earlier in the process: Auser authentification. What is everyone using for this? How do you turn a static website where a user can set some configurations (say the color scheme) into a site where the user can log in and save their settings? In the past I rolled my own solutions. But for new projects I am considering to use a library or framework. I guess Django, Flask, Laravel, Symfony and Express all come with some default auth mechanism. How is HNs experience? Are you using these? Are you happy with them?
- Cicero22 5y agoYou shouldn't be rolling your own authentication. That's just asking for trouble. I don't have experience with those frameworks, but the rails equivalent, devise, is very good. I assume it's the same for any mature framework.
- ipaddr 5y agoRolling his own doesn't mean custom algos. It means he will use the buildin language functions and/or external packages for that functionality while manually piping all of the pieces together. He is not asking for trouble..
- Cicero22 5y agoWhile you can definitely manually pipe all of the pieces together and have a functioning system, it's significantly easier, and likely more secure, to use the battle-tested auth library of a framework. One could also use the builtin language functionality and external packages to write custom crypto, and I think we'd both agree that that's a bad idea. I'd argue that it's the same for authentication in general.
- ipaddr 5y agoI understand that point of view and I agree for the majority of projects but relying on a fully working system that is coupled to some structure can be limiting if you need to make something slightly different. I see a frameworks like laraval as the middle path where you can rely on the framework to handle auth but also can make any changes you may need.
- auspex 5y agoWhat are you all doing to secure the user content? To ensure the content isn’t exfiled
- JusticeJuice 5y agoI think you just described https://cloudinary.com/ https://cloudinary.com/
- Nagyman 5y agoThis came to mind for me as well, as it's something I landed on in the past for managing UGC. The primary benefits being a decent api and administrative interface for moderation. It's certainly not perfect, but there's not a lot of competition in the space that I could find. I think most devs lean towards DIY.
- michaelbuckbee 5y agoOr https://www.simplefileupload.com/ https://www.simplefileupload.com/ (good if you're on Heroku) or Uploadcare or any of the many other services that help do this kind of thing.
- savrajsingh 5y agoImagekit.io is good too
- nathancahill 5y agoAnd filestack.com
- enlyth 5y agoWe use Cloudinary at work and I would recommend it to anyone, I think it's an awesome service and the API is really easy to use. They offer a pretty generous free tier for personal stuff as well, although I wish they had some plan that was between the free tier and the $99/month cheapest one, which is quite a steep increase from paying nothing.
- butz 5y agoYou could sell moderation as additional service, either AI based (cheaper) or employ actual people. Otherwise, developers probably should be ones responsible for moderating media uploaded through their apps.
- qwerty456127 5y ago> Otherwise, developers probably should be ones responsible... How do you explain Google somebody else is responsible when they decide to nuke your app?
- steve_adams_86 5y agoI think it's important to recognize here that human moderation in many cases means exposing people to potentially traumatizing imagery. Gore, child porn, you name it. I think providing this service ethically could be very challenging.
- robbedpeter 5y agoMaybe ipfs and p2p is a good tool for this? Escalate through increasing degrees of content sharing and validation, from anonymous on up, and build templates off of existing ipfs hosts that already do moderation?
- tothrowaway 5y agoI would love a "Backblaze of user generated content". The existing players in the market are way too expensive (likely because they run off the cloud cartel and pass along their bandwidth tax). Basic image handling isn't too hard to deal with on your own, but video and audio is a huge pain. The uploading (which needs to be fault tolerant and resumable), encoding (which takes a long time), storage (which is large) and playback (which requires a half-dozen different formats) is all very annoying to deal with. So much so, for my SaaS products, I only allow my users to upload images! I had the exact same idea as you, and shelled out a few hundred dollars for a domain from a squatter. My prototype basically reinvents fault tolerant resumable uploads (like tus.io). On the backend, it streams the file to Wasabi and Backblaze. That's as far as I got. Video/audio scares me, but I'll get to it eventually. I really like the content moderation as a service (via AI, or humans) idea that others have mentioned.
- bethecloud 5y agoStorj DCS is a good option for storing and delivering user-generated content. It is globally availble - so you don't need to worry about AZ replication, and it's 1/10th the price of Amazon S3. We were paying $100,000 a month storing user-generated content, and now are paying about $10,000 a month after migrating
- lamnk 5y agoCan you elaborate more on specifics, like what type of objects do you store on Storj, how's the performance?
- antonyh 5y agoThe moderation of UGC is something that's killed off a number of my own ideas, at best 'parked' them. CSAM only goes so far, and frankly it's just too reactive - proactive defence is too costly for self-funding early stage startups such as myself. Building the upload/delivery stream was easy, it's all the 'needless complexity' that adds value. You know, like privacy controls, access control, moderation, image formats and optimised delivery, indexing, search, tagging, etc. I'll probably reimagine it and find better ways of hosting content but with my vision and UX. Maybe Cloudinary as folk have suggested, maybe some other SaaS DAM product with a solid track record - I doubt I'd trust an early stage MVP if my customers need to rely upon it. Too risky for my tastes. Now if there was a moderation-as-a-service (MaaS?) that would have uses at the right pricepoint.
- doh 5y agoExactly why we built our Attribution Engine [0]. We focus not only on the technology, but the liabilities platforms gain from their operations. [0] https://news.ycombinator.com/item?id=28279105 https://news.ycombinator.com/item?id=28279105
- codegeek 5y agomux.com (YC backed) is doing stripe for video already. Their API is really to use.