An (r, δ)-locally repairable code ((r, δ)-LRC for short) was introduced by Prakash et al. [14] for tolerating multiple failed nodes in distributed storage systems, which was a generalization of the concept of r-LRCs produced by Gopalan et al. [5]. An (r, δ)-LRC is said to be optimal if it achieves the Singleton-like bound. Recently, Chen et al. [2] generalized the construction of cyclic r-LRCs proposed by Tamo et al. [19,20] and constructed several classes of optimal (r, δ)-LRCs of length n for n | (q − 1) or n | (q + 1), respectively in terms of a union of the set of zeros controlling the minimum distance and the set of zeros ensuring the locality. Following the work of [2,3], this paper first characterizes (r, δ)-locality of a cyclic code via its zeros. Then we construct several classes of optimal cyclic (r, δ)-LRCs of length n for n | (q − 1) or n | (q + 1), respectively from the product of two sets of zeros. Our constructions include all optimal cyclic (r, δ)-LRCs proposed in [2, 3], and our method seems more convenient to obtain optimal cyclic (r, δ)-LRCs with flexible parameters. Moreover, many optimal cyclic (r, δ)-LRCs of length n for n | (q − 1) or n | (q + 1), respectively such that (r + δ − 1) ∤ n can be obtained from our method.