Skip to content

How we manage content at Apify – A hands-on guide

Hey there! As a startup founder, managing your company‘s content probably seems deceptively easy. Just launch a site, add some basic docs, write a few blog posts, and call it day, right?

Well, I‘m here to tell you – it‘s not that simple! As your scrappy little startup grows into a real business, your content needs grow too. Before you know it, you‘ve got all kinds of teams needing to publish content, often requiring developer help to make even tiny changes.

Trust me, I‘ve been there! That‘s why we here at Apify use a mix of CMS tools to empower our teams to create and manage their own content. It gives them independence while saving our developers for more pressing projects.

Intrigued? Read on and I‘ll let you in on how we use Ghost, Strapi, GitHub, Intercom, and more to wrangle all our startup content. I‘ll share why we chose these tools, how we optimized them to suit our needs, and some lessons we learned along the way. Let‘s dive in!

Apify Blog – Powered by Ghost

Let‘s start with the blog, arguably the heart of a startup‘s content. Your blog lets you share your knowledge, engage with users, drive traffic, and more. So having a solid blogging platform is mission critical.

When Apify was just getting started, we used Medium to host our blog. It was an easy, no-fuss way to start publishing content quickly. But over time, we started wanting more control and customization options. Like many startups at this stage, we decided to make the leap to Ghost, the popular open source CMS.

Here‘s why Ghost works so well for us:

  • Open source – This aligns perfectly with Apify‘s values and allows us to customize Ghost to suit our specific needs.

  • Extendable – With a robust API and webhooks, we can integrate Ghost with other tools like Intercom, Zapier, and more.

  • Handy features – Production previews, scheduling, image optimization, and many other features help streamline our workflow.

  • Customizable – Tons of themes and templates allow us to tailor the blog‘s appearance to our brand.

For context, here are some key stats on the Apify blog:

  • 60+ posts published since launch
  • 25,000+ views in the past year
  • Average time on page: 2:30 minutes
  • 55% of traffic comes from organic search

We use Ghost‘s templating engine called Handlebars to customize one of their themes. Now, if you‘re not familiar with Handlebars, it can seem a bit strange at first with all those double curly brackets! Luckily, there are great resources online to learn the ropes. Even our less tech-savvy team members picked it up after some practice.

The key benefit is that our blog content all lives in Ghost, while developers are freed up to focus on new projects. It‘s a win-win!

Website Content – Built with Strapi

Managing website content used to drive me crazy. Our content team would request small text changes or adding new pages using existing templates. As a developer, these tiny requests interrupted my workflow. But for the content team, waiting on devs delayed publishing.

Everything changed when we started using Strapi for our reusable website content! Strapi is an open source headless CMS that works great for companies like startups with lots of templated content.

Here are a few key benefits we realized:

  • Editor-friendly authoring – No more waiting on devs! Editors can create/update content independently.

  • Developer-friendly – Devs create templates once, and editors populate them after. No interruptions for minor changes!

  • Content APIs – Strapi gives you ready-made APIs for fetching content.

We use it to manage content like:

  • Success stories (15+ so far)
  • Industry and use case pages (8 currently)
  • Our about page
  • Changelogs
  • Actor ideas
  • Apify alternatives

Let me walk through the workflow:

  1. Developers create templates for new content types in Strapi.

  2. Editors author new content pieces using these templates.

  3. We fetch the finished content via Strapi API.

  4. Content gets rendered on our site!

This freed up our dev team to focus on higher priority projects. Now writers create content independently without waiting on engineering resources. It‘s a win-win!

According to Strapi‘s 2021 survey, over 70% of users said it reduced developer workload and accelerated development cycles. Our experience mirrors those results!

Documentation and Developer Portal – Powered by GitHub

As a developer, few things make me happier than open source documentation! 🥳 That‘s why Apify‘s documentation and developer portal live in a public GitHub repository.

Some key benefits GitHub provides:

  • Version control and tracking – Easily view changes and who made them. Revert to earlier versions if needed.

  • Review process – Require reviews before merging changes to ensure quality.

  • Open sourced docs – Aligns with our values and allows community contributions.

During our website build process, docs get:

  1. Uploaded to Amazon S3 for storage
  2. Fetched from S3 and cached globally on CloudFront CDN
  3. Consumed by our Next.js site during static generation

We keep some developer-focused content like API docs in separate repos. For those, we skip S3 and fetch directly when building the site. Our API docs are created using Apiary which lets us test endpoints as we write – handy!

Overall, GitHub provides the right balance of control, collaboration, and open source access for our technical content.

Help Articles – Powered by Intercom

When I first started at Apify, Intercom was our one-stop-shop knowledge base. It contained everything from getting started guides to technical debugging tutorials. We displayed all the content at

Over time, we found it better to distribute content to specialized locations. Now Intercom focuses on general user guides and troubleshooting articles.

Here are some benefits we get with Intercom for help content:

  • Centralized knowledge base – One place to store and organize all our support articles.

  • Chatbot training – Intercom uses these articles for auto-replies in chat, so support team doesn‘t have to respond to every simple query.

  • Audience targeting – Advanced segmentation features help us target content to specific user groups.

  • Handy integrations – Zapier, Slack, and other integrations expand what we can do with our knowledge base.

For example, we have 40+ help articles covering:

  • Getting started guides
  • Troubleshooting tips
  • Basics of web scraping
  • Debugging Actors

To customize the styling, we fetch the pages through a proxy server powered by Next.js. This lets us apply our own branding.

Intercom brings all the features we need in a single help desk and knowledge base platform. Their recent acquisition of ForumOne also hints at exciting improvements coming for customer communities and support!

Careers Page – Powered by JazzHR

Like many startups, our early careers page involved developers manually updating HTML job listings. As we grew, this became a headache for engineering and our people operations team.

Everything changed when we switched to JazzHR‘s recruitment platform. JazzHR empowers our people ops team to fully manage job listings without developer help. Key features we love:

  • Candidate tracking – Track applicants and manage interview scheduling in one place.

  • Customizable listings – Tailor job listings with custom sections and formatting.

  • Performance metrics – Analytics on job views, applications, and source of candidates.

  • API access – Integrate and display listings on our site via APIs.

Here are some key stats from our JazzHR account:

  • 20+ roles hired for so far
  • 5000+ applicants in our database
  • 150+ candidates sourced per open role
  • 1 week average time-to-hire

To display listings on our site, we fetch the formatted descriptions from the JazzHR API and inject them into our React components.

This frees our developers from constant careers page updates. Our people team owns the entire hiring process end-to-end.

Bonus – Discord for Community Support

While not a traditional CMS, I‘d be remiss not to mention Apify‘s Discord server!

Discord provides a valuable space for our developer community to connect. It‘s the perfect place to get help building Actors from more experienced members.

Key features we love:

  • Organized channels – Channels for specific topics keep everything on-topic.

  • Searchable history – Members can search past conversations to find answers.

  • Alerts and notifications – Get notified when someone replies to you or mentions you.

  • Integrations – Integrate with useful bots and tools like Github, Travis CI, and more.

We have 100+ helpful members who graciously donate their time to assist newcomers. If you ever get stuck developing an Actor, don‘t hesitate to join our Discord!

Key Takeaways

If you‘re managing a startup, keeping your content organized will only get harder as you grow. Primitive solutions like hard-coding content in HTML won‘t cut it for long.

Instead, empower teams to manage their own content using CMS tools purpose-built for different needs:

  • Blogging – Ghost offers an extendable platform tailored for blogs.

  • Website content – Strapi lets editors publish independently.

  • Documentation – GitHub provides version control and open sourcing.

  • Help articles – Intercom consolidates our knowledge base.

  • Careers – JazzHR enables end-to-end hiring management.

  • Community – Discord provides help from experienced users.

Evaluate your startup‘s needs, then find CMS solutions to match. There‘s no one-size-fits-all tool. As your needs change, be ready to adapt.

The key is flexibility. Enable each team to manage their domain of content without relying on crowded engineering resources. This will let your startup focus on growth rather than getting bogged down in CMS limitations.

I hope sharing our journey gave you some useful insights! Feel free to reach out if you have any other questions.

Join the conversation

Your email address will not be published. Required fields are marked *