大唐貞元年間,金吾衛陳雲樵(秦昊 飾演)家裡來了一隻會說話的黑貓,這隻妖貓會告訴人,那個地方能挖出多少銅錢來,不照牠的要求給人眼珠子吃,就會取走人性命。這隻妖貓在長安城內做亂,傷害官員,連皇帝也中了咒術發狂夜夜嚎叫。
日本僧人空海(染谷將太 飾)為了替皇帝解咒遠渡重洋而來,無奈趕到時,皇帝已斷氣。起居郎白樂天(黃軒 飾)跟隨空海追查妖貓在宮廷內留下的足跡,發現一塊牌子,寫著皇帝何時身亡,太子李誦不久也將病倒。
他們跟隨這隻能施幻術蠱惑人心,法力高強的妖貓,來到陳雲樵家,聽附身在陳妻身上,念出雲想衣裳花想容,春風拂檻露華濃,這是狂傲的李白為楊貴妃寫的詩。兩人破解牠製造出的異象,猜出妖貓作亂可能和楊貴妃有關,開始開始追查當年馬嵬坡兵變時,知情人士的後人,與他們交談過的人都遭妖貓毒手。
拜訪三十年前,從日本來的阿部仲麻呂,後改名為晁衡(阿部寬飾)的侍妾白玲,從她那裡拿到晁衡留下的日記,發現妖貓作祟和三十年前楊貴妃(張榕容 飾)的死有關,一個被歷史紛亂刻意掩蓋的真相。
馬嵬坡兵變時,楊貴妃真的死了嗎?為了能順利避禍,唐明皇哄騙妃子,以詐死掩人耳目,由道士在貴妃頭上扎了根針,讓她假死,事變平息後,再來救她。楊玉環在石棺裡醒來,推不動棺蓋十指都磨破了,又驚又怕的掙扎許久後死去。
在盛宴見過貴妃的少年白龍和丹龍,趕來開棺為時已晚,和晁衡一樣愛慕貴妃的白龍守候她三十年,並化作妖貓回到長安城幫她報仇。