By formal proof I mean a finite sequence of strings in the language of ZFC that begins with a subset of the axioms of ZFC and ends with the sentence $\exists x.\forall y.(\forall z.\neg(z\in y)\iff (x=y))$, such that each string is either an axiom or a theorem provable from the axioms and inference rules of FOL - e.g. Hilbert proof, natural deduction, etc. [see edit]. Specifically, I am looking for a proof in the language of ZFC proper, without extending it by the constant symbol "$\emptyset$" (this is why I need to ask - the proof is trivial, otherwise).
I've looked through a couple of repositories for theorem provers, but even these seem to rely on introducing a new symbol to express the empty set.
I assume that the proof exists somewhere, probably in some dusty preprint from 1913, but I haven't been able to find it yet.
Note/Response to comments: I do not doubt the uniqueness of the empty set, nor am I asking for an explanation of the intuition behind a proof of the uniqueness of the empty set. I understand that the axiom of extensionality implies the uniqueness of the empty set. This question is strictly about the formal proof of uniqueness - i.e. which inference rules and axioms must be used and in what order to conclude the uniqueness of the empty set - specifically in the language whose only non-logical symbol is $\in$. To be absolutely, 200% clear, this will, at some point, be read by a machine. Said machine is only intended to recognize the following symbols: $\forall,\exists,\land,\lor,\neg,\implies,\iff,=,(,),.,',\in, x$, and nothing else.
Now, I could brute-force it by systematically applying every inference rule to every axiom, adding the result to the set of axioms and repeating until I get the desired theorem, but 1) that could take days of nonstop running and 2) I really don't want to do that, especially if someone else already did it 100 years ago.
Edit: As it turns out, natural deduction systems [particularly Fitch-style?] and their kin have something that Hilbert systems do not: the ability to introduce new variables through existential instantiation, like so...
$$\dfrac{\exists x.\phi}{\phi(\alpha/ x)}\exists E$$
...provided that $\alpha$ does not occur free in any previous lines.
According to this, these are known as Skolem terms, and they act as "virtual" constants in a proof. This would be used, for instance, in the formalization of the proof sketch in Alex Kruckman's answer (i.e. "let $x$ be such a set"). While these terms cannot appear in the conclusion of a proof, they can appear in premises or "subproofs." This violates the condition that every sentence of the proof be either an axiom or a theorem. Despite its being fundamental to mathematical logic, I was not aware of this detail until yesterday (it wasn't especially relevant until a few days ago).