 
   Plugins can alter the processed contents and metadata here.
   """
-  @callback processed_post(post :: Post.t()) :: Result.t(Post.t())
+  defcallback processed_post(post :: Post.t()) :: Result.t(Post.t())
 
   @doc """
   Called after Serum has processed each input file and produced

  Floki). It is recommended to implement this callback if you want to modify
  the HTML document without worrying about breaking it.
  """
  @callback rendering_fragment(html :: Floki.html_tree(), metadata :: map()) ::
              Result.t(Floki.html_tree())

  @doc """
  Called after producing a HTML fragment for each page.

  Plugins can modify the contents and metadata of each fragment here.
  """
  @callback rendered_fragment(frag :: Fragment.t()) :: Result.t(Fragment.t())

  @doc """
  Called when Serum has rendered a full page and it's about to write to an

  Called right after the build process has started. Some necessary OTP
  applications or processes should be started here.
  """
  defcallback build_started(src :: binary(), dest :: binary()) :: Result.t()

  @doc """
  Called before reading input files.
