   def to_fragment(post_lists) do
     case to_html(post_lists) do
       {:ok, htmls} ->
-        fragments =
+        [first | rest] =
           post_lists
           |> Stream.zip(htmls)
           |> Enum.map(fn {list, html} -> Fragment.new(:list, list, html) end)
 
-        {:ok, fragments}
+        first_dup = %Fragment{
+          first
+          | output: first.output |> Path.dirname() |> Path.join("index.html")
+        }
+
+        {:ok, [first_dup, first | rest]}
 
       {:error, _} = error ->
         error

    max_page = length(paginated_posts)
    list_dir = (tag && Path.join("tags", tag.name)) || "posts"

    [first | _] =
      lists =
      Enum.map(paginated_posts, fn {posts, page} ->
        %__MODULE__{
          tag: tag,
          page: page,
          max_page: max_page,
          title: list_title(tag, proj),
          posts: posts,
          list_url: Path.join([proj.base_url, list_dir, "page-#{page}.html"]),
          output: Path.join([proj.dest, list_dir, "page-#{page}.html"])
        }
      end)

    first_dup = %__MODULE__{
      first
      | list_url: rename_first_file(first.list_url),
        output: rename_first_file(first.output)
    }

    [first_dup | lists]
  end

  @spec make_chunks([Post.t()], boolean(), pos_integer()) :: [[Post.t()]]

    |> :io_lib.format([tag_name])
    |> IO.iodata_to_binary()
  end
end
